Class: FlickrParty

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/flickr_party.rb,
lib/flickr_party/photo.rb,
lib/flickr_party/parser.rb,
lib/flickr_party/methods.rb

Defined Under Namespace

Classes: FlickrParser, Photo, PhotoURLError, UnknownMethodNameError

Constant Summary collapse

ENDPOINT =
'http://api.flickr.com/services/rest/'
METHODS =
%w(
  flickr.activity.userComments
  flickr.activity.userPhotos
  flickr.auth.checkToken
  flickr.auth.getFrob
  flickr.auth.getFullToken
  flickr.auth.getToken
  flickr.auth.oauth.checkToken
  flickr.auth.oauth.getAccessToken
  flickr.blogs.getList
  flickr.blogs.getServices
  flickr.blogs.postPhoto
  flickr.cameras.getBrandModels
  flickr.cameras.getBrands
  flickr.collections.getInfo
  flickr.collections.getTree
  flickr.commons.getInstitutions
  flickr.contacts.getList
  flickr.contacts.getListRecentlyUploaded
  flickr.contacts.getPublicList
  flickr.contacts.getTaggingSuggestions
  flickr.favorites.add
  flickr.favorites.getContext
  flickr.favorites.getList
  flickr.favorites.getPublicList
  flickr.favorites.remove
  flickr.galleries.addPhoto
  flickr.galleries.create
  flickr.galleries.editMeta
  flickr.galleries.editPhoto
  flickr.galleries.editPhotos
  flickr.galleries.getInfo
  flickr.galleries.getList
  flickr.galleries.getListForPhoto
  flickr.galleries.getPhotos
  flickr.groups.browse
  flickr.groups.getInfo
  flickr.groups.join
  flickr.groups.joinRequest
  flickr.groups.leave
  flickr.groups.search
  flickr.groups.discuss.replies.add
  flickr.groups.discuss.replies.delete
  flickr.groups.discuss.replies.edit
  flickr.groups.discuss.replies.getInfo
  flickr.groups.discuss.replies.getList
  flickr.groups.discuss.topics.add
  flickr.groups.discuss.topics.getInfo
  flickr.groups.discuss.topics.getList
  flickr.groups.members.getList
  flickr.groups.pools.add
  flickr.groups.pools.getContext
  flickr.groups.pools.getGroups
  flickr.groups.pools.getPhotos
  flickr.groups.pools.remove
  flickr.interestingness.getList
  flickr.machinetags.getNamespaces
  flickr.machinetags.getPairs
  flickr.machinetags.getPredicates
  flickr.machinetags.getRecentValues
  flickr.machinetags.getValues
  flickr.panda.getList
  flickr.panda.getPhotos
  flickr.people.findByEmail
  flickr.people.findByUsername
  flickr.people.getGroups
  flickr.people.getInfo
  flickr.people.getLimits
  flickr.people.getPhotos
  flickr.people.getPhotosOf
  flickr.people.getPublicGroups
  flickr.people.getPublicPhotos
  flickr.people.getUploadStatus
  flickr.photos.addTags
  flickr.photos.delete
  flickr.photos.getAllContexts
  flickr.photos.getContactsPhotos
  flickr.photos.getContactsPublicPhotos
  flickr.photos.getContext
  flickr.photos.getCounts
  flickr.photos.getExif
  flickr.photos.getFavorites
  flickr.photos.getInfo
  flickr.photos.getNotInSet
  flickr.photos.getPerms
  flickr.photos.getRecent
  flickr.photos.getSizes
  flickr.photos.getUntagged
  flickr.photos.getWithGeoData
  flickr.photos.getWithoutGeoData
  flickr.photos.recentlyUpdated
  flickr.photos.removeTag
  flickr.photos.search
  flickr.photos.setContentType
  flickr.photos.setDates
  flickr.photos.setMeta
  flickr.photos.setPerms
  flickr.photos.setSafetyLevel
  flickr.photos.setTags
  flickr.photos.comments.addComment
  flickr.photos.comments.deleteComment
  flickr.photos.comments.editComment
  flickr.photos.comments.getList
  flickr.photos.comments.getRecentForContacts
  flickr.photos.geo.batchCorrectLocation
  flickr.photos.geo.correctLocation
  flickr.photos.geo.getLocation
  flickr.photos.geo.getPerms
  flickr.photos.geo.photosForLocation
  flickr.photos.geo.removeLocation
  flickr.photos.geo.setContext
  flickr.photos.geo.setLocation
  flickr.photos.geo.setPerms
  flickr.photos.licenses.getInfo
  flickr.photos.licenses.setLicense
  flickr.photos.notes.add
  flickr.photos.notes.delete
  flickr.photos.notes.edit
  flickr.photos.people.add
  flickr.photos.people.delete
  flickr.photos.people.deleteCoords
  flickr.photos.people.editCoords
  flickr.photos.people.getList
  flickr.photos.suggestions.approveSuggestion
  flickr.photos.suggestions.getList
  flickr.photos.suggestions.rejectSuggestion
  flickr.photos.suggestions.removeSuggestion
  flickr.photos.suggestions.suggestLocation
  flickr.photos.transform.rotate
  flickr.photos.upload.checkTickets
  flickr.photosets.addPhoto
  flickr.photosets.create
  flickr.photosets.delete
  flickr.photosets.editMeta
  flickr.photosets.editPhotos
  flickr.photosets.getContext
  flickr.photosets.getInfo
  flickr.photosets.getList
  flickr.photosets.getPhotos
  flickr.photosets.orderSets
  flickr.photosets.removePhoto
  flickr.photosets.removePhotos
  flickr.photosets.reorderPhotos
  flickr.photosets.setPrimaryPhoto
  flickr.photosets.comments.addComment
  flickr.photosets.comments.deleteComment
  flickr.photosets.comments.editComment
  flickr.photosets.comments.getList
  flickr.places.find
  flickr.places.findByLatLon
  flickr.places.getChildrenWithPhotosPublic
  flickr.places.getInfo
  flickr.places.getInfoByUrl
  flickr.places.getPlaceTypes
  flickr.places.getShapeHistory
  flickr.places.getTopPlacesList
  flickr.places.placesForBoundingBox
  flickr.places.placesForContacts
  flickr.places.placesForTags
  flickr.places.placesForUser
  flickr.places.resolvePlaceId
  flickr.places.resolvePlaceURL
  flickr.places.tagsForPlace
  flickr.prefs.getContentType
  flickr.prefs.getGeoPerms
  flickr.prefs.getHidden
  flickr.prefs.getPrivacy
  flickr.prefs.getSafetyLevel
  flickr.push.getSubscriptions
  flickr.push.getTopics
  flickr.push.subscribe
  flickr.push.unsubscribe
  flickr.reflection.getMethodInfo
  flickr.reflection.getMethods
  flickr.stats.getCollectionDomains
  flickr.stats.getCollectionReferrers
  flickr.stats.getCollectionStats
  flickr.stats.getCSVFiles
  flickr.stats.getPhotoDomains
  flickr.stats.getPhotoReferrers
  flickr.stats.getPhotosetDomains
  flickr.stats.getPhotosetReferrers
  flickr.stats.getPhotosetStats
  flickr.stats.getPhotoStats
  flickr.stats.getPhotostreamDomains
  flickr.stats.getPhotostreamReferrers
  flickr.stats.getPhotostreamStats
  flickr.stats.getPopularPhotos
  flickr.stats.getTotalViews
  flickr.tags.getClusterPhotos
  flickr.tags.getClusters
  flickr.tags.getHotList
  flickr.tags.getListPhoto
  flickr.tags.getListUser
  flickr.tags.getListUserPopular
  flickr.tags.getListUserRaw
  flickr.tags.getMostFrequentlyUsed
  flickr.tags.getRelated
  flickr.test.echo
  flickr.test.login
  flickr.test.null
  flickr.urls.getGroup
  flickr.urls.getUserPhotos
  flickr.urls.getUserProfile
  flickr.urls.lookupGallery
  flickr.urls.lookupGroup
  flickr.urls.lookupUser
)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key, secret, method = nil, token = nil) ⇒ FlickrParty

Returns a new instance of FlickrParty.



22
23
24
25
26
27
# File 'lib/flickr_party.rb', line 22

def initialize(api_key, secret, method=nil, token=nil)
  @api_key = api_key
  @secret = secret
  @method = method
  @token = token
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_part, args = {}, test = nil) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/flickr_party.rb', line 29

def method_missing(method_part, args={}, test=nil)
  full_method_name = concat_method(method_part)
  if is_full_method?(full_method_name)
    args = merge_args(args, full_method_name)
    post(args)
  else
    # not an API call -- return a chainable object
    self.class.new(@api_key, @secret, full_method_name, @token)
  end
end

Instance Attribute Details

#tokenObject

Returns the value of attribute token.



20
21
22
# File 'lib/flickr_party.rb', line 20

def token
  @token
end

Instance Method Details

#auth_url(perms = 'read', extra = nil) ⇒ Object



40
41
42
43
44
# File 'lib/flickr_party.rb', line 40

def auth_url(perms='read', extra = nil)
  @frob = self.flickr.auth.getFrob['frob']
  sig = Digest::MD5.hexdigest("#{@secret}api_key#{@api_key}extra#{extra}frob#{@frob}perms#{perms}")
  "http://flickr.com/services/auth/?api_key=#{@api_key}&perms=#{perms}&frob=#{@frob}&api_sig=#{sig}&extra=#{extra}"
end

#complete_auth(frob = 'put_your_frob_here') ⇒ Object



46
47
48
49
50
# File 'lib/flickr_party.rb', line 46

def complete_auth(frob='put_your_frob_here')
  @frob ||= frob
  @auth = self.flickr.auth.getToken('frob' => @frob)['auth']
  @token = @auth['token']
end

#concat_method(method_part) ⇒ Object



11
12
13
# File 'lib/flickr_party/methods.rb', line 11

def concat_method(method_part)
  [@method, method_part].compact.join('.')
end

#is_full_method?(method_name) ⇒ Boolean

Returns:

  • (Boolean)


3
4
5
6
7
8
9
# File 'lib/flickr_party/methods.rb', line 3

def is_full_method?(method_name)
  if method_name.count('.') > 5
    raise UnknownMethodNameError.new
  else
    METHODS.include? method_name
  end
end