benschwarz-flickr-rest 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +7 -2
- data/flickr-rest.gemspec +1 -1
- data/lib/flickr-rest.rb +18 -11
- metadata +1 -1
data/README.markdown
CHANGED
@@ -10,9 +10,14 @@ If you want a flickr api wrapper, use the flickr gem.
|
|
10
10
|
|
11
11
|
require 'flickr-rest'
|
12
12
|
Flickr::Query::CONFIG_PATH = '/path/to/flickr.yml'
|
13
|
-
flickr = Flickr::Query.new
|
13
|
+
flickr = Flickr::Query.new('flickr.test.echo')
|
14
14
|
|
15
|
-
|
15
|
+
# Raw JSON response (String)
|
16
|
+
flickr.raw
|
17
|
+
=> '{"api_key":{"_content":"2b60171843b346aa104e3a38d0129e5e"}, "format":{"_content":"json"}, "nojsoncallback":{"_content":"1"}, "method":{"_content":"flickr.test.echo"}, "stat":"ok"}'
|
16
18
|
|
19
|
+
# A clean, tidy ruby object
|
20
|
+
flickr.parsed
|
21
|
+
=> {:api_key=>"2b60171843b346aa104e3a38d0129e5e", :format=>"json", :method=>"flickr.test.echo", :nojsoncallback=>"1"}
|
17
22
|
|
18
23
|
|
data/flickr-rest.gemspec
CHANGED
data/lib/flickr-rest.rb
CHANGED
@@ -4,34 +4,41 @@ require 'open-uri'
|
|
4
4
|
|
5
5
|
module Flickr
|
6
6
|
class Query
|
7
|
-
VERSION = "0.2.
|
7
|
+
VERSION = "0.2.3".freeze
|
8
8
|
API_BASE = "http://api.flickr.com/services/rest/".freeze
|
9
9
|
|
10
|
+
attr_reader :raw
|
11
|
+
|
10
12
|
class Failure < StandardError; end
|
11
13
|
|
12
14
|
# @param api_method eg: flickr.test.echo
|
13
15
|
# @param params={} eg: :photo_id => 2929112139
|
14
|
-
def initialize
|
16
|
+
def initialize(method, params={})
|
15
17
|
@@config ||= YAML::load(File.open(CONFIG_PATH))
|
18
|
+
@method, @params = method, params
|
19
|
+
request
|
16
20
|
rescue NameError
|
17
21
|
raise Failure, "set your flickr API key and shared secret with a YAML file and point it to Flickr::Query.CONFIG_PATH = 'my-config.yml'"
|
18
22
|
end
|
19
|
-
|
20
|
-
def
|
21
|
-
|
22
|
-
raise Failure,
|
23
|
-
|
24
|
-
unnest(r)
|
23
|
+
|
24
|
+
def parsed
|
25
|
+
json = JSON.parse(@raw)
|
26
|
+
raise Failure, json["message"] if json.delete("stat") == "fail"
|
27
|
+
return unnest(mash(json))
|
25
28
|
end
|
26
29
|
|
27
30
|
private
|
28
|
-
def
|
31
|
+
def request
|
32
|
+
@raw = open(build_query).read
|
33
|
+
end
|
34
|
+
|
35
|
+
def build_query
|
29
36
|
url = []
|
30
37
|
opts = {
|
31
|
-
:method => method,
|
38
|
+
:method => @method,
|
32
39
|
:nojsoncallback => 1,
|
33
40
|
:format => "json"
|
34
|
-
}.merge(params).merge(@@config).each do |key, value|
|
41
|
+
}.merge(@params).merge(@@config).each do |key, value|
|
35
42
|
url << "#{key}=#{value}" unless value.nil?
|
36
43
|
end
|
37
44
|
|