Class: Flickr::User

Inherits:
Object
  • Object
show all
Defined in:
lib/flickr.rb

Overview

Todo: logged_in? if logged in: flickr.blogs.getList flickr.favorites.add flickr.favorites.remove flickr.groups.browse flickr.photos.getCounts flickr.photos.getNotInSet flickr.photos.getUntagged flickr.photosets.create flickr.photosets.orderSets flickr.test.login uploading

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (User) initialize(id_or_params_hash = nil, username = nil, email = nil, password = nil, api_key = {})

A Flickr::User can be instantiated in two ways. The old (deprecated) method is with an ordered series of values. The new method is with a params Hash, which is easier when a variable number of params are supplied, which is the case here, and also avoids having to constantly supply nil values for the email and password, which are now irrelevant as authentication is no longer done this way. An associated flickr client will also be generated if an api key is passed among the arguments or in the params hash. Alternatively, and most likely, an existing client object may be passed in the params hash (e.g. 'client' => some_existing_flickr_client_object), and this is what happends when users are initlialized as the result of a method called on the flickr client (e.g. flickr.users)



310
311
312
313
314
315
316
317
318
319
320
321
# File 'lib/flickr.rb', line 310

def initialize(id_or_params_hash=nil, username=nil, email=nil, password=nil, api_key={})
  if id_or_params_hash.is_a?(Hash)
    id_or_params_hash.each { |k,v| self.instance_variable_set("@#{k}", v) } # convert extra_params into instance variables
  else
    @id = id_or_params_hash
    @username = username
    @email = email
    @password = password
    @api_key = api_key
  end
  @client ||= Flickr.new(:api_key => @api_key, :shared_secret => @shared_secret, :auth_token => @auth_token) if @api_key
end

Instance Attribute Details

- (Object) client (readonly)

Returns the value of attribute client



296
297
298
# File 'lib/flickr.rb', line 296

def client
  @client
end

- (Object) count (readonly)

Returns the value of attribute count



296
297
298
# File 'lib/flickr.rb', line 296

def count
  @count
end

- (Object) firstdate (readonly)

Returns the value of attribute firstdate



296
297
298
# File 'lib/flickr.rb', line 296

def firstdate
  @firstdate
end

- (Object) firstdatetaken (readonly)

Returns the value of attribute firstdatetaken



296
297
298
# File 'lib/flickr.rb', line 296

def firstdatetaken
  @firstdatetaken
end

- (Object) id (readonly)

Returns the value of attribute id



296
297
298
# File 'lib/flickr.rb', line 296

def id
  @id
end

- (Object) location (readonly)

Returns the value of attribute location



296
297
298
# File 'lib/flickr.rb', line 296

def location
  @location
end

- (Object) name (readonly)

Returns the value of attribute name



296
297
298
# File 'lib/flickr.rb', line 296

def name
  @name
end

- (Object) photos_url (readonly)

Builds url for user's photos page as per www.flickr.com/services/api/misc.urls.html



344
345
346
# File 'lib/flickr.rb', line 344

def photos_url
  @photos_url
end

- (Object) url (readonly)

Builds url for user's profile page as per www.flickr.com/services/api/misc.urls.html



350
351
352
# File 'lib/flickr.rb', line 350

def url
  @url
end

Instance Method Details

- (Object) contacts

Implements flickr.contacts.getPublicList and flickr.contacts.getList



382
383
384
385
# File 'lib/flickr.rb', line 382

def contacts
  @client.contacts_getPublicList('user_id'=>@id)['contacts']['contact'].collect { |contact| User.new(contact['nsid'], contact['username'], nil, nil, @api_key) }
  #or
end

- (Object) contactsPhotos

Implements flickr.photos.getContactsPublicPhotos and flickr.photos.getContactsPhotos



408
409
410
# File 'lib/flickr.rb', line 408

def contactsPhotos
  @client.photos_request('photos.getContactsPublicPhotos', 'user_id' => @id)
end

- (Object) favorites

Implements flickr.favorites.getPublicList



388
389
390
# File 'lib/flickr.rb', line 388

def favorites
  @client.photos_request('favorites.getPublicList', 'user_id' => @id)
end

- (Object) groups

Implements flickr.people.getPublicGroups



359
360
361
362
363
364
365
366
# File 'lib/flickr.rb', line 359

def groups
  collection = @client.people_getPublicGroups('user_id'=>@id)['groups']['group']
  collection = [collection] if collection.is_a? Hash
  collection.collect { |group| Group.new( "id" => group['nsid'],
                                       "name" => group['name'],
                                       "eighteenplus" => group['eighteenplus'],
                                       "client" => @client) }
end

- (Object) photos(options = {})

Implements flickr.people.getPublicPhotos. Options hash allows you to add extra restrictions as per flickr.people.getPublicPhotos docs, e.g. user.photos('per_page' => '25', 'extras' => 'date_taken')



371
372
373
374
# File 'lib/flickr.rb', line 371

def photos(options={})
  @client.photos_request('people.getPublicPhotos', {'user_id' => @id}.merge(options))
  # what about non-public photos?
end

- (Object) photosets

Implements flickr.photosets.getList



393
394
395
# File 'lib/flickr.rb', line 393

def photosets
  @client.photosets_getList('user_id'=>@id)['photosets']['photoset'].collect { |photoset| Photoset.new(photoset['id'], @api_key) }
end

Implements flickr.tags.getListUserPopular



403
404
405
# File 'lib/flickr.rb', line 403

def popular_tags(count = 10)
	@client.tags_getListUserPopular('user_id'=>@id, 'count'=> count)['who']['tags']['tag'].each { |tag_score| tag_score["tag"] = tag_score.delete("content") }
end

- (Object) pretty_url



354
355
356
# File 'lib/flickr.rb', line 354

def pretty_url
  @pretty_url ||= @client.urls_getUserProfile('user_id'=>@id)['user']['url']
end

- (Object) tag(tag)

Gets photos with a given tag



377
378
379
# File 'lib/flickr.rb', line 377

def tag(tag)
  @client.photos('user_id'=>@id, 'tags'=>tag)
end

- (Object) tags

Implements flickr.tags.getListUser



398
399
400
# File 'lib/flickr.rb', line 398

def tags
  @client.tags_getListUser('user_id'=>@id)['who']['tags']['tag'].collect { |tag| tag }
end

- (Object) to_s



412
413
414
# File 'lib/flickr.rb', line 412

def to_s
  @name
end

- (Object) username



323
324
325
# File 'lib/flickr.rb', line 323

def username
  @username.nil? ? getInfo.username : @username
end