tomk32-flickr_fu 0.3.0
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 +13 -0
- data/LICENSE +22 -0
- data/README +182 -0
- data/Rakefile +73 -0
- data/VERSION.yml +4 -0
- data/lib/flickr/auth.rb +76 -0
- data/lib/flickr/base.rb +151 -0
- data/lib/flickr/comment.rb +16 -0
- data/lib/flickr/contact.rb +16 -0
- data/lib/flickr/contacts.rb +55 -0
- data/lib/flickr/errors.rb +20 -0
- data/lib/flickr/geo.rb +42 -0
- data/lib/flickr/license.rb +24 -0
- data/lib/flickr/location.rb +15 -0
- data/lib/flickr/note.rb +16 -0
- data/lib/flickr/people.rb +54 -0
- data/lib/flickr/person.rb +82 -0
- data/lib/flickr/photo.rb +333 -0
- data/lib/flickr/photo_response.rb +37 -0
- data/lib/flickr/photos.rb +277 -0
- data/lib/flickr/photoset.rb +37 -0
- data/lib/flickr/photosets.rb +39 -0
- data/lib/flickr/size.rb +16 -0
- data/lib/flickr/status.rb +19 -0
- data/lib/flickr/test.rb +31 -0
- data/lib/flickr/token.rb +22 -0
- data/lib/flickr/uploader.rb +162 -0
- data/lib/flickr/urls.rb +44 -0
- data/lib/flickr_fu.rb +51 -0
- data/spec/fixtures/flickr/contacts/get_list-fail-99.xml +4 -0
- data/spec/fixtures/flickr/contacts/get_public_list-0.xml +7 -0
- data/spec/fixtures/flickr/photos/geo/get_location-0.xml +11 -0
- data/spec/fixtures/flickr/photos/geo/get_location-fail-2.xml +4 -0
- data/spec/fixtures/flickr/photos/get_info-0.xml +41 -0
- data/spec/fixtures/flickr/photos/get_info-1.xml +19 -0
- data/spec/fixtures/flickr/photos/get_sizes-0.xml +10 -0
- data/spec/fixtures/flickr/photos/get_sizes-1.xml +8 -0
- data/spec/fixtures/flickr/photos/licenses/get_info.xml +12 -0
- data/spec/fixtures/flickr/photosets/get_list-0.xml +13 -0
- data/spec/fixtures/flickr/photosets/get_photos-0.xml +7 -0
- data/spec/fixtures/flickr/test/echo-0.xml +5 -0
- data/spec/fixtures/flickr/test/null-fail-99.xml +4 -0
- data/spec/fixtures/flickr/urls/get_group-0.xml +4 -0
- data/spec/fixtures/flickr/urls/get_group-fail-1.xml +4 -0
- data/spec/fixtures/flickr/urls/get_user_photos-0.xml +4 -0
- data/spec/fixtures/flickr/urls/get_user_photos-fail-1.xml +4 -0
- data/spec/fixtures/flickr/urls/get_user_photos-fail-2.xml +4 -0
- data/spec/fixtures/flickr/urls/get_user_profile-0.xml +4 -0
- data/spec/fixtures/flickr/urls/get_user_profile-fail-1.xml +4 -0
- data/spec/fixtures/flickr/urls/get_user_profile-fail-2.xml +4 -0
- data/spec/fixtures/flickr/urls/lookup_group-0.xml +6 -0
- data/spec/fixtures/flickr/urls/lookup_group-fail-1.xml +4 -0
- data/spec/fixtures/flickr/urls/lookup_user-0.xml +6 -0
- data/spec/fixtures/flickr/videos/get_info-0.xml +31 -0
- data/spec/fixtures/flickr/videos/get_sizes-0.xml +13 -0
- data/spec/flickr/base_spec.rb +97 -0
- data/spec/flickr/contacts_spec.rb +47 -0
- data/spec/flickr/errors_spec.rb +21 -0
- data/spec/flickr/geo_spec.rb +20 -0
- data/spec/flickr/photo_spec.rb +140 -0
- data/spec/flickr/photos_spec.rb +50 -0
- data/spec/flickr/photosets_spec.rb +49 -0
- data/spec/flickr/test_spec.rb +34 -0
- data/spec/flickr/urls_spec.rb +99 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +20 -0
- data/tomk32-flickr_fu.gemspec +121 -0
- metadata +151 -0
data/lib/flickr_fu.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'xml_magic'
|
3
|
+
require 'net/http'
|
4
|
+
require 'cgi'
|
5
|
+
require 'uri'
|
6
|
+
require 'open-uri'
|
7
|
+
require 'mime/types'
|
8
|
+
require 'digest/md5'
|
9
|
+
require 'yaml'
|
10
|
+
require 'time'
|
11
|
+
require 'date'
|
12
|
+
|
13
|
+
# base must load first
|
14
|
+
[ "base",
|
15
|
+
"test",
|
16
|
+
"auth",
|
17
|
+
"token",
|
18
|
+
"photos",
|
19
|
+
"photo",
|
20
|
+
"photo_response",
|
21
|
+
"photosets",
|
22
|
+
"photoset",
|
23
|
+
"comment",
|
24
|
+
"note",
|
25
|
+
"size",
|
26
|
+
"uploader",
|
27
|
+
"status",
|
28
|
+
"people",
|
29
|
+
"person",
|
30
|
+
"license",
|
31
|
+
"errors",
|
32
|
+
"contacts",
|
33
|
+
"contact",
|
34
|
+
"geo",
|
35
|
+
"location",
|
36
|
+
"urls" ].each do |file|
|
37
|
+
require File.join(File.dirname(__FILE__), 'flickr', file)
|
38
|
+
end
|
39
|
+
|
40
|
+
include CommonThread::XML
|
41
|
+
|
42
|
+
# Rails' ActiveSupport also contains this, we don't want to override it in that case.
|
43
|
+
unless defined?(Object::returning)
|
44
|
+
class Object
|
45
|
+
# returning allows you to pass an object to a block that you can manipulate returning the manipulated object
|
46
|
+
def returning(value)
|
47
|
+
yield(value)
|
48
|
+
value
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<rsp stat="ok">
|
3
|
+
<contacts page="1" pages="1" per_page="1000" perpage="1000" total="2">
|
4
|
+
<contact nsid="40718771@N00" username="kooop" iconserver="2" iconfarm="1" ignored="0" />
|
5
|
+
<contact nsid="20039881@N00" username="wayoutwest" iconserver="1" iconfarm="1" ignored="0" />
|
6
|
+
</contacts>
|
7
|
+
</rsp>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<rsp stat="ok">
|
3
|
+
<photo id="2984637736">
|
4
|
+
<location latitude="50.041376" longitude="21.999006" accuracy="16" context="0" place_id="X.5ul_ucAJtJcT0" woeid="517126">
|
5
|
+
<locality place_id="X.5ul_ucAJtJcT0" woeid="517126">Rzeszów</locality>
|
6
|
+
<county place_id="gUrbqNqYA5n4kv.erw" woeid="12591341">Rzeszów</county>
|
7
|
+
<region place_id="acDFruGYA5lyOpcIVg" woeid="12577943">Subcarpathia</region>
|
8
|
+
<country place_id="0kV97TybAphIxvm14g" woeid="23424923">Poland</country>
|
9
|
+
</location>
|
10
|
+
</photo>
|
11
|
+
</rsp>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<rsp stat="ok">
|
3
|
+
<photo id="2984637736" secret="9e5762e027" server="3180" farm="4" dateuploaded="1225297614" isfavorite="0" license="0" rotation="0" media="photo">
|
4
|
+
<owner nsid="80755658@N00" username="Maciej Biłas" realname="Maciej Biłas" location="Rzeszów, Poland"/>
|
5
|
+
<title>Demolition of Hotel Rzeszów</title>
|
6
|
+
<description>
|
7
|
+
The last picture from a quite old event. The demolition of the best known hotel in Rzeszów called Hotel Rzeszów.
|
8
|
+
</description>
|
9
|
+
<visibility ispublic="1" isfriend="0" isfamily="0"/>
|
10
|
+
<dates posted="1225297614" taken="2007-04-20 17:56:06" takengranularity="0" lastupdate="1227358764"/>
|
11
|
+
<editability cancomment="0" canaddmeta="0"/>
|
12
|
+
<usage candownload="0" canblog="0" canprint="0"/>
|
13
|
+
<comments>0</comments>
|
14
|
+
<notes/>
|
15
|
+
<tags>
|
16
|
+
<tag id="4963651-2984637736-9769036" author="80755658@N00" raw="Hotel Rzeszów" machine_tag="0">hotelrzeszów
|
17
|
+
</tag>
|
18
|
+
<tag id="4963651-2984637736-9381" author="80755658@N00" raw="demolition" machine_tag="0">demolition
|
19
|
+
</tag>
|
20
|
+
<tag id="4963651-2984637736-1888184" author="80755658@N00" raw="Rzeszów" machine_tag="0">rzeszów
|
21
|
+
</tag>
|
22
|
+
<tag id="4963651-2984637736-8302" author="80755658@N00" raw="Poland" machine_tag="0">poland
|
23
|
+
</tag>
|
24
|
+
</tags>
|
25
|
+
<location latitude="50.041376" longitude="21.999006" accuracy="16" place_id="X.5ul_ucAJtJcT0" woeid="517126">
|
26
|
+
<locality place_id="X.5ul_ucAJtJcT0" woeid="517126">Rzeszów
|
27
|
+
</locality>
|
28
|
+
<county place_id="gUrbqNqYA5n4kv.erw" woeid="12591341">Rzeszów
|
29
|
+
</county>
|
30
|
+
<region place_id="acDFruGYA5lyOpcIVg" woeid="12577943">Subcarpathia
|
31
|
+
</region>
|
32
|
+
<country place_id="0kV97TybAphIxvm14g" woeid="23424923">Poland
|
33
|
+
</country>
|
34
|
+
</location>
|
35
|
+
<geoperms ispublic="1" iscontact="0" isfriend="0" isfamily="0"/>
|
36
|
+
<urls>
|
37
|
+
<url type="photopage">http://www.flickr.com/photos/lvizard/2984637736/
|
38
|
+
</url>
|
39
|
+
</urls>
|
40
|
+
</photo>
|
41
|
+
</rsp>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<rsp stat="ok">
|
3
|
+
<photo id="3059178826" secret="951324cc9f" server="3008" farm="4" dateuploaded="1227628465" isfavorite="0" license="0" rotation="0" originalsecret="fdbf0e4ced" originalformat="jpg" views="0" media="photo">
|
4
|
+
<owner nsid="80755658@N00" username="Maciej Biłas" realname="Maciej Biłas" location="Rzeszów, Poland"/>
|
5
|
+
<title>test</title>
|
6
|
+
<description/>
|
7
|
+
<visibility ispublic="0" isfriend="0" isfamily="0"/>
|
8
|
+
<dates posted="1227628465" taken="2008-11-25 16:54:25" takengranularity="0" lastupdate="1227628476"/>
|
9
|
+
<permissions permcomment="3" permaddmeta="2"/>
|
10
|
+
<editability cancomment="1" canaddmeta="1"/>
|
11
|
+
<usage candownload="0" canblog="1" canprint="1"/>
|
12
|
+
<comments>0</comments>
|
13
|
+
<notes/>
|
14
|
+
<tags/>
|
15
|
+
<urls>
|
16
|
+
<url type="photopage">http://www.flickr.com/photos/lvizard/3059178826/</url>
|
17
|
+
</urls>
|
18
|
+
</photo>
|
19
|
+
</rsp>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<rsp stat="ok">
|
3
|
+
<sizes canblog="0" canprint="0" candownload="0">
|
4
|
+
<size label="Square" width="75" height="75" source="http://farm4.static.flickr.com/3180/2984637736_9e5762e027_s.jpg" url="http://www.flickr.com/photos/lvizard/2984637736/sizes/sq/" media="photo"/>
|
5
|
+
<size label="Thumbnail" width="100" height="67" source="http://farm4.static.flickr.com/3180/2984637736_9e5762e027_t.jpg" url="http://www.flickr.com/photos/lvizard/2984637736/sizes/t/" media="photo"/>
|
6
|
+
<size label="Small" width="240" height="160" source="http://farm4.static.flickr.com/3180/2984637736_9e5762e027_m.jpg" url="http://www.flickr.com/photos/lvizard/2984637736/sizes/s/" media="photo"/>
|
7
|
+
<size label="Medium" width="500" height="333" source="http://farm4.static.flickr.com/3180/2984637736_9e5762e027.jpg" url="http://www.flickr.com/photos/lvizard/2984637736/sizes/m/" media="photo"/>
|
8
|
+
<size label="Large" width="1024" height="683" source="http://farm4.static.flickr.com/3180/2984637736_9e5762e027_b.jpg" url="http://www.flickr.com/photos/lvizard/2984637736/sizes/l/" media="photo"/>
|
9
|
+
</sizes>
|
10
|
+
</rsp>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<rsp stat="ok">
|
3
|
+
<sizes canblog="1" canprint="1" candownload="0">
|
4
|
+
<size label="Square" width="75" height="75" source="http://farm4.static.flickr.com/3008/3059178826_951324cc9f_s.jpg" url="http://www.flickr.com/photos/lvizard/3059178826/sizes/sq/" media="photo"/>
|
5
|
+
<size label="Thumbnail" width="70" height="72" source="http://farm4.static.flickr.com/3008/3059178826_951324cc9f_t.jpg" url="http://www.flickr.com/photos/lvizard/3059178826/sizes/t/" media="photo"/>
|
6
|
+
<size label="Original" width="70" height="72" source="http://farm4.static.flickr.com/3008/3059178826_fdbf0e4ced_o.jpg" url="http://www.flickr.com/photos/lvizard/3059178826/sizes/o/" media="photo"/>
|
7
|
+
</sizes>
|
8
|
+
</rsp>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<rsp stat="ok">
|
3
|
+
<licenses>
|
4
|
+
<license id="0" name="All Rights Reserved" url=""/>
|
5
|
+
<license id="4" name="Attribution License" url="http://creativecommons.org/licenses/by/2.0/"/>
|
6
|
+
<license id="6" name="Attribution-NoDerivs License" url="http://creativecommons.org/licenses/by-nd/2.0/"/>
|
7
|
+
<license id="3" name="Attribution-NonCommercial-NoDerivs License" url="http://creativecommons.org/licenses/by-nc-nd/2.0/"/>
|
8
|
+
<license id="2" name="Attribution-NonCommercial License" url="http://creativecommons.org/licenses/by-nc/2.0/"/>
|
9
|
+
<license id="1" name="Attribution-NonCommercial-ShareAlike License" url="http://creativecommons.org/licenses/by-nc-sa/2.0/"/>
|
10
|
+
<license id="5" name="Attribution-ShareAlike License" url="http://creativecommons.org/licenses/by-sa/2.0/"/>
|
11
|
+
</licenses>
|
12
|
+
</rsp>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<rsp stat="ok">
|
3
|
+
<photosets cancreate="1">
|
4
|
+
<photoset id="5" primary="2483" secret="abcdef" server="8" photos="4" farm="1">
|
5
|
+
<title>Test</title>
|
6
|
+
<description>foo</description>
|
7
|
+
</photoset>
|
8
|
+
<photoset id="4" primary="1234" secret="832659" server="3" photos="12" farm="1">
|
9
|
+
<title>My Set</title>
|
10
|
+
<description>bar</description>
|
11
|
+
</photoset>
|
12
|
+
</photosets>
|
13
|
+
</rsp>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<rsp stat="ok">
|
3
|
+
<photoset id="4" primary="2483" page="1" perpage="500" pages="1" total="2">
|
4
|
+
<photo id="2484" secret="123456" server="1" title="my photo" isprimary="0" />
|
5
|
+
<photo id="2483" secret="123456" server="1" title="flickr rocks" isprimary="1" />
|
6
|
+
</photoset>
|
7
|
+
</rsp>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<rsp stat="ok">
|
3
|
+
<photo id="2729556270" secret="eee23fb14a" server="3207" farm="4" dateuploaded="1217794663" isfavorite="0" license="4" rotation="0" originalsecret="e940a69ebf" originalformat="png" media="video">
|
4
|
+
<owner nsid="24461004@N00" username="girl_named_fred" realname="Cynthia Donovan" location="Pawtucket, USA" />
|
5
|
+
<title>bust a move?</title>
|
6
|
+
<description />
|
7
|
+
<visibility ispublic="1" isfriend="0" isfamily="0" />
|
8
|
+
<dates posted="1217794663" taken="2008-08-03 13:17:43" takengranularity="0" lastupdate="1217859448" />
|
9
|
+
<editability cancomment="0" canaddmeta="0" />
|
10
|
+
<usage candownload="1" canblog="0" canprint="0" />
|
11
|
+
|
12
|
+
<comments>0</comments>
|
13
|
+
<notes />
|
14
|
+
<tags>
|
15
|
+
<tag id="251642-2729556270-6613225" author="24461004@N00" raw="babysquash" machine_tag="0">babysquash</tag>
|
16
|
+
<tag id="251642-2729556270-8754" author="24461004@N00" raw="august" machine_tag="0">august</tag>
|
17
|
+
<tag id="251642-2729556270-30529" author="24461004@N00" raw="anita" machine_tag="0">anita</tag>
|
18
|
+
<tag id="251642-2729556270-65815" author="24461004@N00" raw="waltham" machine_tag="0">waltham</tag>
|
19
|
+
|
20
|
+
<tag id="251642-2729556270-1853" author="24461004@N00" raw="liberty" machine_tag="0">liberty</tag>
|
21
|
+
<tag id="251642-2729556270-20506" author="24461004@N00" raw="cousin" machine_tag="0">cousin</tag>
|
22
|
+
<tag id="251642-2729556270-2079514" author="24461004@N00" raw="brucespringstein" machine_tag="0">brucespringstein</tag>
|
23
|
+
</tags>
|
24
|
+
<urls>
|
25
|
+
<url type="photopage">http://www.flickr.com/photos/girl_named_fred/2729556270/</url>
|
26
|
+
</urls>
|
27
|
+
|
28
|
+
<video ready="1" failed="0" pending="0" duration="" width="320" height="240" />
|
29
|
+
</photo>
|
30
|
+
</rsp>
|
31
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<rsp stat="ok">
|
3
|
+
<sizes canblog="0" canprint="0" candownload="1">
|
4
|
+
<size label="Square" width="75" height="75" source="http://farm4.static.flickr.com/3207/2729556270_eee23fb14a_s.jpg" url="http://www.flickr.com/photos/girl_named_fred/2729556270/sizes/sq/" media="photo" />
|
5
|
+
<size label="Thumbnail" width="100" height="75" source="http://farm4.static.flickr.com/3207/2729556270_eee23fb14a_t.jpg" url="http://www.flickr.com/photos/girl_named_fred/2729556270/sizes/t/" media="photo" />
|
6
|
+
<size label="Small" width="240" height="180" source="http://farm4.static.flickr.com/3207/2729556270_eee23fb14a_m.jpg" url="http://www.flickr.com/photos/girl_named_fred/2729556270/sizes/s/" media="photo" />
|
7
|
+
<size label="Medium" width="320" height="240" source="http://farm4.static.flickr.com/3207/2729556270_eee23fb14a.jpg" url="http://www.flickr.com/photos/girl_named_fred/2729556270/sizes/m/" media="photo" />
|
8
|
+
<size label="Original" width="320" height="240" source="http://farm4.static.flickr.com/3207/2729556270_e940a69ebf_o.png" url="http://www.flickr.com/photos/girl_named_fred/2729556270/sizes/o/" media="photo" />
|
9
|
+
<size label="Video Player" width="320" height="240" source="http://www.flickr.com/apps/video/stewart.swf?v=63881&photo_id=2729556270&photo_secret=eee23fb14a" url="http://www.flickr.com/photos/girl_named_fred/2729556270/" media="video" />
|
10
|
+
</sizes>
|
11
|
+
</rsp>
|
12
|
+
|
13
|
+
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe Flickr do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@token = Flickr::Auth::Token.new(:permissions => "write", :token => "foo", :user_id => "80755658@N00",
|
7
|
+
:user_real_name => "Maciej Bilas", :username => "Maciej Bilas")
|
8
|
+
@api_key = "foo"
|
9
|
+
@api_secret = "bar"
|
10
|
+
@yaml_hash = {"key" => @api_key, "secret" => @api_secret}
|
11
|
+
end
|
12
|
+
|
13
|
+
describe ".new" do
|
14
|
+
|
15
|
+
describe "with no environment option specified" do
|
16
|
+
it "should inititialize Flickr from a Hash" do
|
17
|
+
# AFAIK there is no spec on how the key and secret look like
|
18
|
+
# so we can test with simple values
|
19
|
+
init_hash = {:key => @api_key, :secret => @api_secret}
|
20
|
+
flickr = Flickr.new(init_hash)
|
21
|
+
flickr.api_key.should == @api_key
|
22
|
+
flickr.api_secret.should == @api_secret
|
23
|
+
|
24
|
+
init_hash_with_token = init_hash.merge(:token => @token)
|
25
|
+
flickr = Flickr.new(init_hash_with_token)
|
26
|
+
flickr.token.should == @token
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should initialize Flickr from a YAML file" do
|
30
|
+
YAML.should_receive(:load_file).once.and_return(@yaml_hash)
|
31
|
+
flickr = Flickr.new("flickr.yml")
|
32
|
+
flickr.api_key.should == @api_key
|
33
|
+
flickr.api_secret.should == @api_secret
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should fail if API key or secret value is absent" do
|
37
|
+
invalid_hash = {:key => @api_key}
|
38
|
+
lambda { Flickr.new(invalid_hash) }.should raise_error
|
39
|
+
invalid_hash = {:secret => @api_secret}
|
40
|
+
lambda { Flickr.new(invalid_hash) }.should raise_error
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "with an environment option specified" do
|
46
|
+
before :all do
|
47
|
+
@environment_specified = "development"
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should initialize Flickr from a YAML file" do
|
51
|
+
yaml_hash = {@environment_specified => {"key" => @api_key, "secret" => @api_secret}}
|
52
|
+
YAML.should_receive(:load_file).once.and_return(yaml_hash)
|
53
|
+
flickr = Flickr.new("flickr.yml", :environment => @environment_specified)
|
54
|
+
flickr.api_key.should == @api_key
|
55
|
+
flickr.api_secret.should == @api_secret
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "when token_cache is passed (only with a YAML file)" do
|
60
|
+
|
61
|
+
before :all do
|
62
|
+
@expected_token_cache = "token_cache.yml"
|
63
|
+
end
|
64
|
+
|
65
|
+
# For backward compatibility
|
66
|
+
it "should initialize Flickr with token_cache when passed as the second parameter" do
|
67
|
+
YAML.should_receive(:load_file).once.and_return(@yaml_hash)
|
68
|
+
flickr = Flickr.new("flickr.yml", @expected_token_cache)
|
69
|
+
flickr.token_cache.should == @expected_token_cache
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should initialize Flickr with token_cache when passed as an option" do
|
73
|
+
YAML.should_receive(:load_file).once.and_return(@yaml_hash)
|
74
|
+
flickr = Flickr.new("flickr.yml", :token_cache => @expected_token_cache)
|
75
|
+
flickr.token_cache.should == @expected_token_cache
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "when token is passed as an options (only with a YAML file)" do
|
80
|
+
|
81
|
+
it "should initialize Flickr with a token if passed" do
|
82
|
+
YAML.should_receive(:load_file).once.and_return(@yaml_hash)
|
83
|
+
flickr = Flickr.new("flickr.yml", :token => @token)
|
84
|
+
flickr.token.should == @token
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
describe "when both token and token_cache are passed" do
|
90
|
+
it "should raise an error" do
|
91
|
+
YAML.should_receive(:load_file).once.and_return(@yaml_hash)
|
92
|
+
lambda { Flickr.new("flickr.yml", {:token => @token, :token_cache => "token_cache.yml"})}.should raise_error
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe Flickr::Contacts do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@flickr = SpecHelper.flickr
|
7
|
+
end
|
8
|
+
|
9
|
+
describe ".get_public_list" do
|
10
|
+
before :all do
|
11
|
+
@public_list_xml = File.read(File.dirname(__FILE__) +
|
12
|
+
"/../fixtures/flickr/contacts/get_public_list-0.xml")
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should call flickr.contacts.getPublicList" do
|
16
|
+
bogus_user_id = "12334@N00"
|
17
|
+
@flickr.should_receive(:send_request).with("flickr.contacts.getPublicList",
|
18
|
+
{:user_id=>bogus_user_id})
|
19
|
+
@flickr.contacts.get_public_list(bogus_user_id)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should return public contacts for the given user" do
|
23
|
+
bogus_user_id = "12334@N00"
|
24
|
+
@flickr.stub!(:request_over_http).and_return(@public_list_xml)
|
25
|
+
contacts = @flickr.contacts.get_public_list(bogus_user_id)
|
26
|
+
contacts.size.should == 2
|
27
|
+
contacts.first.username.should == "kooop"
|
28
|
+
contacts.first.nsid.should == "40718771@N00"
|
29
|
+
contacts.first.iconserver.should == "2"
|
30
|
+
contacts.first.iconfarm.should == "1"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe ".get_list" do
|
35
|
+
it "should call flickr.contacts.getList" do
|
36
|
+
@flickr.should_receive(:send_request).with("flickr.contacts.getList", {})
|
37
|
+
@flickr.contacts.get_list
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should raise flickr error 99: Insufficient permissions" do
|
41
|
+
xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/contacts/get_list-fail-99.xml")
|
42
|
+
@flickr.stub!(:request_over_http).and_return(xml)
|
43
|
+
lambda { @flickr.contacts.get_list }.should raise_error(Flickr::Error, /^99:/)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe Flickr::Errors, ".error_for" do
|
4
|
+
it "should raise a RuntimeError with an \"Internal message\" message if either code or message is blank" do
|
5
|
+
lambda { Flickr::Errors.error_for(nil, nil) }.should raise_error(RuntimeError, /^Internal error/)
|
6
|
+
lambda { Flickr::Errors.error_for(20, nil) }.should raise_error(RuntimeError, /^Internal error/)
|
7
|
+
lambda { Flickr::Errors.error_for(nil, "foo") }.should raise_error(RuntimeError, /^Internal error/)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should raise a RuntimeError with an \"Internal error\" message if code is not an integer" do
|
11
|
+
lambda { Flickr::Errors.error_for("a", "foo")}.should raise_error(RuntimeError, /^Internal error/)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should raise a valid error if parameters are valid" do
|
15
|
+
lambda { Flickr::Errors.error_for(96, "Invalid signature")}.should raise_error(Flickr::Error)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return an error with a message starting with the error code" do
|
19
|
+
lambda { Flickr::Errors.error_for(97, "Missing signature")}.should raise_error(Flickr::Error, /^97/)
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe Flickr::Photos::Geo do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@flickr = SpecHelper.flickr
|
7
|
+
end
|
8
|
+
|
9
|
+
describe ".get_location" do
|
10
|
+
it "should return the geo data (latitude and longitude and the accuracy level) for a photo" do
|
11
|
+
location_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/photos/geo/get_location-0.xml")
|
12
|
+
@flickr.should_receive(:request_over_http).and_return(location_xml)
|
13
|
+
acctual_loc = @flickr.photos.geo.get_location(2984637736)
|
14
|
+
acctual_loc.latitude.should == 50.041376
|
15
|
+
acctual_loc.longitude.should == 21.999006
|
16
|
+
acctual_loc.accuracy.should == 16
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|