tumblr_wrapper 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -15,3 +15,10 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ spec/vcr_cassettes/access_token.yml
19
+ spec/vcr_cassettes/authorize_url.yml
20
+ spec/vcr_cassettes/blog_followers.yml
21
+ spec/vcr_cassettes/blog_info.yml
22
+ spec/vcr_cassettes/blog_posts.yml
23
+ spec/vcr_cassettes/post_create.yml
24
+ spec/support/token_helper.rb
data/README.md CHANGED
@@ -32,37 +32,51 @@ then authorize in browser here:
32
32
 
33
33
  client.authorize_url
34
34
 
35
- tumblr oauth is strict, you need to save the oauth verifier from the response:
35
+ request_token = client.request_token.token
36
+ request_token_secret = client.request_token.secret
36
37
 
37
- client.request_token(request_token, request_token_secret) // set the request token again
38
- access_token = client.access_token("OAUTH VERIFIER")
38
+ tumblr oauth is strict, you need the oauth verifier from the response to get the access token:
39
+
40
+ client.build_request_token(request_token, request_token_secret)
41
+ access_token = client.request_access_token("OAUTH VERIFIER")
39
42
 
40
43
  If you have the token and secret for your user:
41
44
 
42
- access_token = client.access_token_from_hash(oauth_token: "TOKEN", oauth_token_secret: "SECRET")
45
+ access_token = client.build_access_token("TOKEN", "SECRET")
43
46
 
44
47
  The access token is memoized in either case, so you can call it again once it was set:
45
48
 
46
49
  access_token = client.access_token
50
+ => {
51
+ consumer_key: "YOUR APPLICATION KEY",
52
+ consumer_secret: "YOUR APPLICATION SECRET",
53
+ oauth_token: 'TOKEN',
54
+ oauth_secret: 'SECRET',
55
+ }
47
56
 
48
57
  To get the first 40 posts of your blog:
49
58
 
50
59
  blog_resource = TumblrWrapper::BlogResource.new('yourblog.tumblr.com', access_token)
51
60
 
52
- blog_resource.blog.posts(limit: 40)
61
+ blog = blog_resource.blow
62
+ blog.posts(limit: 40)
53
63
 
54
64
  or with pagination:
55
65
 
56
- blog_resource.blog.posts(limit: 20, offset: 0)
57
- blog_resource.blog.posts(limit: 20, offset: 20)
66
+ blog.posts(limit: 20, offset: 0)
67
+ blog.posts(limit: 20, offset: 20)
58
68
 
59
69
  To post:
60
70
 
61
71
  blog_resource.post.create({ type: 'text', body: "Hello world." })
62
72
 
73
+ To update a post:
74
+
75
+ post.update({id: "ID FROM TUMBLR", body: "Goodbye world."})
76
+
63
77
  To delete a post:
64
78
 
65
- blog_resource.post.delete({id: "ID FROM TUMBLR"})
79
+ post.delete({id: "ID FROM TUMBLR"})
66
80
 
67
81
  ## Contributing
68
82
 
@@ -3,20 +3,21 @@ class TumblrWrapper::Blog < TumblrWrapper::BlogResource
3
3
  # Required parameters: N/A
4
4
  # http://www.tumblr.com/docs/en/api/v2#blog-info
5
5
  def info
6
- request('info')
6
+ http_get('info')
7
7
  end
8
8
 
9
9
  ##
10
10
  # Required parameters: N/A
11
11
  # http://www.tumblr.com/docs/en/api/v2#blog-followers
12
12
  def followers(parameters={})
13
- oauth_request('followers', parameters)
13
+ http_get('followers', {signed: true}, parameters)
14
14
  end
15
15
 
16
16
  ##
17
17
  # Required parameters: N/A
18
18
  # http://www.tumblr.com/docs/en/api/v2#posts
19
19
  def posts(parameters={})
20
- request('posts', parameters)
20
+ # for some reason the / is needed for this endpoint... -RH
21
+ http_get('posts/', parameters)
21
22
  end
22
23
  end
@@ -15,21 +15,9 @@ class TumblrWrapper::BlogResource < TumblrWrapper::Resource
15
15
  end
16
16
 
17
17
  protected
18
- def oauth_request(path, method_type = :get, body = {})
19
- validate_oauth
20
18
 
21
- url = "#{endpoint}/blog/#{hostname}/#{path}"
22
- if parameters.present?
23
- access_token.request(method_type, url, body)
24
- else
25
- access_token.request(method_type, url)
26
- end
19
+ def long_path(path)
20
+ "/#{TumblrWrapper.version}/blog/#{hostname}/#{path}"
27
21
  end
28
22
 
29
- def request(path, method_type = :get, parameters = {})
30
- parameters.merge!({ api_key: TumblrWrapper.consumer_key })
31
- params = (method_type == :get) ? { params: parameters } : parameters
32
-
33
- TumblrWrapper::RestClient.send(method_type, "#{endpoint}/blog/#{hostname}/#{path}", params)
34
- end
35
23
  end
@@ -1,44 +1,38 @@
1
1
  class TumblrWrapper::Client
2
- attr_reader :consumer
3
- def initialize
4
- @consumer = OAuth::Consumer.new(
5
- TumblrWrapper.consumer_key,
6
- TumblrWrapper.consumer_secret,
7
- site: 'http://www.tumblr.com'
8
- )
9
- end
2
+ attr_reader :access_token, :request_token
10
3
 
11
4
  def authorize_url
12
- @request_token = @consumer.get_request_token
5
+ @request_token = consumer.get_request_token
13
6
  @request_token.authorize_url
14
7
  end
15
8
 
16
- def access_token(oauth_verifier = nil)
17
- if oauth_verifier
18
- @access_token = request_token.get_access_token({:oauth_verifier => oauth_verifier})
19
- else
20
- @access_token
21
- end
9
+ def request_access_token(oauth_verifier)
10
+ token = request_token.get_access_token({:oauth_verifier => oauth_verifier})
11
+ @access_token = {
12
+ consumer_key: TumblrWrapper.consumer_key,
13
+ consumer_secret: TumblrWrapper.consumer_secret,
14
+ token: token.token,
15
+ token_secret: token.secret
16
+ }
22
17
  end
23
18
 
24
- def request_token(token = nil, secret=nil)
25
- if token && secret
26
- @request_token = OAuth::RequestToken.new(consumer, token, secret)
27
- else
28
- @request_token
29
- end
30
- @request_token
19
+ def build_request_token(token, secret)
20
+ @request_token = OAuth::RequestToken.new(consumer, token, secret)
31
21
  end
32
22
 
33
- def access_token_from_hash(token_hash)
34
- @access_token = OAuth::AccessToken.from_hash(consumer, token_hash)
23
+ def build_access_token(token, secret)
24
+ @access_token = {
25
+ consumer_key: TumblrWrapper.consumer_key,
26
+ consumer_secret: TumblrWrapper.consumer_secret,
27
+ oauth_token: token,
28
+ oauth_token_secret: secret }
35
29
  end
36
30
 
37
- def token
38
- @access_token.try(:token)
39
- end
40
-
41
- def secret
42
- @access_token.try(:secret)
31
+ def consumer
32
+ @consumer ||= OAuth::Consumer.new(
33
+ TumblrWrapper.consumer_key,
34
+ TumblrWrapper.consumer_secret,
35
+ site: 'http://www.tumblr.com'
36
+ )
43
37
  end
44
38
  end
@@ -0,0 +1,45 @@
1
+ module TumblrWrapper::HTTP
2
+
3
+ def http_get(path, opts={signed: false}, params={})
4
+ validate_oauth if opts[:signed]
5
+ connection = Faraday.new TumblrWrapper.endpoint do |conn|
6
+ conn.request :oauth, access_token if opts[:signed]
7
+ conn.request :url_encoded
8
+ conn.adapter Faraday.default_adapter
9
+ end
10
+ if opts[:signed]
11
+ connection.get(long_path(path), params)
12
+ else
13
+ parameters = params.merge({api_key: TumblrWrapper.consumer_key})
14
+ connection.get(long_path(path), parameters)
15
+ end
16
+ end
17
+
18
+ def http_post(path, body)
19
+ validate_oauth
20
+ connection = Faraday.new TumblrWrapper.endpoint do |conn|
21
+ conn.request :oauth, access_token
22
+ conn.request :url_encoded
23
+ conn.adapter Faraday.default_adapter
24
+ end
25
+
26
+ connection.post long_path(path), body
27
+ end
28
+
29
+ private
30
+ def content_type
31
+ 'application/json'
32
+ end
33
+
34
+ def accept
35
+ 'application/json'
36
+ end
37
+
38
+ def long_path(path)
39
+ raise NotImplementedError
40
+ end
41
+
42
+ def blank?(thing)
43
+ thing.nil? || thing.length == 0
44
+ end
45
+ end
@@ -6,7 +6,7 @@ class TumblrWrapper::Post < TumblrWrapper::BlogResource
6
6
  validate_present(:type, parameters)
7
7
  validate_not_present(:id, parameters)
8
8
 
9
- oauth_request('post', :post, parameters)
9
+ http_post('post', parameters)
10
10
  end
11
11
 
12
12
  ##
@@ -14,7 +14,7 @@ class TumblrWrapper::Post < TumblrWrapper::BlogResource
14
14
  # http://www.tumblr.com/docs/en/api/v2#editing
15
15
  def update(parameters = {})
16
16
  validate_present(:id, parameters)
17
- oauth_request('post/edit', :post, parameters)
17
+ http_post('post/edit', parameters)
18
18
  end
19
19
 
20
20
  ##
@@ -22,6 +22,6 @@ class TumblrWrapper::Post < TumblrWrapper::BlogResource
22
22
  # http://www.tumblr.com/docs/en/api/v2#editing
23
23
  def delete(parameters = {})
24
24
  validate_present(:id, parameters)
25
- oauth_request('post/delete', :post, parameters)
25
+ http_post('post/delete', parameters)
26
26
  end
27
27
  end
@@ -1,19 +1,10 @@
1
1
  class TumblrWrapper::Resource
2
+ include TumblrWrapper::Validators
3
+ include TumblrWrapper::HTTP
4
+
2
5
  attr_reader :access_token
3
6
 
4
7
  def initialize(access_token)
5
8
  @access_token = access_token
6
9
  end
7
-
8
- def validate_oauth
9
- raise TumblrWrapper::OauthNeeded unless access_token
10
- end
11
-
12
- def validate_present(key, parameters)
13
- raise TumblrWrapper::MissingRequiredParameter, key unless parameters[key]
14
- end
15
-
16
- def validate_not_present(key, parameters)
17
- raise TumblrWrapper::InvalidParameter, key if parameters[key]
18
- end
19
10
  end
@@ -0,0 +1,13 @@
1
+ module TumblrWrapper::Validators
2
+ def validate_oauth
3
+ raise TumblrWrapper::OauthNeeded unless access_token
4
+ end
5
+
6
+ def validate_present(key, parameters)
7
+ raise TumblrWrapper::MissingRequiredParameter, key unless parameters[key]
8
+ end
9
+
10
+ def validate_not_present(key, parameters)
11
+ raise TumblrWrapper::InvalidParameter, key if parameters[key]
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module TumblrWrapper
2
- VERSION = "0.0.3"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -1,6 +1,11 @@
1
+ require 'json'
1
2
  require 'oauth'
2
- require 'rest-client'
3
+ require 'faraday'
4
+ require 'faraday_middleware'
5
+
3
6
  require "tumblr_wrapper/version"
7
+ require "tumblr_wrapper/validators"
8
+ require "tumblr_wrapper/http"
4
9
  require "tumblr_wrapper/client"
5
10
  require "tumblr_wrapper/resource"
6
11
  require "tumblr_wrapper/blog_resource"
@@ -8,8 +13,9 @@ require "tumblr_wrapper/blog"
8
13
  require "tumblr_wrapper/post"
9
14
 
10
15
  module TumblrWrapper
11
- ENDPOINT = 'http://api.tumblr.com/v2'
16
+ ENDPOINT = 'http://api.tumblr.com'
12
17
  OAUTH_ENPOINT = 'http://www.tumblr.com'
18
+ VERSION = 'v2'
13
19
 
14
20
  def self.consumer_key=(key)
15
21
  @@consumer_key = key
@@ -35,6 +41,10 @@ module TumblrWrapper
35
41
  ENDPOINT
36
42
  end
37
43
 
44
+ def self.version
45
+ VERSION
46
+ end
47
+
38
48
  class NoAccessToken < StandardError
39
49
  def initialize(message = "Oauth request. Set access_token")
40
50
  super(message)
data/spec/blog_spec.rb CHANGED
@@ -10,7 +10,7 @@ describe TumblrWrapper::Blog do
10
10
 
11
11
  describe '.info' do
12
12
  it "makes an api request" do
13
- blog.should_receive(:request).with('info')
13
+ blog.should_receive(:http_get).with('info')
14
14
 
15
15
  blog.info
16
16
  end
@@ -18,13 +18,13 @@ describe TumblrWrapper::Blog do
18
18
 
19
19
  describe "followers" do
20
20
  it "makes an oauth request" do
21
- blog.should_receive(:oauth_request).with('followers', {})
21
+ blog.should_receive(:http_get).with('followers', {signed: true}, {})
22
22
 
23
23
  blog.followers
24
24
  end
25
25
 
26
26
  it "accepts parameters" do
27
- blog.should_receive(:oauth_request).with('followers', { limit: 20, offset: 5 })
27
+ blog.should_receive(:http_get).with('followers', {signed: true}, { limit: 20, offset: 5 })
28
28
 
29
29
  blog.followers({ limit: 20, offset: 5 })
30
30
  end
@@ -32,13 +32,13 @@ describe TumblrWrapper::Blog do
32
32
 
33
33
  describe "posts" do
34
34
  it "makes an api request" do
35
- blog.should_receive(:request).with('posts', {})
35
+ blog.should_receive(:http_get).with('posts/', {})
36
36
 
37
37
  blog.posts
38
38
  end
39
39
 
40
40
  it "accepts type parameter" do
41
- blog.should_receive(:request).with('posts', type: 'text')
41
+ blog.should_receive(:http_get).with('posts/', type: 'text')
42
42
 
43
43
  blog.posts(type: 'text')
44
44
  end
@@ -0,0 +1,81 @@
1
+ require 'spec_helper'
2
+
3
+ describe TumblrWrapper, type: :integration do
4
+ before do
5
+ TumblrWrapper.consumer_key = consumer_key
6
+ TumblrWrapper.consumer_secret = consumer_secret
7
+ end
8
+
9
+ it "can get an authorize url" do
10
+ VCR.use_cassette('authorize_url') do
11
+ client = TumblrWrapper::Client.new
12
+ client.authorize_url.should =~ /http\:\/\/www\.tumblr\.com\/oauth\/authorize\?oauth_token/
13
+ end
14
+ end
15
+
16
+ context "given a valid verifier and request token" do
17
+ it "can get an access token" do
18
+ VCR.use_cassette('access_token') do
19
+ client = TumblrWrapper::Client.new
20
+ client.build_request_token(request_token, request_secret)
21
+
22
+ token = client.request_access_token(oauth_verifier)
23
+ end
24
+ end
25
+ end
26
+
27
+ context "given an access token" do
28
+ describe "blog" do
29
+ it "can request blog info" do
30
+ VCR.use_cassette('blog_info') do
31
+ client = TumblrWrapper::Client.new
32
+ token = client.build_access_token(access_token, access_token_secret)
33
+
34
+ blog_resource = TumblrWrapper::Blog.new(blogname, token)
35
+ info = blog_resource.info
36
+ end
37
+ end
38
+
39
+ it "can request followers" do
40
+ VCR.use_cassette('blog_followers') do
41
+ client = TumblrWrapper::Client.new
42
+ token = client.build_access_token(access_token, access_token_secret)
43
+
44
+ blog_resource = TumblrWrapper::Blog.new(blogname, token)
45
+ followers = blog_resource.followers
46
+ end
47
+ end
48
+
49
+ it "can request posts" do
50
+ VCR.use_cassette('blog_posts') do
51
+ client = TumblrWrapper::Client.new
52
+ token = client.build_access_token(access_token, access_token_secret)
53
+
54
+ blog_resource = TumblrWrapper::Blog.new(blogname, token)
55
+ posts = blog_resource.posts
56
+ end
57
+ end
58
+ end
59
+
60
+ describe "post" do
61
+ it "can create a post" do
62
+ VCR.use_cassette('post_create') do
63
+ client = TumblrWrapper::Client.new
64
+ token = client.build_access_token(access_token, access_token_secret)
65
+
66
+ post = TumblrWrapper::Post.new(blogname, token)
67
+ post = post.create({
68
+ type: 'text',
69
+ body: "<p>hello world</p>"
70
+ })
71
+ end
72
+ end
73
+
74
+ xit "can delete a post" do
75
+ end
76
+
77
+ xit "can update a post" do
78
+ end
79
+ end
80
+ end
81
+ end
data/spec/post_spec.rb CHANGED
@@ -10,7 +10,7 @@ describe TumblrWrapper::Post do
10
10
 
11
11
  describe "create" do
12
12
  it "makes an oauth request with parameters" do
13
- post.should_receive(:oauth_request).with('post', :post, {:type => 'text'})
13
+ post.should_receive(:http_post).with('post', {:type => 'text'})
14
14
 
15
15
  post.create({:type => 'text'})
16
16
  end
@@ -30,7 +30,7 @@ describe TumblrWrapper::Post do
30
30
 
31
31
  describe "update" do
32
32
  it "makes an oauth request with parameters" do
33
- post.should_receive(:oauth_request).with('post/edit', :post, {:id => '1234'})
33
+ post.should_receive(:http_post).with('post/edit', {:id => '1234'})
34
34
 
35
35
  post.update({:id => '1234'})
36
36
  end
@@ -44,7 +44,7 @@ describe TumblrWrapper::Post do
44
44
 
45
45
  describe "delete" do
46
46
  it "makes an oauth request with parameters" do
47
- post.should_receive(:oauth_request).with('post/delete', :post, {:id => '1234'})
47
+ post.should_receive(:http_post).with('post/delete', {:id => '1234'})
48
48
 
49
49
  post.delete({:id => '1234'})
50
50
  end
data/spec/spec_helper.rb CHANGED
@@ -3,9 +3,19 @@ require 'spork'
3
3
 
4
4
  Spork.prefork do
5
5
  require 'rspec'
6
+ require 'vcr'
7
+ require 'webmock'
6
8
  require 'tumblr_wrapper'
9
+ Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
10
+
11
+ VCR.configure do |c|
12
+ c.cassette_library_dir = 'spec/vcr_cassettes'
13
+ c.hook_into :webmock
14
+ end
7
15
 
8
16
  RSpec.configure do |config|
9
17
  config.mock_with :rspec
18
+
19
+ config.include TokenHelper, type: :integration
10
20
  end
11
21
  end
@@ -0,0 +1,34 @@
1
+ module TokenHelper
2
+ def consumer_key
3
+ ""
4
+ end
5
+
6
+ def consumer_secret
7
+ ""
8
+ end
9
+
10
+ def blogname
11
+ ""
12
+ end
13
+
14
+ def access_token
15
+ ""
16
+ end
17
+
18
+ def access_token_secret
19
+ ""
20
+ end
21
+
22
+ # these are all part of the auth request set...
23
+ def oauth_verifier
24
+ ""
25
+ end
26
+
27
+ def request_token
28
+ ""
29
+ end
30
+
31
+ def request_secret
32
+ ""
33
+ end
34
+ end
@@ -16,6 +16,10 @@ Gem::Specification.new do |gem|
16
16
  gem.version = TumblrWrapper::VERSION
17
17
  gem.add_development_dependency 'spork'
18
18
  gem.add_development_dependency 'rspec'
19
+ gem.add_development_dependency 'vcr'
20
+ gem.add_development_dependency 'webmock'
19
21
  gem.add_dependency 'oauth'
20
- gem.add_dependency 'rest-client'
22
+ gem.add_dependency 'faraday'
23
+ gem.add_dependency 'faraday_middleware'
24
+ gem.add_dependency 'simple_oauth'
21
25
  end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
+ - 1
7
8
  - 0
8
- - 3
9
- version: 0.0.3
9
+ version: 0.1.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-01 00:00:00 -04:00
17
+ date: 2012-08-02 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -44,7 +44,7 @@ dependencies:
44
44
  type: :development
45
45
  version_requirements: *id002
46
46
  - !ruby/object:Gem::Dependency
47
- name: oauth
47
+ name: vcr
48
48
  prerelease: false
49
49
  requirement: &id003 !ruby/object:Gem::Requirement
50
50
  none: false
@@ -54,10 +54,10 @@ dependencies:
54
54
  segments:
55
55
  - 0
56
56
  version: "0"
57
- type: :runtime
57
+ type: :development
58
58
  version_requirements: *id003
59
59
  - !ruby/object:Gem::Dependency
60
- name: rest-client
60
+ name: webmock
61
61
  prerelease: false
62
62
  requirement: &id004 !ruby/object:Gem::Requirement
63
63
  none: false
@@ -67,8 +67,60 @@ dependencies:
67
67
  segments:
68
68
  - 0
69
69
  version: "0"
70
- type: :runtime
70
+ type: :development
71
71
  version_requirements: *id004
72
+ - !ruby/object:Gem::Dependency
73
+ name: oauth
74
+ prerelease: false
75
+ requirement: &id005 !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ segments:
81
+ - 0
82
+ version: "0"
83
+ type: :runtime
84
+ version_requirements: *id005
85
+ - !ruby/object:Gem::Dependency
86
+ name: faraday
87
+ prerelease: false
88
+ requirement: &id006 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ segments:
94
+ - 0
95
+ version: "0"
96
+ type: :runtime
97
+ version_requirements: *id006
98
+ - !ruby/object:Gem::Dependency
99
+ name: faraday_middleware
100
+ prerelease: false
101
+ requirement: &id007 !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ segments:
107
+ - 0
108
+ version: "0"
109
+ type: :runtime
110
+ version_requirements: *id007
111
+ - !ruby/object:Gem::Dependency
112
+ name: simple_oauth
113
+ prerelease: false
114
+ requirement: &id008 !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ segments:
120
+ - 0
121
+ version: "0"
122
+ type: :runtime
123
+ version_requirements: *id008
72
124
  description: ruby wrapper for tumblr api
73
125
  email:
74
126
  - rachelmheaton@gmail.com
@@ -89,14 +141,17 @@ files:
89
141
  - lib/tumblr_wrapper/blog.rb
90
142
  - lib/tumblr_wrapper/blog_resource.rb
91
143
  - lib/tumblr_wrapper/client.rb
144
+ - lib/tumblr_wrapper/http.rb
92
145
  - lib/tumblr_wrapper/post.rb
93
146
  - lib/tumblr_wrapper/resource.rb
94
- - lib/tumblr_wrapper/rest_client.rb
147
+ - lib/tumblr_wrapper/validators.rb
95
148
  - lib/tumblr_wrapper/version.rb
96
149
  - spec/blog_resource_spec.rb
97
150
  - spec/blog_spec.rb
151
+ - spec/integration/tumblr_wrapper_spec.rb
98
152
  - spec/post_spec.rb
99
153
  - spec/spec_helper.rb
154
+ - spec/support/token_helper.rb.template
100
155
  - tumblr_wrapper.gemspec
101
156
  has_rdoc: true
102
157
  homepage: ""
@@ -133,5 +188,7 @@ summary: ""
133
188
  test_files:
134
189
  - spec/blog_resource_spec.rb
135
190
  - spec/blog_spec.rb
191
+ - spec/integration/tumblr_wrapper_spec.rb
136
192
  - spec/post_spec.rb
137
193
  - spec/spec_helper.rb
194
+ - spec/support/token_helper.rb.template
@@ -1,2 +0,0 @@
1
- class TumblrWrapper::RestClient < ::RestClient
2
- end