benschwarz-flickr-rest 0.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/flickr-rest.gemspec +1 -1
  2. data/lib/flickr-rest.rb +22 -4
  3. metadata +2 -1
data/flickr-rest.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "flickr-rest"
3
- s.version = "0.2"
3
+ s.version = "0.2.1"
4
4
  s.date = "2008-11-17"
5
5
  s.summary = "A light interface to call flickr 'restful' api methods"
6
6
  s.email = "ben@germanforblack.com"
data/lib/flickr-rest.rb CHANGED
@@ -1,9 +1,10 @@
1
+ require 'rubygems'
1
2
  require 'json'
2
3
  require 'open-uri'
3
4
 
4
5
  module Flickr
5
6
  class Query
6
- VERSION = "0.2.0".freeze
7
+ VERSION = "0.2.1".freeze
7
8
  API_BASE = "http://api.flickr.com/services/rest/".freeze
8
9
 
9
10
  class Failure < StandardError; end
@@ -18,10 +19,13 @@ module Flickr
18
19
 
19
20
  def request(api_method, params = {})
20
21
  response = JSON.parse(open(build_query(api_method, params)).read)
21
- raise Failure, response["message"] if response["stat"] == "fail"
22
- return response
22
+ raise Failure, response["message"] if response.delete("stat") == "fail"
23
+ name, response = response.to_a.first if response.size == 1
24
+
25
+ unnest(response)
23
26
  end
24
-
27
+
28
+ private
25
29
  def build_query(method, params={})
26
30
  url = []
27
31
  opts = {
@@ -34,5 +38,19 @@ module Flickr
34
38
 
35
39
  return API_BASE + "?" + url.join("&")
36
40
  end
41
+
42
+ def unnest(h)
43
+ return h unless h.is_a? Hash
44
+ if h.keys == ["_content"]
45
+ h["_content"]
46
+ else
47
+ h.inject({}) do |h, kv|
48
+ k,v = *kv
49
+ h[k.to_sym] = unnest(v)
50
+ h
51
+ end
52
+ end
53
+ end
54
+
37
55
  end
38
56
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: benschwarz-flickr-rest
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.2"
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Schwarz
@@ -14,6 +14,7 @@ default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: hpricot
17
+ type: :runtime
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements: