tumblr_wrapper 0.2.1 → 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/README.md CHANGED
@@ -78,6 +78,17 @@ To delete a post:
78
78
 
79
79
  post.delete({id: "ID FROM TUMBLR"})
80
80
 
81
+ The response object is a TumblrWrapper::Response.
82
+ It responds to `:status`, `:meta`, and any of the keys under "response" from tumblr.
83
+ Any of the values which are hashes will have indifferent access.
84
+ For example,
85
+
86
+ response = blog.posts
87
+ response.status.should == 200
88
+ response.meta[:status].should == 200
89
+ response.blog[:title].should == "Your Blog Title"
90
+ response.posts.should be_a(Array)
91
+
81
92
  ## Contributing
82
93
 
83
94
  1. Fork it
@@ -8,12 +8,14 @@ module TumblrWrapper::HTTP
8
8
  conn.response :json, :content_type => /\bjson$/
9
9
  conn.adapter Faraday.default_adapter
10
10
  end
11
- if opts[:signed]
11
+
12
+ response = if opts[:signed]
12
13
  connection.get(long_path(path), params)
13
14
  else
14
15
  parameters = params.merge({api_key: TumblrWrapper.consumer_key})
15
16
  connection.get(long_path(path), parameters)
16
17
  end
18
+ TumblrWrapper::Response.new(response)
17
19
  end
18
20
 
19
21
  def http_post(path, body)
@@ -25,7 +27,8 @@ module TumblrWrapper::HTTP
25
27
  conn.adapter Faraday.default_adapter
26
28
  end
27
29
 
28
- connection.post long_path(path), body
30
+ response = connection.post long_path(path), body
31
+ TumblrWrapper::Response.new(response)
29
32
  end
30
33
 
31
34
  private
File without changes
File without changes
@@ -0,0 +1,32 @@
1
+ class TumblrWrapper::Response
2
+ attr_reader :status, :meta
3
+ def initialize(faraday_response)
4
+ @faraday_response = faraday_response
5
+ @status = faraday_response.status
6
+ @response = faraday_response.body["response"]
7
+ parse_meta
8
+ end
9
+
10
+ private
11
+ def faraday_response
12
+ @faraday_response
13
+ end
14
+
15
+ def response
16
+ @response
17
+ end
18
+
19
+ def parse_meta
20
+ resp = faraday_response.body["meta"] || {}
21
+ @meta = resp.with_indifferent_access
22
+ end
23
+
24
+ def method_missing(meth, *args, &block)
25
+ if response.keys.include?(meth.to_s)
26
+ r = response[meth.to_s]
27
+ r.respond_to?(:keys) ? r.with_indifferent_access : r
28
+ else
29
+ super
30
+ end
31
+ end
32
+ end
@@ -1,3 +1,3 @@
1
1
  module TumblrWrapper
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -1,4 +1,5 @@
1
1
  require 'json'
2
+ require 'active_support/all'
2
3
  require 'oauth'
3
4
  require 'faraday'
4
5
  require 'faraday_middleware'
@@ -7,10 +8,11 @@ require "tumblr_wrapper/version"
7
8
  require "tumblr_wrapper/validators"
8
9
  require "tumblr_wrapper/http"
9
10
  require "tumblr_wrapper/client"
10
- require "tumblr_wrapper/resource"
11
- require "tumblr_wrapper/blog_resource"
12
- require "tumblr_wrapper/blog"
13
- require "tumblr_wrapper/post"
11
+ require "tumblr_wrapper/resources/resource"
12
+ require "tumblr_wrapper/resources/blog_resource"
13
+ require "tumblr_wrapper/resources/blog"
14
+ require "tumblr_wrapper/resources/post"
15
+ require "tumblr_wrapper/response"
14
16
 
15
17
  module TumblrWrapper
16
18
  ENDPOINT = 'http://api.tumblr.com'
@@ -32,10 +32,15 @@ describe TumblrWrapper, type: :integration do
32
32
  token = client.build_access_token(access_token, access_token_secret)
33
33
 
34
34
  blog_resource = TumblrWrapper::Blog.new(blogname, token)
35
- info = blog_resource.info
35
+ response = blog_resource.info
36
36
 
37
- info.body["meta"]["status"].should == 200
38
- info.body["response"]["blog"]["title"].should == blog_title
37
+ response.should be_a(TumblrWrapper::Response)
38
+ response.status.should == 200
39
+
40
+ response.meta[:msg].should == "OK"
41
+ response.meta[:status].should == 200
42
+
43
+ response.blog[:title].should == blog_title
39
44
  end
40
45
  end
41
46
 
@@ -45,7 +50,7 @@ describe TumblrWrapper, type: :integration do
45
50
  token = client.build_access_token(access_token, access_token_secret)
46
51
 
47
52
  blog_resource = TumblrWrapper::Blog.new(blogname, token)
48
- followers = blog_resource.followers
53
+ response = blog_resource.followers
49
54
  end
50
55
  end
51
56
 
@@ -55,7 +60,12 @@ describe TumblrWrapper, type: :integration do
55
60
  token = client.build_access_token(access_token, access_token_secret)
56
61
 
57
62
  blog_resource = TumblrWrapper::Blog.new(blogname, token)
58
- posts = blog_resource.posts
63
+ response = blog_resource.posts
64
+ response.status.should == 200
65
+
66
+ response.meta.should be_present
67
+ response.blog.should be_present
68
+ response.posts.should be_present
59
69
  end
60
70
  end
61
71
  end
@@ -18,6 +18,7 @@ Gem::Specification.new do |gem|
18
18
  gem.add_development_dependency 'rspec'
19
19
  gem.add_development_dependency 'vcr'
20
20
  gem.add_development_dependency 'webmock'
21
+ gem.add_dependency 'activesupport'
21
22
  gem.add_dependency 'oauth'
22
23
  gem.add_dependency 'faraday'
23
24
  gem.add_dependency 'faraday_middleware'
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 2
8
- - 1
9
- version: 0.2.1
7
+ - 3
8
+ - 0
9
+ version: 0.3.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - rheaton
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2012-08-02 00:00:00 -04:00
17
+ date: 2012-08-03 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -70,7 +70,7 @@ dependencies:
70
70
  type: :development
71
71
  version_requirements: *id004
72
72
  - !ruby/object:Gem::Dependency
73
- name: oauth
73
+ name: activesupport
74
74
  prerelease: false
75
75
  requirement: &id005 !ruby/object:Gem::Requirement
76
76
  none: false
@@ -83,7 +83,7 @@ dependencies:
83
83
  type: :runtime
84
84
  version_requirements: *id005
85
85
  - !ruby/object:Gem::Dependency
86
- name: faraday
86
+ name: oauth
87
87
  prerelease: false
88
88
  requirement: &id006 !ruby/object:Gem::Requirement
89
89
  none: false
@@ -96,7 +96,7 @@ dependencies:
96
96
  type: :runtime
97
97
  version_requirements: *id006
98
98
  - !ruby/object:Gem::Dependency
99
- name: faraday_middleware
99
+ name: faraday
100
100
  prerelease: false
101
101
  requirement: &id007 !ruby/object:Gem::Requirement
102
102
  none: false
@@ -109,7 +109,7 @@ dependencies:
109
109
  type: :runtime
110
110
  version_requirements: *id007
111
111
  - !ruby/object:Gem::Dependency
112
- name: simple_oauth
112
+ name: faraday_middleware
113
113
  prerelease: false
114
114
  requirement: &id008 !ruby/object:Gem::Requirement
115
115
  none: false
@@ -121,6 +121,19 @@ dependencies:
121
121
  version: "0"
122
122
  type: :runtime
123
123
  version_requirements: *id008
124
+ - !ruby/object:Gem::Dependency
125
+ name: simple_oauth
126
+ prerelease: false
127
+ requirement: &id009 !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ segments:
133
+ - 0
134
+ version: "0"
135
+ type: :runtime
136
+ version_requirements: *id009
124
137
  description: ruby wrapper for tumblr api
125
138
  email:
126
139
  - rachelmheaton@gmail.com
@@ -138,12 +151,13 @@ files:
138
151
  - README.md
139
152
  - Rakefile
140
153
  - lib/tumblr_wrapper.rb
141
- - lib/tumblr_wrapper/blog.rb
142
- - lib/tumblr_wrapper/blog_resource.rb
143
154
  - lib/tumblr_wrapper/client.rb
144
155
  - lib/tumblr_wrapper/http.rb
145
- - lib/tumblr_wrapper/post.rb
146
- - lib/tumblr_wrapper/resource.rb
156
+ - lib/tumblr_wrapper/resources/blog.rb
157
+ - lib/tumblr_wrapper/resources/blog_resource.rb
158
+ - lib/tumblr_wrapper/resources/post.rb
159
+ - lib/tumblr_wrapper/resources/resource.rb
160
+ - lib/tumblr_wrapper/response.rb
147
161
  - lib/tumblr_wrapper/validators.rb
148
162
  - lib/tumblr_wrapper/version.rb
149
163
  - spec/blog_resource_spec.rb