ct_wordpress-client 0.2.8 → 0.2.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +15 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +24 -0
  4. data/.travis.yml +8 -0
  5. data/CONTRIBUTING.md +16 -0
  6. data/Gemfile +3 -0
  7. data/LICENSE +20 -0
  8. data/README.md +80 -0
  9. data/Rakefile +5 -0
  10. data/lib/faraday_middleware/gzip.rb +22 -0
  11. data/lib/wordpress-client.rb +43 -0
  12. data/lib/wordpress/api.rb +62 -0
  13. data/lib/wordpress/api/comments.rb +48 -0
  14. data/lib/wordpress/api/follow.rb +20 -0
  15. data/lib/wordpress/api/freshly_pressed.rb +10 -0
  16. data/lib/wordpress/api/me.rb +18 -0
  17. data/lib/wordpress/api/media.rb +15 -0
  18. data/lib/wordpress/api/notifications.rb +25 -0
  19. data/lib/wordpress/api/oauth.rb +22 -0
  20. data/lib/wordpress/api/posts.rb +79 -0
  21. data/lib/wordpress/api/sites.rb +12 -0
  22. data/lib/wordpress/api/taxonomy.rb +45 -0
  23. data/lib/wordpress/api/tests.rb +25 -0
  24. data/lib/wordpress/base.rb +51 -0
  25. data/lib/wordpress/client.rb +68 -0
  26. data/lib/wordpress/configuration.rb +6 -0
  27. data/lib/wordpress/errors.rb +25 -0
  28. data/lib/wordpress/object/array.rb +30 -0
  29. data/lib/wordpress/object/base.rb +94 -0
  30. data/lib/wordpress/object/comment.rb +11 -0
  31. data/lib/wordpress/object/comments.rb +8 -0
  32. data/lib/wordpress/object/media.rb +7 -0
  33. data/lib/wordpress/object/meta_object.rb +65 -0
  34. data/lib/wordpress/object/oauth.rb +7 -0
  35. data/lib/wordpress/object/post.rb +10 -0
  36. data/lib/wordpress/object/posts.rb +8 -0
  37. data/lib/wordpress/object/site.rb +8 -0
  38. data/lib/wordpress/object/test.rb +7 -0
  39. data/lib/wordpress/object/user.rb +8 -0
  40. data/lib/wordpress/ostruct.rb +64 -0
  41. data/lib/wordpress/request.rb +29 -0
  42. data/lib/wordpress/version.rb +14 -0
  43. data/spec/spec_helper.rb +15 -0
  44. data/spec/wordpress-client_spec.rb +25 -0
  45. data/spec/wordpress/api_spec.rb +90 -0
  46. data/spec/wordpress/base_spec.rb +63 -0
  47. data/spec/wordpress/client_spec.rb +91 -0
  48. data/spec/wordpress/object/base_spec.rb +56 -0
  49. data/spec/wordpress/object/meta_object_spec.rb +20 -0
  50. data/spec/wordpress/ostruct_spec.rb +58 -0
  51. data/spec/wordpress/request_spec.rb +15 -0
  52. data/wordpress-client.gemspec +26 -0
  53. metadata +158 -90
@@ -0,0 +1,91 @@
1
+ require "spec_helper"
2
+ require 'faraday'
3
+ require 'wordpress/client'
4
+ require 'wordpress/request'
5
+
6
+ describe Wordpress::Client do
7
+ subject :client do
8
+ Wordpress::Client.new
9
+ end
10
+
11
+ context do
12
+ it "should call get request" do
13
+ req = Faraday::Request.new
14
+ req.stub(:headers).and_return({})
15
+ req.stub(:options).and_return({})
16
+ req.should_receive(:url).with(anything)
17
+ req.should_receive(:params=).with(anything)
18
+ Faraday::Connection.any_instance.should_receive(:get).and_yield(req).and_return(Faraday::Response.new)
19
+ Faraday::Response.any_instance.stub(:body).and_return('{}')
20
+
21
+ request = Wordpress::Request.new(:get, 'url', {})
22
+ client.call(request)
23
+ end
24
+
25
+ it "should call post request" do
26
+ req = Faraday::Request.new
27
+ req.stub(:headers).and_return({})
28
+ req.stub(:options).and_return({})
29
+ req.should_receive(:url).with(anything)
30
+ req.should_receive(:params=).with(anything)
31
+ req.should_receive(:body=).with(anything)
32
+ Faraday::Connection.any_instance.should_receive(:post).and_yield(req).and_return(Faraday::Response.new)
33
+ Faraday::Response.any_instance.stub(:body).and_return('{}')
34
+
35
+ request = Wordpress::Request.new(:post, 'url', {}, {})
36
+ client.call(request)
37
+ end
38
+
39
+ it "should raise error for null response" do
40
+ request = Wordpress::Request.new(:get, 'url', {}, {})
41
+ Faraday::Connection.any_instance.stub(:get).and_return(Faraday::Response.new)
42
+
43
+ Faraday::Response.any_instance.stub(:body).and_return('null')
44
+ expect {
45
+ client.call(request)
46
+ }.to raise_error(Wordpress::ResponseError)
47
+ end
48
+
49
+ it "should raise error for invalid response" do
50
+ request = Wordpress::Request.new(:get, 'url', {}, {})
51
+ Faraday::Connection.any_instance.stub(:get).and_return(Faraday::Response.new)
52
+
53
+ Faraday::Response.any_instance.stub(:body).and_return('/$%@#')
54
+ expect {
55
+ client.call(request)
56
+ }.to raise_error(Wordpress::ResponseError)
57
+ end
58
+ end
59
+
60
+ context "with bearer_token_request option" do
61
+ it "should call get request with Authorization header" do
62
+ req = Faraday::Request.new
63
+ req.stub(:headers).and_return({})
64
+ req.headers.should_receive(:[]=).with('Authorization', 'Bearer something').once
65
+ req.headers.should_receive(:[]=).with(any_args).at_least(:once)
66
+ req.stub(:options).and_return({})
67
+ req.should_receive(:url).with(anything)
68
+ req.should_receive(:params=).with(anything)
69
+ Faraday::Connection.any_instance.should_receive(:get).and_yield(req).and_return(Faraday::Response.new)
70
+ Faraday::Response.any_instance.stub(:body).and_return('{}')
71
+
72
+ request = Wordpress::Request.new(:get, 'url', {})
73
+ client.access_token = 'something'
74
+ client.call(request, :bearer_token_request => true)
75
+ end
76
+
77
+ it "should call get request without Authorization header for no access_token" do
78
+ req = Faraday::Request.new
79
+ req.stub(:headers).and_return({})
80
+ req.headers.should_not_receive(:[]=).with('Authorization', 'Bearer something')
81
+ req.stub(:options).and_return({})
82
+ req.should_receive(:url).with(anything)
83
+ req.should_receive(:params=).with(anything)
84
+ Faraday::Connection.any_instance.should_receive(:get).and_yield(req).and_return(Faraday::Response.new)
85
+ Faraday::Response.any_instance.stub(:body).and_return('{}')
86
+
87
+ request = Wordpress::Request.new(:get, 'url', {})
88
+ client.call(request, :bearer_token_request => true)
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,56 @@
1
+ require "spec_helper"
2
+ require 'wordpress/object/base'
3
+
4
+ describe Wordpress::Object::Base do
5
+ describe "attr_parameter class method" do
6
+ it "should add parameter" do
7
+ klass = Class.new(Wordpress::Object::Base)
8
+ klass.send(:options).should_receive(:[]=).with('id', anything)
9
+ klass.class_eval do
10
+ attr_parameter :id
11
+ end
12
+ end
13
+
14
+ it "should keep parameters per class" do
15
+ klass = Class.new(Wordpress::Object::Base)
16
+ klass.class_eval do
17
+ attr_parameter :id1
18
+ end
19
+ klass.options.should include('id1')
20
+ klass.options.should_not include('id2')
21
+
22
+ klass = Class.new(Wordpress::Object::Base)
23
+ klass.class_eval do
24
+ attr_parameter :id2
25
+ end
26
+ klass.options.should_not include('id1')
27
+ klass.options.should include('id2')
28
+ end
29
+ end
30
+
31
+ subject :base do
32
+ Class.new(Wordpress::Object::Base) {
33
+ attr_parameter :foo
34
+ }.new
35
+ end
36
+
37
+ it "should delegate [] method to get_object" do
38
+ base.should_receive(:get_object).with('foo').once
39
+ base[:foo]
40
+ end
41
+
42
+ it "should get object by getter" do
43
+ base.should_receive(:get_object).with('foo').once
44
+ base.foo
45
+ end
46
+
47
+ it "should return nil for unknown method" do
48
+ base[:bar].should be_nil
49
+ end
50
+
51
+ it "should raise no method error for unknown method" do
52
+ expect {
53
+ base.bar
54
+ }.to raise_error(NoMethodError)
55
+ end
56
+ end
@@ -0,0 +1,20 @@
1
+ require "spec_helper"
2
+ require 'wordpress/object/meta_object'
3
+
4
+ describe Wordpress::Object::MetaObject do
5
+ subject { Wordpress::Object::MetaObject.new }
6
+ describe "#save" do
7
+ it "raise NotImplementedError" do
8
+ proc {
9
+ subject.save
10
+ }.should raise_error(NotImplementedError)
11
+ end
12
+ end
13
+ describe "#delete" do
14
+ it "raise NotImplementedError" do
15
+ proc {
16
+ subject.delete
17
+ }.should raise_error(NotImplementedError)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,58 @@
1
+ require "spec_helper"
2
+ require 'wordpress/ostruct'
3
+
4
+ describe Wordpress::OpenStruct do
5
+ it 'should not respond to known keys' do
6
+ o = Wordpress::OpenStruct.new({:a => 1})
7
+ o.should respond_to :a
8
+ end
9
+
10
+ it 'should not respond to unknown keys' do
11
+ o = Wordpress::OpenStruct.new({:a => 1})
12
+ o.should_not respond_to :b
13
+ expect {
14
+ o.b
15
+ }.to raise_error(NoMethodError)
16
+ end
17
+
18
+ it 'should work with accessor' do
19
+ o = Wordpress::OpenStruct.new({:a => 1})
20
+ o.a.should == 1
21
+ o.a = 2
22
+ o.a.should == 2
23
+ end
24
+
25
+ it 'should work with []' do
26
+ o = Wordpress::OpenStruct.new({:a => 1})
27
+ o[:a].should == 1
28
+ o[:a] = 2
29
+ o[:a].should == 2
30
+ o['a'].should == 2
31
+ o['a'] = 3
32
+ o['a'].should == 3
33
+ end
34
+
35
+ it 'should parse hash recursively' do
36
+ o = Wordpress::OpenStruct.new({:a => {:b => {:c => :d}}})
37
+ o.a.should be_an(Wordpress::OpenStruct)
38
+ o.a.b.should be_an(Wordpress::OpenStruct)
39
+ o.a.b.c.should == :d
40
+ end
41
+
42
+ it 'should assign hash' do
43
+ o = Wordpress::OpenStruct.new({:a => 1})
44
+ o.a.should == 1
45
+ o.assign({:a => 2})
46
+ o.a.should == 2
47
+ end
48
+
49
+ it 'should return custom string for to_s method' do
50
+ o = Wordpress::OpenStruct.new({:a => {:b => 1}})
51
+ o.to_s.should == "#<Wordpress::OpenStruct a=#<Wordpress::OpenStruct b=1>>"
52
+ end
53
+
54
+ it 'should return original hash' do
55
+ o = Wordpress::OpenStruct.new({:a => 1})
56
+ o.to_hash.should == {'a' => 1}
57
+ end
58
+ end
@@ -0,0 +1,15 @@
1
+ require "spec_helper"
2
+ require 'wordpress/request'
3
+
4
+ describe Wordpress::Request do
5
+ let :request do
6
+ Wordpress::Request.new(:get, 'url')
7
+ end
8
+
9
+ it "should deep clone" do
10
+ new_request = request.dup
11
+ new_request.should_not equal request
12
+ new_request.params.should_not equal request.params
13
+ new_request.body.should_not equal request.body
14
+ end
15
+ end
@@ -0,0 +1,26 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require "wordpress/version"
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "ct_wordpress-client"
6
+ s.version = Wordpress::Version
7
+ s.authors = [" "]
8
+ s.email = [" "]
9
+ s.homepage = "https://github.com/coupontom/wordpress-client"
10
+ s.summary = 'Wordpress API Wrapper.'
11
+ s.description = 'Wordpress API Wrapper.'
12
+
13
+ s.files = `git ls-files`.split("\n")
14
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
+ s.require_paths = ["lib"]
17
+ s.license = "MIT"
18
+
19
+ s.add_runtime_dependency 'faraday', '>= 0.8'
20
+ s.add_runtime_dependency 'logger', '>= 1.2'
21
+ s.add_runtime_dependency 'multi_json', '>= 1.7'
22
+
23
+ s.add_development_dependency 'rspec'
24
+ s.add_development_dependency 'rake'
25
+ s.add_development_dependency 'coveralls'
26
+ end
metadata CHANGED
@@ -1,120 +1,188 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ct_wordpress-client
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.2.8
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.10
6
5
  platform: ruby
7
- authors:
8
- - " "
6
+ authors:
7
+ - ! ' '
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
-
13
- date: 2015-10-17 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
11
+ date: 2015-10-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
16
14
  name: faraday
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0.8"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0.8'
24
20
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: logger
28
21
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
30
- none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "1.2"
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: logger
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '1.2'
35
34
  type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: multi_json
39
35
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "1.7"
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '1.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: multi_json
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '1.7'
46
48
  type: :runtime
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: rspec
50
49
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '1.7'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
57
62
  type: :development
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: rake
61
63
  prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
63
- none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
68
76
  type: :development
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: coveralls
72
77
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: "0"
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: coveralls
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
79
90
  type: :development
80
- version_requirements: *id006
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
81
97
  description: Wordpress API Wrapper.
82
- email:
83
- - " "
98
+ email:
99
+ - ! ' '
84
100
  executables: []
85
-
86
101
  extensions: []
87
-
88
102
  extra_rdoc_files: []
89
-
90
- files: []
91
-
103
+ files:
104
+ - .coveralls.yml
105
+ - .gitignore
106
+ - .travis.yml
107
+ - CONTRIBUTING.md
108
+ - Gemfile
109
+ - LICENSE
110
+ - README.md
111
+ - Rakefile
112
+ - lib/faraday_middleware/gzip.rb
113
+ - lib/wordpress-client.rb
114
+ - lib/wordpress/api.rb
115
+ - lib/wordpress/api/comments.rb
116
+ - lib/wordpress/api/follow.rb
117
+ - lib/wordpress/api/freshly_pressed.rb
118
+ - lib/wordpress/api/me.rb
119
+ - lib/wordpress/api/media.rb
120
+ - lib/wordpress/api/notifications.rb
121
+ - lib/wordpress/api/oauth.rb
122
+ - lib/wordpress/api/posts.rb
123
+ - lib/wordpress/api/sites.rb
124
+ - lib/wordpress/api/taxonomy.rb
125
+ - lib/wordpress/api/tests.rb
126
+ - lib/wordpress/base.rb
127
+ - lib/wordpress/client.rb
128
+ - lib/wordpress/configuration.rb
129
+ - lib/wordpress/errors.rb
130
+ - lib/wordpress/object/array.rb
131
+ - lib/wordpress/object/base.rb
132
+ - lib/wordpress/object/comment.rb
133
+ - lib/wordpress/object/comments.rb
134
+ - lib/wordpress/object/media.rb
135
+ - lib/wordpress/object/meta_object.rb
136
+ - lib/wordpress/object/oauth.rb
137
+ - lib/wordpress/object/post.rb
138
+ - lib/wordpress/object/posts.rb
139
+ - lib/wordpress/object/site.rb
140
+ - lib/wordpress/object/test.rb
141
+ - lib/wordpress/object/user.rb
142
+ - lib/wordpress/ostruct.rb
143
+ - lib/wordpress/request.rb
144
+ - lib/wordpress/version.rb
145
+ - spec/spec_helper.rb
146
+ - spec/wordpress-client_spec.rb
147
+ - spec/wordpress/api_spec.rb
148
+ - spec/wordpress/base_spec.rb
149
+ - spec/wordpress/client_spec.rb
150
+ - spec/wordpress/object/base_spec.rb
151
+ - spec/wordpress/object/meta_object_spec.rb
152
+ - spec/wordpress/ostruct_spec.rb
153
+ - spec/wordpress/request_spec.rb
154
+ - wordpress-client.gemspec
92
155
  homepage: https://github.com/coupontom/wordpress-client
93
- licenses:
156
+ licenses:
94
157
  - MIT
158
+ metadata: {}
95
159
  post_install_message:
96
160
  rdoc_options: []
97
-
98
- require_paths:
161
+ require_paths:
99
162
  - lib
100
- required_ruby_version: !ruby/object:Gem::Requirement
101
- none: false
102
- requirements:
103
- - - ">="
104
- - !ruby/object:Gem::Version
105
- version: "0"
106
- required_rubygems_version: !ruby/object:Gem::Requirement
107
- none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: "0"
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ! '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ! '>='
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
112
173
  requirements: []
113
-
114
174
  rubyforge_project:
115
- rubygems_version: 1.8.24
175
+ rubygems_version: 2.4.6
116
176
  signing_key:
117
- specification_version: 3
177
+ specification_version: 4
118
178
  summary: Wordpress API Wrapper.
119
- test_files: []
120
-
179
+ test_files:
180
+ - spec/spec_helper.rb
181
+ - spec/wordpress-client_spec.rb
182
+ - spec/wordpress/api_spec.rb
183
+ - spec/wordpress/base_spec.rb
184
+ - spec/wordpress/client_spec.rb
185
+ - spec/wordpress/object/base_spec.rb
186
+ - spec/wordpress/object/meta_object_spec.rb
187
+ - spec/wordpress/ostruct_spec.rb
188
+ - spec/wordpress/request_spec.rb