digitalpardoe-rflickr 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/{README.rdoc → README.markdown} +5 -9
- data/Rakefile +40 -33
- data/VERSION.yml +1 -1
- data/lib/flickr/auth.rb +5 -7
- data/lib/flickr/base.rb +55 -57
- data/lib/flickr/contacts.rb +4 -4
- data/lib/flickr/groups.rb +2 -2
- data/lib/flickr/interestingness.rb +2 -2
- data/lib/flickr/licenses.rb +1 -1
- data/lib/flickr/people.rb +4 -4
- data/lib/flickr/photos.rb +33 -33
- data/lib/flickr/photosets.rb +4 -4
- data/lib/flickr/pools.rb +2 -2
- data/lib/flickr/reflection.rb +4 -4
- data/lib/flickr/tags.rb +2 -2
- data/lib/flickr/upload.rb +25 -25
- data/lib/flickr/urls.rb +4 -4
- data/test/test_suite.rb +3 -0
- metadata +22 -12
- data/spec/rflickr_spec.rb +0 -7
- data/spec/spec_helper.rb +0 -9
data/.gitignore
ADDED
@@ -1,28 +1,24 @@
|
|
1
|
-
|
1
|
+
# rFlickr
|
2
2
|
|
3
3
|
To use this version of rFlickr, first you will need to install
|
4
4
|
the RubyGem you can do by (from a command line):
|
5
5
|
|
6
|
-
$ gem sources -a http://gems.github.com (you only have to do this once)
|
7
|
-
$ sudo gem install digitalpardoe-rflickr
|
6
|
+
$ gem sources -a http://gems.github.com (you only have to do this once)
|
7
|
+
$ sudo gem install digitalpardoe-rflickr
|
8
8
|
|
9
9
|
Then you'll need to get a Flickr API key as detailed here:
|
10
10
|
|
11
|
-
http://www.flickr.com/services/api/misc.api_keys.html
|
11
|
+
[http://www.flickr.com/services/api/misc.api_keys.html](http://www.flickr.com/services/api/misc.api_keys.html)
|
12
12
|
|
13
13
|
You'll need to authorize your application's API key from each
|
14
14
|
Flickr user account which wants to use it.
|
15
15
|
|
16
16
|
A short guide to get you started can be found here:
|
17
17
|
|
18
|
-
http://digitalpardoe.co.uk/blog/show/87
|
18
|
+
[http://digitalpardoe.co.uk/blog/show/87](http://digitalpardoe.co.uk/blog/show/87)
|
19
19
|
|
20
20
|
The guide is a little out of date in it's gem installation technique,
|
21
21
|
use the instructions above instead.
|
22
22
|
|
23
23
|
This project is still a work in progress, bear with me whilst it is
|
24
24
|
set up.
|
25
|
-
|
26
|
-
== Copyright
|
27
|
-
|
28
|
-
Copyright (c) 2009 Alex Pardoe. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -2,48 +2,55 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
|
4
4
|
begin
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "digitalpardoe-rflickr"
|
8
|
+
gem.summary = "rFlickr is a Ruby interface to the Flickr API"
|
9
|
+
gem.email = "contact@digitalpardoe.co.uk"
|
10
|
+
gem.homepage = "http://github.com/digitalpardoe/rflickr"
|
11
|
+
gem.authors = ["digital:pardoe"]
|
12
|
+
gem.description = "rFlickr is a clone of the original RubyForge based rflickr, a Ruby implementation of the Flickr API. It includes a faithful albeit old reproduction of the published API."
|
13
|
+
gem.add_dependency('mime-types')
|
14
|
+
end
|
16
15
|
rescue LoadError
|
17
|
-
|
16
|
+
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
18
17
|
end
|
19
18
|
|
20
|
-
require '
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
require 'rake/testtask'
|
20
|
+
Rake::TestTask.new(:test) do |test|
|
21
|
+
test.libs << 'lib' << 'test'
|
22
|
+
test.pattern = 'test/**/*_test.rb'
|
23
|
+
test.verbose = true
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
begin
|
27
|
+
require 'rcov/rcovtask'
|
28
|
+
Rcov::RcovTask.new do |test|
|
29
|
+
test.libs << 'test'
|
30
|
+
test.pattern = 'test/**/*_test.rb'
|
31
|
+
test.verbose = true
|
32
|
+
end
|
33
|
+
rescue LoadError
|
34
|
+
task :rcov do
|
35
|
+
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
36
|
+
end
|
30
37
|
end
|
31
38
|
|
32
|
-
|
33
|
-
task :default => :spec
|
39
|
+
task :default => :test
|
34
40
|
|
35
41
|
require 'rake/rdoctask'
|
36
42
|
Rake::RDocTask.new do |rdoc|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
43
|
+
if File.exist?('VERSION.yml')
|
44
|
+
config = YAML.load(File.read('VERSION.yml'))
|
45
|
+
version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
|
46
|
+
else
|
47
|
+
version = ""
|
48
|
+
end
|
49
|
+
|
50
|
+
rdoc.rdoc_dir = 'rdoc'
|
51
|
+
rdoc.title = "rflickr #{version}"
|
52
|
+
rdoc.rdoc_files.include('README*')
|
53
|
+
rdoc.rdoc_files.include('LICENSE*')
|
54
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
48
55
|
end
|
49
56
|
|
data/VERSION.yml
CHANGED
data/lib/flickr/auth.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
1
|
# rFlickr: A Ruby based Flickr API implementation.
|
4
2
|
# Copyright (C) 2009, Alex Pardoe (digital:pardoe)
|
5
3
|
#
|
@@ -45,7 +43,7 @@ class Flickr::Auth < Flickr::APIBase
|
|
45
43
|
args['frob'] = self.frob
|
46
44
|
args['api_sig'] = @flickr.sign(args)
|
47
45
|
return "http://flickr.com/services/auth/?"+
|
48
|
-
|
46
|
+
args.to_a.map{|arr| arr.join('=')}.join('&')
|
49
47
|
end
|
50
48
|
|
51
49
|
def frob=(frob) @frob = frob end
|
@@ -63,20 +61,20 @@ class Flickr::Auth < Flickr::APIBase
|
|
63
61
|
#
|
64
62
|
# Backwwards compatible with old token storage.
|
65
63
|
@token = token.include?('<') ?
|
66
|
-
|
67
|
-
|
64
|
+
Flickr::Token.from_xml(REXML::Document.new(token)) :
|
65
|
+
@token = checkToken(token)
|
68
66
|
end
|
69
67
|
|
70
68
|
def getToken(frob=nil)
|
71
69
|
frob ||= @frob
|
72
70
|
res=@flickr.call_unauth_method('flickr.auth.getToken',
|
73
|
-
|
71
|
+
'frob'=>frob)
|
74
72
|
@token = Flickr::Token.from_xml(res)
|
75
73
|
end
|
76
74
|
|
77
75
|
def getFullToken(mini_token)
|
78
76
|
res = flickr.call_unauth_method('flickr.auth.getFullToken',
|
79
|
-
|
77
|
+
'mini_token' => mini_token)
|
80
78
|
@token = Flickr::Token.from_xml(res)
|
81
79
|
end
|
82
80
|
|
data/lib/flickr/base.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
1
|
# rFlickr: A Ruby based Flickr API implementation.
|
4
2
|
# Copyright (C) 2009, Alex Pardoe (digital:pardoe)
|
5
3
|
#
|
@@ -36,7 +34,7 @@ class Flickr
|
|
36
34
|
attr_reader :api_key
|
37
35
|
attr_accessor :async, :debug, :caching, :auth_mode
|
38
36
|
|
39
|
-
############################### CACHE ACCESSORS ###########################
|
37
|
+
############################### CACHE ACCESSORS ###########################
|
40
38
|
def ticket_cache_lookup(id) @ticket_by_id[id] if @caching end
|
41
39
|
|
42
40
|
def ticket_cache_store(ticket)
|
@@ -82,23 +80,23 @@ class Flickr
|
|
82
80
|
def group_cache_store(group)
|
83
81
|
@group_by_id[group.id] = group if @caching
|
84
82
|
end
|
85
|
-
############################################################################
|
83
|
+
############################################################################
|
86
84
|
|
87
85
|
def debug(*args) $stderr.puts(sprintf(*args)) if @debug end
|
88
86
|
|
89
87
|
def Flickr.todo
|
90
88
|
[
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
89
|
+
'Refactor, especially more Class.from_xml methods',
|
90
|
+
'More logical OO design, wrap the API methods to make transparent',
|
91
|
+
'Class & method documentation',
|
92
|
+
'Unit tests',
|
93
|
+
'Implement missing methods (see flickr.reflection.missing_methods)'
|
96
94
|
]
|
97
95
|
end
|
96
|
+
|
98
97
|
def todo()
|
99
98
|
Flickr.todo+reflection.missing_methods.map{|m| 'Implement '+m}
|
100
99
|
end
|
101
|
-
|
102
100
|
|
103
101
|
def initialize(token_cache=nil,api_key=API_KEY,
|
104
102
|
shared_secret=SHARED_SECRET,
|
@@ -112,7 +110,7 @@ class Flickr
|
|
112
110
|
@endpoint=endpoint
|
113
111
|
proto,host,port,path,user,pass=parse_url(@endpoint)
|
114
112
|
raise ProtoUnknownError.new("Unhandled protocol '#{proto}'") if
|
115
|
-
|
113
|
+
proto.downcase != 'http'
|
116
114
|
@client=XMLRPC::Client.new(host,path,port)
|
117
115
|
clear_cache
|
118
116
|
end
|
@@ -155,7 +153,7 @@ class Flickr
|
|
155
153
|
|
156
154
|
def call_method(method,args={})
|
157
155
|
@auth_mode ? call_auth_method(method,args) :
|
158
|
-
|
156
|
+
call_unauth_method(method,args)
|
159
157
|
end
|
160
158
|
|
161
159
|
def call_unauth_method(method,args={})
|
@@ -168,7 +166,7 @@ class Flickr
|
|
168
166
|
begin
|
169
167
|
tries -= 1;
|
170
168
|
str = @async ? @client.call_async(method,args) :
|
171
|
-
|
169
|
+
@client.call(method,args)
|
172
170
|
debug('RETURN: %s',str)
|
173
171
|
return REXML::Document.new(str)
|
174
172
|
rescue Timeout::Error => te
|
@@ -180,7 +178,7 @@ class Flickr
|
|
180
178
|
end
|
181
179
|
rescue REXML::ParseException => pe
|
182
180
|
return REXML::Document.new('<rsp>'+str+'</rsp>').
|
183
|
-
|
181
|
+
elements['/rsp']
|
184
182
|
rescue XMLRPC::FaultException => fe
|
185
183
|
$stderr.puts "ERR: #{fe.faultString} (#{fe.faultCode})"
|
186
184
|
raise fe
|
@@ -251,11 +249,11 @@ class Flickr::Token
|
|
251
249
|
end
|
252
250
|
|
253
251
|
def to_xml
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
252
|
+
return "<auth><token>#{self.token}</token>"+
|
253
|
+
"<perms>#{self.perms}</perms>"+
|
254
|
+
"<user nsid=\"#{self.user.nsid}\" "+
|
255
|
+
"username=\"#{self.user.username}\" "+
|
256
|
+
"fullname=\"#{self.user.realname}\" /></auth>"
|
259
257
|
end
|
260
258
|
end
|
261
259
|
|
@@ -272,10 +270,10 @@ end
|
|
272
270
|
|
273
271
|
class Flickr::Person
|
274
272
|
attr_accessor :nsid, :username, :realname, :mbox_sha1sum, :location,
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
273
|
+
:photosurl, :profileurl, :photos_firstdate, :photos_firstdatetaken,
|
274
|
+
:photos_count, :info_fetched, :isadmin, :ispro, :iconserver,
|
275
|
+
:bandwidth_max, :bandwidth_used, :filesize_max, :upload_fetched,
|
276
|
+
:friend, :family, :ignored
|
279
277
|
|
280
278
|
def initialize(flickr, nsid, username)
|
281
279
|
@flickr = flickr
|
@@ -307,11 +305,11 @@ class Flickr::Person
|
|
307
305
|
|
308
306
|
p.username = username
|
309
307
|
p.isadmin = cond_attr(att,'isadmin') &&
|
310
|
-
|
308
|
+
cond_attr(att,'isadmin') == '1'
|
311
309
|
p.ispro = cond_attr(att,'ispro') &&
|
312
|
-
|
310
|
+
cond_attr(att,'ispro') == '1'
|
313
311
|
p.iconserver = cond_attr(att,'iconserver') &&
|
314
|
-
|
312
|
+
cond_attr(att,'iconserver').to_i
|
315
313
|
p.realname = cond_text(els,'/person/realname')
|
316
314
|
p.mbox_sha1sum = cond_text(els,'/person/mbox_sha1sum')
|
317
315
|
p.location = cond_text(els,'/person/location')
|
@@ -321,7 +319,7 @@ class Flickr::Person
|
|
321
319
|
p.photos_firstdate = Time.at(tstr.to_i) if tstr
|
322
320
|
tstr = cond_text(els, '/person/photos/firstdatetaken')
|
323
321
|
p.photos_firstdatetaken = Time.gm(*ParseDate.parsedate(tstr)) if
|
324
|
-
|
322
|
+
tstr
|
325
323
|
p.photos_count = cond_text(els,'/person/photos/count')
|
326
324
|
p.photos_count = p.photos_count if p.photos_count
|
327
325
|
|
@@ -330,14 +328,14 @@ class Flickr::Person
|
|
330
328
|
if els['/user/bandwidth']
|
331
329
|
att = els['/user/bandwidth'].attributes
|
332
330
|
p.bandwidth_max = cond_attr(att,'max') &&
|
333
|
-
|
331
|
+
cond_attr(att,'max').to_i
|
334
332
|
p.bandwidth_used = cond_attr(att,'used') &&
|
335
|
-
|
333
|
+
cond_attr(att,'used').to_i
|
336
334
|
end
|
337
335
|
if els['/user/filesize']
|
338
336
|
att = els['/user/filesize'].attributes
|
339
337
|
p.filesize_max = cond_attr(att,'max') &&
|
340
|
-
|
338
|
+
cond_attr(att,'max').to_i
|
341
339
|
end
|
342
340
|
|
343
341
|
p.upload_fetched = true if p.bandwidth_max
|
@@ -374,11 +372,11 @@ end
|
|
374
372
|
|
375
373
|
class Flickr::Photo
|
376
374
|
attr_accessor :id, :owner_id, :secret, :server, :title, :ispublic,
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
375
|
+
:isfriend, :isfamily, :ownername, :dateadded,
|
376
|
+
:license_id, :description, :dates, :taken,
|
377
|
+
:lastupdate, :takengranularity, :cancomment, :canaddmeta,
|
378
|
+
:comments, :rotation, :notes, :urls, :permaddmeta,
|
379
|
+
:permcomment, :originalformat, :farm
|
382
380
|
|
383
381
|
attr_reader :flickr
|
384
382
|
|
@@ -388,7 +386,7 @@ class Flickr::Photo
|
|
388
386
|
|
389
387
|
def max_size
|
390
388
|
sizes[:Original] || sizes[:Large] || sizes[:Medium] ||
|
391
|
-
|
389
|
+
sizes[:Small]
|
392
390
|
end
|
393
391
|
|
394
392
|
def initialize(flickr,id)
|
@@ -410,8 +408,8 @@ class Flickr::Photo
|
|
410
408
|
base = "http://farm#{@farm}.static.flickr.com"
|
411
409
|
ext = (size == 'o') ? self.originalformat : 'jpg'
|
412
410
|
return size ?
|
413
|
-
|
414
|
-
|
411
|
+
"#{base}/#@server/#{@id}_#{@secret}_#{size}.#{ext}" :
|
412
|
+
"#{base}/#@server/#{@id}_#{@secret}.jpg"
|
415
413
|
end
|
416
414
|
|
417
415
|
def delete() @flickr.photos.delete(self) end
|
@@ -424,10 +422,10 @@ class Flickr::Photo
|
|
424
422
|
photo ||= Flickr::Photo.new(flickr,phid)
|
425
423
|
|
426
424
|
photo.owner_id ||= att['owner'] || (xml.elements['owner'] &&
|
427
|
-
|
425
|
+
xml.elements['owner'].attributes['nsid'])
|
428
426
|
photo.secret = att['secret'] if att['secret']
|
429
427
|
photo.originalformat = att['originalformat'] if
|
430
|
-
|
428
|
+
att['originalformat']
|
431
429
|
photo.server = att['server'].to_i if att['server']
|
432
430
|
photo.title = att['title'] || cond_text(xml.elements,'title')
|
433
431
|
photo.license_id = att['license']
|
@@ -438,10 +436,10 @@ class Flickr::Photo
|
|
438
436
|
photo.isfriend = (att['isfriend'].to_i == 1) if att['isfriend']
|
439
437
|
photo.isfamily = (att['isfamily'].to_i == 1) if att['isfamily']
|
440
438
|
photo.ownername = att['ownername'] || (xml.elements['owner'] &&
|
441
|
-
|
439
|
+
xml.elements['owner'].attributes['username'])
|
442
440
|
photo.description = cond_text(xml.elements,'description')
|
443
441
|
photo.dateadded = Time.at(att['dateadded'].to_i) if
|
444
|
-
|
442
|
+
att['dateadded']
|
445
443
|
if xml.elements['exif']
|
446
444
|
list = []
|
447
445
|
xml.elements.each('exif') do |el|
|
@@ -521,7 +519,7 @@ class Flickr::Exif
|
|
521
519
|
att['tag'],att['label'])
|
522
520
|
exif.raw=element.elements['raw'].text if element.elements['raw']
|
523
521
|
exif.clean=element.elements['clean'].text if
|
524
|
-
|
522
|
+
element.elements['clean']
|
525
523
|
return exif
|
526
524
|
end
|
527
525
|
end
|
@@ -571,13 +569,13 @@ class Flickr::SubCategory
|
|
571
569
|
end
|
572
570
|
|
573
571
|
class Flickr::Group
|
574
|
-
# The privacy attribute is 1 for private groups, 2 for invite-only public
|
575
|
-
# groups and 3 for open public groups.
|
572
|
+
# The privacy attribute is 1 for private groups, 2 for invite-only public
|
573
|
+
# groups and 3 for open public groups.
|
576
574
|
PRIVACY = [nil,:private,:invite,:public]
|
577
575
|
|
578
576
|
attr_accessor :nsid, :name, :members, :online, :chatnsid, :inchat,
|
579
|
-
|
580
|
-
|
577
|
+
:description, :privacy, :eighteenplus, :fully_fetched, :admin,
|
578
|
+
:photo_count, :iconserver
|
581
579
|
|
582
580
|
def initialize(flickr,nsid, name=nil, members=nil, online=nil,
|
583
581
|
chatnsid=nil, inchat=nil)
|
@@ -609,10 +607,10 @@ end
|
|
609
607
|
|
610
608
|
class Flickr::Context
|
611
609
|
attr_reader :prev_id,:prev_secret,:prev_title,:prev_url,
|
612
|
-
|
610
|
+
:next_id,:next_secret,:next_title,:next_url
|
613
611
|
|
614
612
|
def initialize(prev_id,prev_secret,prev_title,prev_url,
|
615
|
-
|
613
|
+
next_id,next_secret,next_title,next_url)
|
616
614
|
@prev_id = prev_id
|
617
615
|
@prev_secret = prev_secret
|
618
616
|
@prev_title = prev_title
|
@@ -643,7 +641,7 @@ class Flickr::License
|
|
643
641
|
def self.from_xml(xml)
|
644
642
|
att = xml.attributes
|
645
643
|
return Flickr::License.new(att['id'],att['name'],
|
646
|
-
|
644
|
+
att['url'])
|
647
645
|
end
|
648
646
|
end
|
649
647
|
|
@@ -682,8 +680,8 @@ class Flickr::Count
|
|
682
680
|
def self.from_xml(xml)
|
683
681
|
att = xml.attributes
|
684
682
|
return Flickr::Count.new(att['count'].to_i,
|
685
|
-
|
686
|
-
|
683
|
+
Time.at(att['fromdate'].to_i),
|
684
|
+
Time.at(att['todate'].to_i))
|
687
685
|
end
|
688
686
|
end
|
689
687
|
|
@@ -710,7 +708,7 @@ end
|
|
710
708
|
|
711
709
|
class Flickr::PhotoSet < Array
|
712
710
|
attr_accessor :id, :title, :url, :server, :primary_id,
|
713
|
-
|
711
|
+
:photo_count, :description, :secret, :owner
|
714
712
|
|
715
713
|
def initialize(id,flickr)
|
716
714
|
@id = id
|
@@ -746,7 +744,7 @@ class Flickr::PhotoSet < Array
|
|
746
744
|
set.photo_count = att['photos'].to_i
|
747
745
|
set.title = xml.elements['title'].text if xml.elements['title']
|
748
746
|
set.description = xml.elements['description'].text if
|
749
|
-
|
747
|
+
xml.elements['description']
|
750
748
|
if xml.elements['photo']
|
751
749
|
set.clear
|
752
750
|
xml.elements.each('photo') do |el|
|
@@ -798,9 +796,9 @@ class Flickr::PhotoPool < Array
|
|
798
796
|
pool.perpage = att['perpage'].to_i if att['perpage']
|
799
797
|
pool.total = att['total'].to_i if att['total']
|
800
798
|
if xml.elements['photo']
|
801
|
-
# I'd like to clear the pool, but I can't because I don't know if I'm
|
802
|
-
# parsing the full set or just a single "page".
|
803
|
-
# pool.clear
|
799
|
+
# I'd like to clear the pool, but I can't because I don't know if I'm
|
800
|
+
# parsing the full set or just a single "page".
|
801
|
+
# pool.clear
|
804
802
|
xml.elements.each('photo') do |el|
|
805
803
|
pool.<<(Flickr::Photo.from_xml(el,flickr),true)
|
806
804
|
end
|
data/lib/flickr/contacts.rb
CHANGED
@@ -23,9 +23,9 @@ require 'flickr/base'
|
|
23
23
|
class Flickr::Contacts < Flickr::APIBase
|
24
24
|
def getList(filter=nil)
|
25
25
|
res = filter ?
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
@flickr.call_method('flickr.contacts.getList') :
|
27
|
+
@flickr.call_method('flickr.contacts.getList',
|
28
|
+
'filter'=>filter)
|
29
29
|
list = []
|
30
30
|
res.elements['/contacts'].each_element do |e|
|
31
31
|
att = e.attributes
|
@@ -50,7 +50,7 @@ class Flickr::Contacts < Flickr::APIBase
|
|
50
50
|
def getPublicList(user)
|
51
51
|
user = user.nsid if user.class == Flickr::Person
|
52
52
|
res = @flickr.call_method('flickr.contacts.getPublicList',
|
53
|
-
|
53
|
+
'user_id'=>user)
|
54
54
|
list = []
|
55
55
|
res.elements['/contacts'].each_element do |e|
|
56
56
|
att = e.attributes
|
data/lib/flickr/groups.rb
CHANGED
@@ -26,7 +26,7 @@ class Flickr::Groups < Flickr::APIBase
|
|
26
26
|
# category can be a Category or nsid string
|
27
27
|
def browse(category=nil)
|
28
28
|
category=category.id if (category.class == Flickr::Category ||
|
29
|
-
|
29
|
+
category.class == Flickr::SubCategory )
|
30
30
|
|
31
31
|
args = category ? {'cat_id' => category } : {}
|
32
32
|
res = @flickr.call_method('flickr.groups.browse',args)
|
@@ -89,7 +89,7 @@ class Flickr::Groups < Flickr::APIBase
|
|
89
89
|
att = e.attributes
|
90
90
|
nsid = att['nsid']
|
91
91
|
g = @flickr.group_cache_lookup(nsid) ||
|
92
|
-
|
92
|
+
Flickr::Group.new(@flickr,nsid)
|
93
93
|
g.name = att['name']
|
94
94
|
g.eighteenplus = att['eighteenplus'].to_i == 1
|
95
95
|
|
@@ -27,13 +27,13 @@ class Flickr::Interestingness < Flickr::APIBase
|
|
27
27
|
args['date'] = date if date.is_a?(String)
|
28
28
|
args['date'] = date.to_s if date.is_a?(Date)
|
29
29
|
args['date'] = @flickr.mysql_date(date) if
|
30
|
-
|
30
|
+
date.is_a?(Time)
|
31
31
|
end
|
32
32
|
extras = extras.join(',') if extras.class == Array
|
33
33
|
args['extras'] = extras if extras
|
34
34
|
args['per_page'] = per_page if per_page
|
35
35
|
args['page'] = page if page
|
36
|
-
|
36
|
+
res = @flickr.call_method('flickr.interestingness.getList',args)
|
37
37
|
return Flickr::PhotoSet.from_xml(res.root,@flickr)
|
38
38
|
end
|
39
39
|
end
|
data/lib/flickr/licenses.rb
CHANGED
@@ -23,7 +23,7 @@ require 'flickr/base'
|
|
23
23
|
class Flickr::Licenses < Flickr::APIBase
|
24
24
|
def getInfo
|
25
25
|
return @flickr.license_cache_lookup if
|
26
|
-
|
26
|
+
@flickr.license_cache_lookup
|
27
27
|
list = {}
|
28
28
|
res = @flickr.call_method('flickr.photos.licenses.getInfo')
|
29
29
|
res.elements['/licenses'].each_element do |el|
|
data/lib/flickr/people.rb
CHANGED
@@ -39,14 +39,14 @@ class Flickr::People < Flickr::APIBase
|
|
39
39
|
def getInfo(user)
|
40
40
|
user = user.nsid if user.class == Flickr::Person
|
41
41
|
res = @flickr.call_method('flickr.people.getInfo',
|
42
|
-
|
42
|
+
'user_id'=>user)
|
43
43
|
person = Flickr::Person.from_xml(res,@flickr)
|
44
44
|
return person
|
45
45
|
end
|
46
46
|
|
47
47
|
# user can be a Person or an nsid
|
48
48
|
def getPublicGroups(user)
|
49
|
-
|
49
|
+
require 'flickr/groups'
|
50
50
|
groups = @flickr.groups
|
51
51
|
user = user.nsid if user.class == Flickr::Person
|
52
52
|
res = @flickr.call_method('flickr.people.getPublicGroups',
|
@@ -57,7 +57,7 @@ class Flickr::People < Flickr::APIBase
|
|
57
57
|
nsid = att['nsid']
|
58
58
|
|
59
59
|
g = @flickr.group_cache_lookup(nsid) ||
|
60
|
-
|
60
|
+
Flickr::Group.new(@flickr,nsid)
|
61
61
|
|
62
62
|
g.name = att['name']
|
63
63
|
g.eighteenplus = att['eighteenplus'].to_i == 1
|
@@ -92,7 +92,7 @@ class Flickr::People < Flickr::APIBase
|
|
92
92
|
def getUploadStatus(user)
|
93
93
|
user = user.nsid if user.class == Flickr::Person
|
94
94
|
res = @flickr.call_method('flickr.people.getUploadStatus',
|
95
|
-
|
95
|
+
'user_id'=>user)
|
96
96
|
person = Flickr::Person.from_xml(res,@flickr)
|
97
97
|
return person
|
98
98
|
end
|
data/lib/flickr/photos.rb
CHANGED
@@ -22,22 +22,22 @@ require 'flickr/base'
|
|
22
22
|
|
23
23
|
class Flickr::Photos < Flickr::APIBase
|
24
24
|
def upload
|
25
|
-
|
25
|
+
require 'flickr/upload'
|
26
26
|
@upload ||= Flickr::Upload.new(@flickr)
|
27
27
|
end
|
28
28
|
|
29
29
|
def licenses
|
30
|
-
|
30
|
+
require 'flickr/licenses'
|
31
31
|
@licenses ||= Flickr::Licenses.new(@flickr)
|
32
32
|
end
|
33
33
|
|
34
34
|
def notes
|
35
|
-
|
35
|
+
require 'flickr/notes'
|
36
36
|
@notes ||= Flickr::Notes.new(@flickr)
|
37
37
|
end
|
38
38
|
|
39
39
|
def transform
|
40
|
-
|
40
|
+
require 'flickr/transform'
|
41
41
|
@transform ||= Flickr::Transform.new(@flickr)
|
42
42
|
end
|
43
43
|
|
@@ -79,7 +79,7 @@ class Flickr::Photos < Flickr::APIBase
|
|
79
79
|
att = set.attributes
|
80
80
|
psid = att['id']
|
81
81
|
set = @flickr.photoset_cache_lookup(psid) ||
|
82
|
-
|
82
|
+
Flickr::PhotoSet.new(att['id'],@flickr)
|
83
83
|
set.title = att['title']
|
84
84
|
|
85
85
|
@flickr.photoset_cache_store(set)
|
@@ -90,7 +90,7 @@ class Flickr::Photos < Flickr::APIBase
|
|
90
90
|
ppid = att['id']
|
91
91
|
|
92
92
|
p = @flickr.photopool_cache_lookup(ppid) ||
|
93
|
-
|
93
|
+
Flickr::PhotoPool.new(ppid,@flickr)
|
94
94
|
p.title = att['title']
|
95
95
|
@flickr.photopool_cache_store(ppid)
|
96
96
|
list << p
|
@@ -106,8 +106,8 @@ class Flickr::Photos < Flickr::APIBase
|
|
106
106
|
att = perms.attributes
|
107
107
|
phid = att['id']
|
108
108
|
photo = (photo.class == Flickr::Photo) ? photo :
|
109
|
-
|
110
|
-
|
109
|
+
(@flickr.photo_cache_lookup(phid) ||
|
110
|
+
Flickr::Photo.new(@flickr,phid))
|
111
111
|
photo.ispublic = (att['ispublic'].to_i == 1)
|
112
112
|
photo.isfriend = (att['isfriend'].to_i == 1)
|
113
113
|
photo.isfamily = (att['isfamily'].to_i == 1)
|
@@ -120,12 +120,12 @@ class Flickr::Photos < Flickr::APIBase
|
|
120
120
|
perm_addmeta)
|
121
121
|
photo = photo.id if photo.class == Flickr::Photo
|
122
122
|
args = {
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
123
|
+
'photo_id' => photo,
|
124
|
+
'is_public' => (is_public == true || is_public == 1) ? 1 : 0,
|
125
|
+
'is_friend' => (is_friend == true || is_friend == 1) ? 1 : 0,
|
126
|
+
'is_family' => (is_family == true || is_family == 1) ? 1 : 0,
|
127
|
+
'perm_comment' => perm_comment,
|
128
|
+
'perm_addmeta' => perm_addmeta
|
129
129
|
}
|
130
130
|
res = @flickr.call_method('flickr.photos.setPerms',args)
|
131
131
|
end
|
@@ -135,11 +135,11 @@ class Flickr::Photos < Flickr::APIBase
|
|
135
135
|
args = {}
|
136
136
|
args['count'] = count if count
|
137
137
|
args['just_friends'] = just_friends ? '1' : '0' if
|
138
|
-
|
138
|
+
just_friends != nil
|
139
139
|
args['single_photo'] = single_photo ? '1' : '0' if
|
140
|
-
|
140
|
+
single_photo != nil
|
141
141
|
args['include_self'] = include_self ? '1' : '0' if
|
142
|
-
|
142
|
+
include_self != nil
|
143
143
|
res= @flickr.call_method('flickr.photos.getContactsPhotos',args)
|
144
144
|
return Flickr::PhotoList.from_xml(res,@flickr)
|
145
145
|
end
|
@@ -153,14 +153,14 @@ class Flickr::Photos < Flickr::APIBase
|
|
153
153
|
args['count'] = count if count
|
154
154
|
args['user_id'] = user
|
155
155
|
args['just_friends'] = just_friends ? '1' : '0' if
|
156
|
-
|
156
|
+
just_friends != nil
|
157
157
|
args['single_photo'] = single_photo ? '1' : '0' if
|
158
|
-
|
158
|
+
single_photo != nil
|
159
159
|
args['include_self'] = include_self ? '1' : '0' if
|
160
|
-
|
160
|
+
include_self != nil
|
161
161
|
res=@flickr.call_method('flickr.photos.getContactsPublicPhotos',
|
162
|
-
|
163
|
-
|
162
|
+
args)
|
163
|
+
return Flickr::PhotoList.from_xml(res,@flickr)
|
164
164
|
end
|
165
165
|
|
166
166
|
def getContext(photo)
|
@@ -174,7 +174,7 @@ class Flickr::Photos < Flickr::APIBase
|
|
174
174
|
args = {}
|
175
175
|
args['dates'] = dates.map{|d| d.to_i}.join(',') if dates
|
176
176
|
args['taken_dates'] = taken_dates.map{|d| d.to_i}.join(',') if
|
177
|
-
|
177
|
+
taken_dates
|
178
178
|
res = @flickr.call_method('flickr.photos.getCounts',args)
|
179
179
|
list = []
|
180
180
|
res.elements['/photocounts'].each_element('photocount') do |el|
|
@@ -232,8 +232,8 @@ class Flickr::Photos < Flickr::APIBase
|
|
232
232
|
def getSizes(photo)
|
233
233
|
photo_id = (photo.class == Flickr::Photo) ? photo.id : photo
|
234
234
|
photo = (photo.class == Flickr::Photo) ? photo :
|
235
|
-
|
236
|
-
|
235
|
+
(@flickr.photo_cache_lookup(photo_id) ||
|
236
|
+
Flickr::Photo.new(@flickr,photo_id))
|
237
237
|
res = @flickr.call_method('flickr.photos.getSizes',
|
238
238
|
'photo_id' => photo_id )
|
239
239
|
photo.sizes = {}
|
@@ -250,12 +250,12 @@ class Flickr::Photos < Flickr::APIBase
|
|
250
250
|
photo = photo.id if photo.class == Flickr::Photo
|
251
251
|
date_posted = date_posted.to_i if date_posted.class == Time
|
252
252
|
date_taken = @flickr.mysql_datetime(date_taken) if
|
253
|
-
|
253
|
+
date_taken.class == Time
|
254
254
|
args = {'photo_id' => photo}
|
255
255
|
args['date_posted'] = date_posted if date_posted
|
256
256
|
args['date_taken'] = date_taken if date_taken
|
257
257
|
args['date_taken_granularity'] = date_taken_granularity if
|
258
|
-
|
258
|
+
date_taken_granularity
|
259
259
|
@flickr.call_method('flickr.photos.setDates',args)
|
260
260
|
end
|
261
261
|
|
@@ -268,19 +268,19 @@ class Flickr::Photos < Flickr::APIBase
|
|
268
268
|
end
|
269
269
|
|
270
270
|
def search(user=nil,tags=nil,tag_mode=nil,text=nil,min_upload_date=nil,
|
271
|
-
|
272
|
-
|
271
|
+
max_upload_date=nil,min_taken_date=nil,max_taken_date=nil,
|
272
|
+
license=nil,extras=nil,per_page=nil,page=nil,sort=nil)
|
273
273
|
|
274
274
|
user = user.nsid if user.respond_to?(:nsid)
|
275
275
|
tags = tags.join(',') if tags.class == Array
|
276
276
|
min_upload_date = min_upload_date.to_i if
|
277
|
-
|
277
|
+
min_upload_date.class == Time
|
278
278
|
max_upload_date = max_upload_date.to_i if
|
279
|
-
|
279
|
+
max_upload_date.class == Time
|
280
280
|
min_taken_date = @flickr.mysql_datetime(min_taken_date) if
|
281
|
-
|
281
|
+
min_taken_date.class == Time
|
282
282
|
max_taken_date = @flickr.mysql_datetime(max_taken_date) if
|
283
|
-
|
283
|
+
max_taken_date.class == Time
|
284
284
|
license = license.id if license.class == Flickr::License
|
285
285
|
extras = extras.join(',') if extras.class == Array
|
286
286
|
|
data/lib/flickr/photosets.rb
CHANGED
@@ -33,9 +33,9 @@ class Flickr::PhotoSets < Flickr::APIBase
|
|
33
33
|
|
34
34
|
def create(title,primary_photo, description = nil)
|
35
35
|
primary_photo = primary_photo.id if
|
36
|
-
|
36
|
+
primary_photo.class == Flickr::Photo
|
37
37
|
args = { 'title' => title, 'primary_photo_id' =>
|
38
|
-
|
38
|
+
primary_photo}
|
39
39
|
args['description'] = description if description
|
40
40
|
res = @flickr.call_method('flickr.photosets.create',args)
|
41
41
|
id = res.elements['/photoset'].attributes['id']
|
@@ -64,7 +64,7 @@ class Flickr::PhotoSets < Flickr::APIBase
|
|
64
64
|
def editPhotos(photoset,primary_photo,photos)
|
65
65
|
photoset = photoset.id if photoset.class == Flickr::PhotoSet
|
66
66
|
primary_photo = primary_photo.id if
|
67
|
-
|
67
|
+
primary_photo.class == Flickr::Photo
|
68
68
|
photos=photos.map{|p| p.id if p.class==Flickr::Photo}.join(',')
|
69
69
|
args = {'photoset_id' => photoset,
|
70
70
|
'primary_photo_id' => primary_photo,
|
@@ -119,6 +119,6 @@ class Flickr::PhotoSets < Flickr::APIBase
|
|
119
119
|
photosets=photosets.map { |ps|
|
120
120
|
(ps.class==Flickr::PhotoSet) ? ps.id : ps}.join(',')
|
121
121
|
@flickr.call_method('flickr.photosets.orderSets',
|
122
|
-
|
122
|
+
'photoset_ids' => photosets)
|
123
123
|
end
|
124
124
|
end
|
data/lib/flickr/pools.rb
CHANGED
@@ -61,7 +61,7 @@ class Flickr::Pools < Flickr::APIBase
|
|
61
61
|
att = el.attributes
|
62
62
|
nsid = att['nsid']
|
63
63
|
g = @flickr.group_cache_lookup(nsid) ||
|
64
|
-
|
64
|
+
Flickr::Group.new(@flickr,nsid,att['name'])
|
65
65
|
g.name = att['name']
|
66
66
|
g.admin = att['admin'].to_i == 1
|
67
67
|
g.privacy = Flickr::Group::PRIVACY[att['privacy'].to_i]
|
@@ -79,7 +79,7 @@ class Flickr::Pools < Flickr::APIBase
|
|
79
79
|
group = group.id.to_s if group.class == Flickr::PhotoPool
|
80
80
|
args = { 'group_id' => group }
|
81
81
|
args['tags'] = tags.map{|t| t.clean if t.class ==
|
82
|
-
|
82
|
+
Flick::Tag}.join(',') if tags
|
83
83
|
args['extras'] = extras.join(',') if extras.class == Array
|
84
84
|
args['per_page'] = per_page if per_page
|
85
85
|
args['page'] = page if page
|
data/lib/flickr/reflection.rb
CHANGED
@@ -22,7 +22,7 @@ require 'flickr/base'
|
|
22
22
|
|
23
23
|
class Flickr::Method
|
24
24
|
attr_reader :name,:authenticated,:description,:response,:explanation,
|
25
|
-
|
25
|
+
:arguments, :errors
|
26
26
|
|
27
27
|
def initialize(name,authenticated,description,response,explanation)
|
28
28
|
@name = name
|
@@ -54,11 +54,11 @@ class Flickr::Reflection < Flickr::APIBase
|
|
54
54
|
els = res.elements
|
55
55
|
att = res.root.attributes
|
56
56
|
desc = els['/method/description'] ?
|
57
|
-
|
57
|
+
els['/method/description'].text : nil
|
58
58
|
resp = els['/method/response'] ?
|
59
|
-
|
59
|
+
els['/method/response'].text : nil
|
60
60
|
expl = els['/method/explanation'] ?
|
61
|
-
|
61
|
+
els['/method/explanation'].text : nil
|
62
62
|
meth = Flickr::Method.new(att['name'],att['needslogin'].to_i==1,
|
63
63
|
desc,resp,expl)
|
64
64
|
els['/method/arguments'].each_element do |el|
|
data/lib/flickr/tags.rb
CHANGED
@@ -28,8 +28,8 @@ class Flickr::Tags < Flickr::APIBase
|
|
28
28
|
xml = res.root
|
29
29
|
phid = xml.attributes['id']
|
30
30
|
photo = (photo.class == Flickr::Photo) ? photo :
|
31
|
-
|
32
|
-
|
31
|
+
(@flickr.photo_cache_lookup(phid) ||
|
32
|
+
Flickr::Photo.new(@flickr,phid))
|
33
33
|
if xml.elements['tags']
|
34
34
|
tags = []
|
35
35
|
xml.elements['tags'].each_element do |el|
|
data/lib/flickr/upload.rb
CHANGED
@@ -54,10 +54,10 @@ class Flickr::FormPart
|
|
54
54
|
|
55
55
|
def to_s
|
56
56
|
([ "Content-Disposition: form-data" ] +
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
57
|
+
attributes.map{|k,v| "#{k}=\"#{v}\""}).
|
58
|
+
join('; ') + "\r\n"+
|
59
|
+
(@mime_type ? "Content-Type: #{@mime_type}\r\n" : '')+
|
60
|
+
"\r\n#{data}"
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
@@ -66,26 +66,26 @@ class Flickr::MultiPartForm
|
|
66
66
|
|
67
67
|
def initialize(boundary=nil)
|
68
68
|
@boundary = boundary ||
|
69
|
-
|
69
|
+
"----------------------------Ruby#{rand(1000000000000)}"
|
70
70
|
@parts = []
|
71
71
|
end
|
72
72
|
|
73
73
|
def to_s
|
74
74
|
"--#@boundary\r\n"+
|
75
|
-
|
76
|
-
|
75
|
+
parts.map{|p| p.to_s}.join("\r\n--#@boundary\r\n")+
|
76
|
+
"\r\n--#@boundary--\r\n"
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
80
|
class Flickr::Upload < Flickr::APIBase
|
81
81
|
|
82
|
-
|
83
|
-
|
84
|
-
|
82
|
+
# TODO: It would probably be better if we wrapped the fault
|
83
|
+
# in something more meaningful. At the very least, a broad
|
84
|
+
# division of errors, such as retryable and fatal.
|
85
85
|
def error(el)
|
86
86
|
att = el.attributes
|
87
87
|
fe = XMLRPC::FaultException.new(att['code'].to_i,
|
88
|
-
|
88
|
+
att['msg'])
|
89
89
|
$stderr.puts "ERR: #{fe.faultString} (#{fe.faultCode})"
|
90
90
|
raise fe
|
91
91
|
end
|
@@ -96,7 +96,7 @@ class Flickr::Upload < Flickr::APIBase
|
|
96
96
|
parts = []
|
97
97
|
parts << Flickr::FormPart.new('title',title) if title
|
98
98
|
parts << Flickr::FormPart.new('description',description) if
|
99
|
-
|
99
|
+
description
|
100
100
|
parts << Flickr::FormPart.new('tags',tags.join(',')) if tags
|
101
101
|
parts << Flickr::FormPart.new('is_public',
|
102
102
|
is_public ? '1' : '0') if is_public != nil
|
@@ -109,7 +109,7 @@ class Flickr::Upload < Flickr::APIBase
|
|
109
109
|
|
110
110
|
parts << Flickr::FormPart.new('api_key',@flickr.api_key)
|
111
111
|
parts << Flickr::FormPart.new('auth_token',
|
112
|
-
|
112
|
+
@flickr.auth.token.token)
|
113
113
|
parts << Flickr::FormPart.new('api_sig',sig)
|
114
114
|
|
115
115
|
parts << Flickr::FormPart.new('photo',data,mimetype)
|
@@ -133,10 +133,10 @@ class Flickr::Upload < Flickr::APIBase
|
|
133
133
|
|
134
134
|
def send_form(form)
|
135
135
|
headers = {"Content-Type" =>
|
136
|
-
|
136
|
+
"multipart/form-data; boundary=" + form.boundary}
|
137
137
|
|
138
138
|
http = Net::HTTP.new('www.flickr.com', 80)
|
139
|
-
# http.read_timeout = 900 # 15 minutes max upload time
|
139
|
+
# http.read_timeout = 900 # 15 minutes max upload time
|
140
140
|
tries = 3
|
141
141
|
begin
|
142
142
|
res=http.post('/services/upload/',form.to_s,headers)
|
@@ -156,7 +156,7 @@ class Flickr::Upload < Flickr::APIBase
|
|
156
156
|
data = f.read
|
157
157
|
f.close
|
158
158
|
return upload_image_async(data,mt,filename,title,description,
|
159
|
-
|
159
|
+
tags, is_public,is_friend,is_family)
|
160
160
|
end
|
161
161
|
|
162
162
|
|
@@ -167,7 +167,7 @@ class Flickr::Upload < Flickr::APIBase
|
|
167
167
|
data = f.read
|
168
168
|
f.close
|
169
169
|
return upload_image(data,mt,filename,title,description,tags,
|
170
|
-
|
170
|
+
is_public,is_friend,is_family)
|
171
171
|
end
|
172
172
|
|
173
173
|
def upload_image_async(data,mimetype,filename,title=nil,description=nil,
|
@@ -175,10 +175,10 @@ class Flickr::Upload < Flickr::APIBase
|
|
175
175
|
form = Flickr::MultiPartForm.new
|
176
176
|
|
177
177
|
sig = make_signature(title,description, tags, is_public,
|
178
|
-
|
178
|
+
is_friend, is_family, true)
|
179
179
|
form.parts += prepare_parts(data,mimetype,filename,title,
|
180
|
-
|
181
|
-
|
180
|
+
description, tags, is_public, is_friend,
|
181
|
+
is_family, sig, true)
|
182
182
|
res = REXML::Document.new(send_form(form).body)
|
183
183
|
error(res.elements['/rsp/err']) if res.elements['/rsp/err']
|
184
184
|
t = Flickr::Ticket.new(res.elements['/rsp/ticketid'].text, self)
|
@@ -191,10 +191,10 @@ class Flickr::Upload < Flickr::APIBase
|
|
191
191
|
form = Flickr::MultiPartForm.new
|
192
192
|
|
193
193
|
sig = make_signature(title,description, tags, is_public,
|
194
|
-
|
194
|
+
is_friend, is_family)
|
195
195
|
form.parts += prepare_parts(data,mimetype,filename,title,
|
196
|
-
|
197
|
-
|
196
|
+
description, tags, is_public, is_friend,
|
197
|
+
is_family, sig)
|
198
198
|
res = REXML::Document.new(send_form(form).body)
|
199
199
|
error(res.elements['/rsp/err']) if res.elements['/rsp/err']
|
200
200
|
val = res.elements['/rsp/photoid'].text
|
@@ -212,11 +212,11 @@ class Flickr::Upload < Flickr::APIBase
|
|
212
212
|
att = tick.attributes
|
213
213
|
tid = att['id']
|
214
214
|
t = @flickr.ticket_cache_lookup(tid) ||
|
215
|
-
|
215
|
+
Flickr::Ticket.new(tid,self)
|
216
216
|
t.complete = Flickr::Ticket::COMPLETE[att['complete'].to_i]
|
217
217
|
t.photoid = att['photoid']
|
218
218
|
t.invalid = true if (att['invalid'] &&
|
219
|
-
|
219
|
+
(att['invalid'].to_i == 1))
|
220
220
|
@flickr.ticket_cache_store(t)
|
221
221
|
tickets << t
|
222
222
|
end
|
data/lib/flickr/urls.rb
CHANGED
@@ -50,8 +50,8 @@ class Flickr::Urls < Flickr::APIBase
|
|
50
50
|
nsid = els['/group'].attributes['id']
|
51
51
|
|
52
52
|
g = @flickr.group_cache_lookup(nsid) ||
|
53
|
-
|
54
|
-
|
53
|
+
Flickr::Group.new(@flickr,nsid,
|
54
|
+
els['/group/groupname'].text)
|
55
55
|
@flickr.group_cache_store(g)
|
56
56
|
return g
|
57
57
|
end
|
@@ -61,8 +61,8 @@ class Flickr::Urls < Flickr::APIBase
|
|
61
61
|
els = res.elements
|
62
62
|
nsid = els['/user'].attributes['id']
|
63
63
|
p = @flickr.person_cache_lookup(nsid) ||
|
64
|
-
|
65
|
-
|
64
|
+
Flickr::Person.new(@flickr,nsid,
|
65
|
+
els['/user/username'].text)
|
66
66
|
@flickr.person_cache_store(p)
|
67
67
|
return p
|
68
68
|
end
|
data/test/test_suite.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: digitalpardoe-rflickr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- digital:pardoe
|
@@ -9,10 +9,19 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-10-08 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: mime-types
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
16
25
|
description: rFlickr is a clone of the original RubyForge based rflickr, a Ruby implementation of the Flickr API. It includes a faithful albeit old reproduction of the published API.
|
17
26
|
email: contact@digitalpardoe.co.uk
|
18
27
|
executables: []
|
@@ -21,10 +30,11 @@ extensions: []
|
|
21
30
|
|
22
31
|
extra_rdoc_files:
|
23
32
|
- LICENSE
|
24
|
-
- README.
|
33
|
+
- README.markdown
|
25
34
|
files:
|
35
|
+
- .gitignore
|
26
36
|
- LICENSE
|
27
|
-
- README.
|
37
|
+
- README.markdown
|
28
38
|
- Rakefile
|
29
39
|
- VERSION.yml
|
30
40
|
- lib/flickr.rb
|
@@ -46,10 +56,11 @@ files:
|
|
46
56
|
- lib/flickr/transform.rb
|
47
57
|
- lib/flickr/upload.rb
|
48
58
|
- lib/flickr/urls.rb
|
49
|
-
-
|
50
|
-
- spec/spec_helper.rb
|
59
|
+
- test/test_suite.rb
|
51
60
|
has_rdoc: true
|
52
61
|
homepage: http://github.com/digitalpardoe/rflickr
|
62
|
+
licenses: []
|
63
|
+
|
53
64
|
post_install_message:
|
54
65
|
rdoc_options:
|
55
66
|
- --charset=UTF-8
|
@@ -70,10 +81,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
70
81
|
requirements: []
|
71
82
|
|
72
83
|
rubyforge_project:
|
73
|
-
rubygems_version: 1.
|
84
|
+
rubygems_version: 1.3.4
|
74
85
|
signing_key:
|
75
|
-
specification_version:
|
86
|
+
specification_version: 3
|
76
87
|
summary: rFlickr is a Ruby interface to the Flickr API
|
77
88
|
test_files:
|
78
|
-
-
|
79
|
-
- spec/spec_helper.rb
|
89
|
+
- test/test_suite.rb
|
data/spec/rflickr_spec.rb
DELETED