ct_wordpress-client 0.2.8 → 0.2.10

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 (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