benschwarz-flickr-rest 0.2 → 0.2.1

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.
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: