function (tagArgs, returnImgAttr) {
  if (!APIKey) {
    throw new Error('flickr_api_key configuration is required');
  }

  var tag = tagUtil.convertAttr(tagArgs);

  
    return new Promise(function (resolve, reject) {
      
      
       
      var flJson = getFlickrCacheJson(tag.id);
      
      
      if(!flJson || !flJson.photo.imgSize){
        // console.log("[api access getSize]photoId= " + tag.id);
        var url = 'https://api.flickr.com/services/rest/?method=flickr.photos.getSizes' +
          '&api_key=' + APIKey +
          '&photo_id=' + tag.id +
          '&format=json' +
          '&nojsoncallback=1';

        https.get(url, function (res) {
          var data = '';

          res.on('data', function (chunk) {
            data += chunk;
          });

          res.on('end', function () {
            var json = JSON.parse(data);
            
            if (json.stat === 'ok') {
                
                var imgSize = getImageSize( json, tag.id, tag.size );
                pushImageSizeAndExpress_flickrJson(imgSize, tag.id);
                
                resolve( addTagHeight( returnImgAttr , imgSize) );
                
            } else {
              return reject('Flickr Tag Error: ' + tag.id + ' ' +  json.message);
            }
          });

        }).on('error', function (e) {
          return reject('Fetch Flickr API error: ' + e);
        });
        
      }else{
        // console.log("[cache getSize]photoId= " + tag.id);
        return resolve( addTagHeight(  tagUtil.imgFormat(tag, flJson) , flJson.photo.imgSize ));
      }
      
    });
  
}
function (tagArgs, returnImgAttr) {
  if (!APIKey) {
    throw new Error('flickr_api_key configuration is required');
  }

  var tag = tagUtil.convertAttr(tagArgs);

  
    return new Promise(function (resolve, reject) {
      
      
       
      var flJson = getFlickrCacheJson(tag.id);
      
      
      if(!flJson || !flJson.photo.imgSize){
        
        var url = 'https:
          '&api_key=' + APIKey +
          '&photo_id=' + tag.id +
          '&format=json' +
          '&nojsoncallback=1';

        https.get(url, function (res) {
          var data = '';

          res.on('data', function (chunk) {
            data += chunk;
          });

          res.on('end', function () {
            var json = JSON.parse(data);
            
            if (json.stat === 'ok') {
                
                var imgSize = getImageSize( json, tag.id, tag.size );
                pushImageSizeAndExpress_flickrJson(imgSize, tag.id);
                
                resolve( addTagHeight( returnImgAttr , imgSize) );
                
            } else {
              return reject('Flickr Tag Error: ' + tag.id + ' ' +  json.message);
            }
          });

        }).on('error', function (e) {
          return reject('Fetch Flickr API error: ' + e);
        });
        
      }else{
        
        return resolve( addTagHeight(  tagUtil.imgFormat(tag, flJson) , flJson.photo.imgSize ));
      }
      
    });
  
}
function ( tagArgs , returnImgAttr ) { if ( ! APIKey ) { throw new Error ( 'flickr_api_key configuration is required' ) ; } var tag = tagUtil . convertAttr ( tagArgs ) ; return new Promise ( function ( resolve , reject ) { var flJson = getFlickrCacheJson ( tag . id ) ; if ( ! flJson || ! flJson . photo . imgSize ) { // console.log("[api access getSize]photoId= " + tag.id); var url = 'https://api.flickr.com/services/rest/?method=flickr.photos.getSizes' + '&api_key=' + APIKey + '&photo_id=' + tag . id + '&format=json' + '&nojsoncallback=1' ; https . get ( url , function ( res ) { var data = '' ; res . on ( 'data' , function ( chunk ) { data += chunk ; } ) ; res . on ( 'end' , function ( ) { var json = JSON . parse ( data ) ; if ( json . stat === 'ok' ) { var imgSize = getImageSize ( json , tag . id , tag . size ) ; pushImageSizeAndExpress_flickrJson ( imgSize , tag . id ) ; resolve ( addTagHeight ( returnImgAttr , imgSize ) ) ; } else { return reject ( 'Flickr Tag Error: ' + tag . id + ' ' + json . message ) ; } } ) ; } ) . on ( 'error' , function ( e ) { return reject ( 'Fetch Flickr API error: ' + e ) ; } ) ; } else { // console.log("[cache getSize]photoId= " + tag.id); return resolve ( addTagHeight ( tagUtil . imgFormat ( tag , flJson ) , flJson . photo . imgSize ) ) ; } } ) ; }
promise Flickr API request
@param  {Array} tagArgs Tag args ex: ['15905712665', 'z']
@resolve {Object} image attrs
promise Flickr API request