tumblr-ruby 0.1.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.
@@ -0,0 +1,154 @@
1
+ require "spec_helper"
2
+
3
+ describe Tumblr::Client::User do
4
+
5
+ let (:client) do
6
+ Tumblr::Client.new do |client|
7
+ client.consumer_key = CONSUMER_KEY
8
+ client.consumer_secret = CONSUMER_SECRET
9
+ client.oauth_token = OAUTH_TOKEN
10
+ client.oauth_token_secret = OAUTH_TOKEN_SECRET
11
+ end
12
+ end
13
+
14
+ describe "#user_info" do
15
+
16
+ before do
17
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/user\/info*/).to_return(:status => 200, :body => fixture('user_info.json'), :headers => {"Content-Type" => "application/json"})
18
+ end
19
+
20
+ context "making request" do
21
+ it "should make request to correct url" do
22
+ client.stubs(:get).returns('')
23
+ client.expects(:get).with{ |arg| arg =~ /\/user\/info/}.returns('')
24
+ client.user_info
25
+ end
26
+ end
27
+
28
+ context "required params present" do
29
+ subject { client.user_info}
30
+ it { should_not be_nil }
31
+ its("response.user.name"){should eq("derekg")}
32
+ end
33
+ end
34
+
35
+ describe "#dashboard" do
36
+
37
+ before do
38
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/user\/dashboard*/).to_return(:status => 200, :body => fixture('dashboard.json'), :headers => {"Content-Type" => "application/json"})
39
+ end
40
+
41
+ context "making request" do
42
+ it "should make request to correct url" do
43
+ client.stubs(:get).returns('')
44
+ client.expects(:get).with{ |arg| arg =~ /\/user\/dashboard/}.returns('')
45
+ client.dashboard
46
+ end
47
+ end
48
+
49
+ context "required params present" do
50
+ subject { client.dashboard}
51
+ it { should_not be_nil }
52
+ its("response.posts.size"){should eq(2)}
53
+ its("response.posts.first.blog_name"){should eq("blog1")}
54
+ its("response.posts.last.blog_name"){should eq("blog2")}
55
+ end
56
+ end
57
+
58
+ describe "#likes" do
59
+
60
+ before do
61
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/user\/likes*/).to_return(:status => 200, :body => fixture('likes.json'), :headers => {"Content-Type" => "application/json"})
62
+ end
63
+
64
+ context "making request" do
65
+ it "should make request to correct url" do
66
+ client.stubs(:get).returns('')
67
+ client.expects(:get).with{ |arg| arg =~ /\/user\/likes/}.returns('')
68
+ client.likes
69
+ end
70
+ end
71
+
72
+ context "required params present" do
73
+ subject { client.likes}
74
+ it { should_not be_nil }
75
+ its("response.liked_post.size"){should eq(2)}
76
+ its("response.liked_count"){should eq(2)}
77
+ its("response.liked_post.first.blog_name"){should eq("blog1")}
78
+ its("response.liked_post.last.blog_name"){should eq("blog2")}
79
+ end
80
+ end
81
+
82
+ describe "#following" do
83
+
84
+ before do
85
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/user\/following*/).to_return(:status => 200, :body => fixture('following.json'), :headers => {"Content-Type" => "application/json"})
86
+ end
87
+
88
+ context "making request" do
89
+ it "should make request to correct url" do
90
+ client.stubs(:get).returns('')
91
+ client.expects(:get).with{ |arg| arg =~ /\/user\/following/}.returns('')
92
+ client.following
93
+ end
94
+ end
95
+
96
+ context "required params present" do
97
+ subject { client.following}
98
+ it { should_not be_nil }
99
+ its("response.blogs.size"){should eq(2)}
100
+ its("response.total_blogs"){should eq(2)}
101
+ its("response.blogs.first.name"){should eq("david")}
102
+ its("response.blogs.last.name"){should eq("matthew")}
103
+ end
104
+ end
105
+
106
+ describe "#follow" do
107
+
108
+ context "making request" do
109
+ it "should make request to correct url" do
110
+ client.stubs(:post).returns('')
111
+ client.expects(:post).with{ |arg| arg =~ /\/user\/follow/}.returns('')
112
+ client.follow('test.tumblr.com')
113
+ end
114
+ end
115
+
116
+ end
117
+
118
+ describe "#unfollow" do
119
+
120
+ context "making request" do
121
+ it "should make request to correct url" do
122
+ client.stubs(:post).returns('')
123
+ client.expects(:post).with{ |arg| arg =~ /\/user\/unfollow/}.returns('')
124
+ client.unfollow('test.tumblr.com')
125
+ end
126
+ end
127
+
128
+ end
129
+
130
+ describe "#like" do
131
+
132
+ context "making request" do
133
+ it "should make request to correct url" do
134
+ client.stubs(:post).returns('')
135
+ client.expects(:post).with{ |arg| arg =~ /\/user\/like/}.returns('')
136
+ client.like('1234567', 'abcdf')
137
+ end
138
+ end
139
+
140
+ end
141
+
142
+ describe "#unlike" do
143
+
144
+ context "making request" do
145
+ it "should make request to correct url" do
146
+ client.stubs(:post).returns('')
147
+ client.expects(:post).with{ |arg| arg =~ /\/user\/unlike/}.returns('')
148
+ client.unlike('1234567', 'abcdf')
149
+ end
150
+ end
151
+
152
+ end
153
+ end
154
+
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tumblr::Client do
4
+ context "creating new client" do
5
+ subject do
6
+ Tumblr::Client.new do |client|
7
+ client.consumer_key = CONSUMER_KEY
8
+ client.consumer_secret = CONSUMER_SECRET
9
+ client.oauth_token = OAUTH_TOKEN
10
+ client.oauth_token_secret = OAUTH_TOKEN_SECRET
11
+ end
12
+ end
13
+ it {should_not be_nil}
14
+ its(:consumer_key){ should == CONSUMER_KEY }
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tumblr::Connection do
4
+ let(:client) { Tumblr::Client.new }
5
+
6
+ describe "#connection" do
7
+ subject { client.send(:connection) }
8
+ it { should be_an_instance_of(OAuth::AccessToken)}
9
+ its('consumer.options.values') { should include(Tumblr::API_ENDPOINT) }
10
+ end
11
+ end
@@ -0,0 +1,111 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tumblr::Request do
4
+
5
+ let(:client) { Tumblr::Client.new }
6
+
7
+ describe "#get" do
8
+
9
+ it "should call make_request " do
10
+ client.stubs(:make_request).returns('')
11
+ client.expects(:make_request).with(:get,'/blog/test.tumblr.com/info').returns('')
12
+ client.get('/blog/test.tumblr.com/info')
13
+ end
14
+ end
15
+
16
+ describe "#post" do
17
+
18
+ it "should call make_request " do
19
+ client.stubs(:make_request).returns('')
20
+ client.expects(:make_request).with(:post,'/blog/test.tumblr.com/info').returns('')
21
+ client.post('/blog/test.tumblr.com/info')
22
+ end
23
+ end
24
+
25
+ describe "#put" do
26
+
27
+ it "should call make_request " do
28
+ client.stubs(:make_request).returns('')
29
+ client.expects(:make_request).with(:put,'/blog/test.tumblr.com/info').returns('')
30
+ client.put('/blog/test.tumblr.com/info')
31
+ end
32
+ end
33
+
34
+ describe "#delete" do
35
+
36
+ it "should call make_request " do
37
+ client.stubs(:make_request).returns('')
38
+ client.expects(:make_request).with(:delete,'/blog/test.tumblr.com/info').returns('')
39
+ client.delete('/blog/test.tumblr.com/info')
40
+ end
41
+ end
42
+
43
+ describe "#make_request" do
44
+
45
+ context "error code was returned" do
46
+
47
+ context "400" do
48
+
49
+ before do
50
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 400, :body => '', :headers => {})
51
+ end
52
+ subject { client }
53
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::BadRequestError)}
54
+ end
55
+
56
+ context "401" do
57
+
58
+ before do
59
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 401, :body => '', :headers => {})
60
+ end
61
+ subject { client }
62
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::UnauthorizedError)}
63
+ end
64
+
65
+ context "403" do
66
+
67
+ before do
68
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 403, :body => '', :headers => {})
69
+ end
70
+ subject { client }
71
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::ForbiddenError)}
72
+ end
73
+
74
+ context "404" do
75
+
76
+ before do
77
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 404, :body => '', :headers => {})
78
+ end
79
+ subject { client }
80
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::NotFoundError)}
81
+ end
82
+
83
+ context "500" do
84
+
85
+ before do
86
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 500, :body => '', :headers => {})
87
+ end
88
+ subject { client }
89
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::InternalServerError)}
90
+ end
91
+
92
+ context "502" do
93
+
94
+ before do
95
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 502, :body => '', :headers => {})
96
+ end
97
+ subject { client }
98
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::BadGatewayError)}
99
+ end
100
+
101
+ context "503" do
102
+
103
+ before do
104
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 503, :body => '', :headers => {})
105
+ end
106
+ subject { client }
107
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::ServiceUnavailableError)}
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,100 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "tumblr"
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Max Golovnia"]
12
+ s.date = "2012-01-18"
13
+ s.description = "A Ruby wrapper for Tumblr REST API"
14
+ s.email = "mgolovnia@gmail.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ "Gemfile",
22
+ "Gemfile.lock",
23
+ "LICENSE.txt",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "lib/tumblr.rb",
28
+ "lib/tumblr/client.rb",
29
+ "lib/tumblr/client/blog.rb",
30
+ "lib/tumblr/client/user.rb",
31
+ "lib/tumblr/connection.rb",
32
+ "lib/tumblr/error.rb",
33
+ "lib/tumblr/request.rb",
34
+ "spec/fixtures/avatar.json",
35
+ "spec/fixtures/blog_info.json",
36
+ "spec/fixtures/dashboard.json",
37
+ "spec/fixtures/followers.json",
38
+ "spec/fixtures/following.json",
39
+ "spec/fixtures/image.jpg",
40
+ "spec/fixtures/likes.json",
41
+ "spec/fixtures/posts.json",
42
+ "spec/fixtures/test.avi",
43
+ "spec/fixtures/test.mp4",
44
+ "spec/fixtures/user_info.json",
45
+ "spec/spec_helper.rb",
46
+ "spec/tumblr/client/blog_spec.rb",
47
+ "spec/tumblr/client/user_spec.rb",
48
+ "spec/tumblr/client_spec.rb",
49
+ "spec/tumblr/connection_spec.rb",
50
+ "spec/tumblr/request_spec.rb"
51
+ ]
52
+ s.homepage = "http://github.com/mgolovnia/tumblr"
53
+ s.licenses = ["MIT"]
54
+ s.require_paths = ["lib"]
55
+ s.rubygems_version = "1.8.10"
56
+ s.summary = "A Ruby wrapper for Tumblr REST API"
57
+
58
+ if s.respond_to? :specification_version then
59
+ s.specification_version = 3
60
+
61
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
62
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
63
+ s.add_runtime_dependency(%q<oauth>, [">= 0"])
64
+ s.add_runtime_dependency(%q<hashie>, [">= 0"])
65
+ s.add_runtime_dependency(%q<rack>, [">= 0"])
66
+ s.add_development_dependency(%q<webmock>, [">= 0"])
67
+ s.add_development_dependency(%q<rspec>, [">= 0"])
68
+ s.add_development_dependency(%q<mocha>, [">= 0"])
69
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
70
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
71
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
72
+ s.add_development_dependency(%q<rcov>, [">= 0"])
73
+ else
74
+ s.add_dependency(%q<activesupport>, [">= 0"])
75
+ s.add_dependency(%q<oauth>, [">= 0"])
76
+ s.add_dependency(%q<hashie>, [">= 0"])
77
+ s.add_dependency(%q<rack>, [">= 0"])
78
+ s.add_dependency(%q<webmock>, [">= 0"])
79
+ s.add_dependency(%q<rspec>, [">= 0"])
80
+ s.add_dependency(%q<mocha>, [">= 0"])
81
+ s.add_dependency(%q<shoulda>, [">= 0"])
82
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
83
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
84
+ s.add_dependency(%q<rcov>, [">= 0"])
85
+ end
86
+ else
87
+ s.add_dependency(%q<activesupport>, [">= 0"])
88
+ s.add_dependency(%q<oauth>, [">= 0"])
89
+ s.add_dependency(%q<hashie>, [">= 0"])
90
+ s.add_dependency(%q<rack>, [">= 0"])
91
+ s.add_dependency(%q<webmock>, [">= 0"])
92
+ s.add_dependency(%q<rspec>, [">= 0"])
93
+ s.add_dependency(%q<mocha>, [">= 0"])
94
+ s.add_dependency(%q<shoulda>, [">= 0"])
95
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
96
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
97
+ s.add_dependency(%q<rcov>, [">= 0"])
98
+ end
99
+ end
100
+
metadata ADDED
@@ -0,0 +1,203 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tumblr-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Max Golovnia
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-18 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: &84594210 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *84594210
25
+ - !ruby/object:Gem::Dependency
26
+ name: oauth
27
+ requirement: &84572340 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *84572340
36
+ - !ruby/object:Gem::Dependency
37
+ name: hashie
38
+ requirement: &84568720 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *84568720
47
+ - !ruby/object:Gem::Dependency
48
+ name: rack
49
+ requirement: &84556030 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *84556030
58
+ - !ruby/object:Gem::Dependency
59
+ name: webmock
60
+ requirement: &84555520 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *84555520
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: &84554880 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *84554880
80
+ - !ruby/object:Gem::Dependency
81
+ name: mocha
82
+ requirement: &84553960 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *84553960
91
+ - !ruby/object:Gem::Dependency
92
+ name: shoulda
93
+ requirement: &84553350 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *84553350
102
+ - !ruby/object:Gem::Dependency
103
+ name: bundler
104
+ requirement: &84552690 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.0.0
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *84552690
113
+ - !ruby/object:Gem::Dependency
114
+ name: jeweler
115
+ requirement: &84552250 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ version: 1.6.4
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *84552250
124
+ - !ruby/object:Gem::Dependency
125
+ name: rcov
126
+ requirement: &84551740 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: *84551740
135
+ description: A Ruby wrapper for Tumblr API
136
+ email: mgolovnia@gmail.com
137
+ executables: []
138
+ extensions: []
139
+ extra_rdoc_files:
140
+ - LICENSE.txt
141
+ - README.rdoc
142
+ files:
143
+ - .document
144
+ - Gemfile
145
+ - Gemfile.lock
146
+ - LICENSE.txt
147
+ - README.rdoc
148
+ - Rakefile
149
+ - VERSION
150
+ - lib/tumblr.rb
151
+ - lib/tumblr/client.rb
152
+ - lib/tumblr/client/blog.rb
153
+ - lib/tumblr/client/user.rb
154
+ - lib/tumblr/connection.rb
155
+ - lib/tumblr/error.rb
156
+ - lib/tumblr/request.rb
157
+ - spec/fixtures/avatar.json
158
+ - spec/fixtures/blog_info.json
159
+ - spec/fixtures/dashboard.json
160
+ - spec/fixtures/followers.json
161
+ - spec/fixtures/following.json
162
+ - spec/fixtures/image.jpg
163
+ - spec/fixtures/likes.json
164
+ - spec/fixtures/posts.json
165
+ - spec/fixtures/test.avi
166
+ - spec/fixtures/test.mp4
167
+ - spec/fixtures/user_info.json
168
+ - spec/spec_helper.rb
169
+ - spec/tumblr/client/blog_spec.rb
170
+ - spec/tumblr/client/user_spec.rb
171
+ - spec/tumblr/client_spec.rb
172
+ - spec/tumblr/connection_spec.rb
173
+ - spec/tumblr/request_spec.rb
174
+ - tumblr.gemspec
175
+ homepage: http://github.com/mgolovnia/tumblr
176
+ licenses:
177
+ - MIT
178
+ post_install_message:
179
+ rdoc_options: []
180
+ require_paths:
181
+ - lib
182
+ required_ruby_version: !ruby/object:Gem::Requirement
183
+ none: false
184
+ requirements:
185
+ - - ! '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ segments:
189
+ - 0
190
+ hash: 37141661
191
+ required_rubygems_version: !ruby/object:Gem::Requirement
192
+ none: false
193
+ requirements:
194
+ - - ! '>='
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ requirements: []
198
+ rubyforge_project:
199
+ rubygems_version: 1.8.10
200
+ signing_key:
201
+ specification_version: 3
202
+ summary: A Ruby wrapper for Tumblr API
203
+ test_files: []