wordpress-client 0.0.6 → 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.
Files changed (46) hide show
  1. checksums.yaml +15 -0
  2. data/Rakefile +8 -0
  3. data/lib/faraday_middleware/gzip.rb +22 -0
  4. data/lib/wordpress-client.rb +2 -4
  5. data/lib/wordpress/api/comments.rb +6 -6
  6. data/lib/wordpress/api/me.rb +2 -2
  7. data/lib/wordpress/api/posts.rb +12 -12
  8. data/lib/wordpress/api/sites.rb +1 -1
  9. data/lib/wordpress/api/tests.rb +6 -6
  10. data/lib/wordpress/api/utils.rb +12 -14
  11. data/lib/wordpress/base.rb +24 -1
  12. data/lib/wordpress/client.rb +29 -31
  13. data/lib/wordpress/configuration.rb +1 -2
  14. data/lib/wordpress/errors.rb +10 -0
  15. data/lib/wordpress/object/array.rb +29 -0
  16. data/lib/wordpress/object/base.rb +94 -0
  17. data/lib/wordpress/object/comment.rb +11 -0
  18. data/lib/wordpress/object/comments.rb +8 -0
  19. data/lib/wordpress/object/meta_object.rb +62 -0
  20. data/lib/wordpress/{post.rb → object/post.rb} +6 -8
  21. data/lib/wordpress/object/posts.rb +8 -0
  22. data/lib/wordpress/object/site.rb +8 -0
  23. data/lib/wordpress/{test.rb → object/test.rb} +3 -3
  24. data/lib/wordpress/object/user.rb +8 -0
  25. data/lib/wordpress/ostruct.rb +28 -36
  26. data/lib/wordpress/request.rb +24 -0
  27. data/lib/wordpress/version.rb +2 -2
  28. data/spec/spec_helper.rb +13 -0
  29. data/spec/wordpress-client_spec.rb +20 -2
  30. data/spec/wordpress/base_spec.rb +54 -11
  31. data/spec/wordpress/client_spec.rb +50 -0
  32. data/spec/wordpress/object/base_spec.rb +56 -0
  33. data/spec/wordpress/ostruct_spec.rb +15 -9
  34. data/spec/wordpress/request_spec.rb +5 -0
  35. data/wordpress-client.gemspec +4 -3
  36. metadata +42 -38
  37. data/lib/wordpress/array.rb +0 -30
  38. data/lib/wordpress/comment.rb +0 -14
  39. data/lib/wordpress/comment_array.rb +0 -10
  40. data/lib/wordpress/like_array.rb +0 -9
  41. data/lib/wordpress/like_result.rb +0 -9
  42. data/lib/wordpress/object.rb +0 -34
  43. data/lib/wordpress/post_array.rb +0 -10
  44. data/lib/wordpress/site.rb +0 -9
  45. data/lib/wordpress/user.rb +0 -9
  46. data/spec/wordpress/object_spec.rb +0 -31
@@ -1,4 +1,54 @@
1
1
  require "spec_helper"
2
+ require 'faraday'
3
+ require 'wordpress/client'
4
+ require 'wordpress/request'
2
5
 
3
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
+
20
+ request = Wordpress::Request.new(:get, 'url', {})
21
+ client.call(request)
22
+ end
23
+
24
+ it "should call post request" do
25
+ req = Faraday::Request.new
26
+ req.stub(:headers).and_return({})
27
+ req.stub(:options).and_return({})
28
+ req.should_receive(:url).with(anything)
29
+ req.should_receive(:params=).with(anything)
30
+ req.should_receive(:body=).with(anything)
31
+ Faraday::Connection.any_instance.should_receive(:post).and_yield(req).and_return(Faraday::Response.new)
32
+
33
+ request = Wordpress::Request.new(:post, 'url', {}, {})
34
+ client.call(request)
35
+ end
36
+ end
37
+
38
+ context "with bearer_token_request option" do
39
+ it "should call get request" do
40
+ req = Faraday::Request.new
41
+ req.stub(:headers).and_return({})
42
+ req.headers.should_receive(:[]=).with('Authorization', 'Bearer something').once
43
+ req.headers.should_receive(:[]=).with(any_args).at_least(:once)
44
+ req.stub(:options).and_return({})
45
+ req.should_receive(:url).with(anything)
46
+ req.should_receive(:params=).with(anything)
47
+ Faraday::Connection.any_instance.should_receive(:get).and_yield(req).and_return(Faraday::Response.new)
48
+
49
+ request = Wordpress::Request.new(:get, 'url', {})
50
+ client.access_token = 'something'
51
+ client.call(request, :bearer_token_request => true)
52
+ end
53
+ end
4
54
  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
@@ -2,18 +2,17 @@ require "spec_helper"
2
2
  require 'wordpress/ostruct'
3
3
 
4
4
  describe Wordpress::OpenStruct do
5
- it 'should generate accessor method at initialization' do
5
+ it 'should not respond to known keys' do
6
6
  o = Wordpress::OpenStruct.new({:a => 1})
7
7
  o.should respond_to :a
8
- o.should_not respond_to :b
9
8
  end
10
9
 
11
10
  it 'should not respond to unknown keys' do
12
- o = Wordpress::OpenStruct.new({})
13
- o.should_not respond_to :a
14
- proc {
15
- o.a = 1
16
- }.should raise_error(NoMethodError)
11
+ o = Wordpress::OpenStruct.new({:a => 1})
12
+ o.should_not respond_to :b
13
+ expect {
14
+ o.b
15
+ }.to raise_error(NoMethodError)
17
16
  end
18
17
 
19
18
  it 'should work with accessor' do
@@ -25,8 +24,15 @@ describe Wordpress::OpenStruct do
25
24
 
26
25
  it 'should parse hash recursively' do
27
26
  o = Wordpress::OpenStruct.new({:a => {:b => {:c => :d}}})
28
- o.a.should be_an_instance_of(Wordpress::OpenStruct)
29
- o.a.b.should be_an_instance_of(Wordpress::OpenStruct)
27
+ o.a.should be_an(Wordpress::OpenStruct)
28
+ o.a.b.should be_an(Wordpress::OpenStruct)
30
29
  o.a.b.c.should == :d
31
30
  end
31
+
32
+ it 'should assign hash' do
33
+ o = Wordpress::OpenStruct.new({:a => 1})
34
+ o.a.should == 1
35
+ o.assign({:a => 2})
36
+ o.a.should == 2
37
+ end
32
38
  end
@@ -0,0 +1,5 @@
1
+ require "spec_helper"
2
+ require 'wordpress/request'
3
+
4
+ describe Wordpress::Request do
5
+ end
@@ -16,10 +16,11 @@ Gem::Specification.new do |s|
16
16
  s.require_paths = ["lib"]
17
17
  s.license = "MIT"
18
18
 
19
- s.add_runtime_dependency 'curb', '~> 0.8.4'
20
- s.add_runtime_dependency 'logger', '~> 1.2'
21
- s.add_runtime_dependency 'multi_json', '~> 1.7'
19
+ s.add_runtime_dependency 'faraday', '~> 0.8.8'
20
+ s.add_runtime_dependency 'logger', '>= 1.2'
21
+ s.add_runtime_dependency 'multi_json', '>= 1.7'
22
22
 
23
23
  s.add_development_dependency 'rspec'
24
+ s.add_development_dependency 'simplecov'
24
25
  s.add_development_dependency 'rake'
25
26
  end
metadata CHANGED
@@ -1,68 +1,60 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wordpress-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
5
- prerelease:
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Daisuke Taniwaki
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-08-14 00:00:00.000000000 Z
11
+ date: 2013-12-26 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: curb
14
+ name: faraday
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: 0.8.4
19
+ version: 0.8.8
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
29
- version: 0.8.4
26
+ version: 0.8.8
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: logger
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ~>
31
+ - - ! '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '1.2'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ~>
38
+ - - ! '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '1.2'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: multi_json
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ~>
45
+ - - ! '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '1.7'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ~>
52
+ - - ! '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '1.7'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rspec
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ! '>='
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,20 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
74
79
  requirements:
75
80
  - - ! '>='
76
81
  - !ruby/object:Gem::Version
@@ -78,7 +83,6 @@ dependencies:
78
83
  - !ruby/object:Gem::Dependency
79
84
  name: rake
80
85
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
86
  requirements:
83
87
  - - ! '>='
84
88
  - !ruby/object:Gem::Version
@@ -86,7 +90,6 @@ dependencies:
86
90
  type: :development
87
91
  prerelease: false
88
92
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
93
  requirements:
91
94
  - - ! '>='
92
95
  - !ruby/object:Gem::Version
@@ -104,6 +107,7 @@ files:
104
107
  - LICENSE
105
108
  - README.md
106
109
  - Rakefile
110
+ - lib/faraday_middleware/gzip.rb
107
111
  - lib/wordpress-client.rb
108
112
  - lib/wordpress/api.rb
109
113
  - lib/wordpress/api/comments.rb
@@ -112,60 +116,60 @@ files:
112
116
  - lib/wordpress/api/sites.rb
113
117
  - lib/wordpress/api/tests.rb
114
118
  - lib/wordpress/api/utils.rb
115
- - lib/wordpress/array.rb
116
119
  - lib/wordpress/base.rb
117
120
  - lib/wordpress/client.rb
118
- - lib/wordpress/comment.rb
119
- - lib/wordpress/comment_array.rb
120
121
  - lib/wordpress/configuration.rb
121
122
  - lib/wordpress/errors.rb
122
- - lib/wordpress/like_array.rb
123
- - lib/wordpress/like_result.rb
124
- - lib/wordpress/object.rb
123
+ - lib/wordpress/object/array.rb
124
+ - lib/wordpress/object/base.rb
125
+ - lib/wordpress/object/comment.rb
126
+ - lib/wordpress/object/comments.rb
127
+ - lib/wordpress/object/meta_object.rb
128
+ - lib/wordpress/object/post.rb
129
+ - lib/wordpress/object/posts.rb
130
+ - lib/wordpress/object/site.rb
131
+ - lib/wordpress/object/test.rb
132
+ - lib/wordpress/object/user.rb
125
133
  - lib/wordpress/ostruct.rb
126
- - lib/wordpress/post.rb
127
- - lib/wordpress/post_array.rb
128
- - lib/wordpress/site.rb
129
- - lib/wordpress/test.rb
130
- - lib/wordpress/user.rb
134
+ - lib/wordpress/request.rb
131
135
  - lib/wordpress/version.rb
132
136
  - spec/spec_helper.rb
133
137
  - spec/wordpress-client_spec.rb
134
138
  - spec/wordpress/base_spec.rb
135
139
  - spec/wordpress/client_spec.rb
136
- - spec/wordpress/object_spec.rb
140
+ - spec/wordpress/object/base_spec.rb
137
141
  - spec/wordpress/ostruct_spec.rb
142
+ - spec/wordpress/request_spec.rb
138
143
  - wordpress-client.gemspec
139
144
  homepage: https://github.com/dtaniwaki/wordpress-client
140
145
  licenses:
141
146
  - MIT
147
+ metadata: {}
142
148
  post_install_message:
143
149
  rdoc_options: []
144
150
  require_paths:
145
151
  - lib
146
152
  required_ruby_version: !ruby/object:Gem::Requirement
147
- none: false
148
153
  requirements:
149
154
  - - ! '>='
150
155
  - !ruby/object:Gem::Version
151
156
  version: '0'
152
157
  required_rubygems_version: !ruby/object:Gem::Requirement
153
- none: false
154
158
  requirements:
155
159
  - - ! '>='
156
160
  - !ruby/object:Gem::Version
157
161
  version: '0'
158
162
  requirements: []
159
163
  rubyforge_project:
160
- rubygems_version: 1.8.25
164
+ rubygems_version: 2.1.8
161
165
  signing_key:
162
- specification_version: 3
166
+ specification_version: 4
163
167
  summary: Wordpress API Wrapper.
164
168
  test_files:
165
169
  - spec/spec_helper.rb
166
170
  - spec/wordpress-client_spec.rb
167
171
  - spec/wordpress/base_spec.rb
168
172
  - spec/wordpress/client_spec.rb
169
- - spec/wordpress/object_spec.rb
173
+ - spec/wordpress/object/base_spec.rb
170
174
  - spec/wordpress/ostruct_spec.rb
171
- has_rdoc:
175
+ - spec/wordpress/request_spec.rb
@@ -1,30 +0,0 @@
1
- require 'wordpress/object'
2
-
3
- module Wordpress
4
- class Array < Wordpress::Object
5
- def_delegators :@posts, :method_missing, :respond_to_missing?
6
- class << self
7
- def array_delegator(name)
8
- class_eval <<-EOS
9
- private
10
-
11
- def array_delegator
12
- #{name}
13
- end
14
- EOS
15
- end
16
- end
17
-
18
- def respond_to_missing?(method_name, include_private = false)
19
- array_delegator.respod_to?(method_name, include_private)
20
- end
21
-
22
- def method_missing(method_name, *arguments, &block)
23
- if array_delegator.respond_to?(method_name)
24
- array_delegator.send(method_name, *arguments, &block)
25
- else
26
- super
27
- end
28
- end
29
- end
30
- end
@@ -1,14 +0,0 @@
1
- require 'wordpress/object'
2
- require 'wordpress/user'
3
- require 'wordpress/post'
4
- require 'wordpress/ostruct'
5
-
6
- module Wordpress
7
- class Comment < Wordpress::Object
8
- attr_parameter :id, :url, :short_url, :content, :status, :parent, :string
9
- attr_parameter :date, :as => lambda { |t| DateTime.iso8601(t) }
10
- attr_parameter :post, :as => Wordpress::Post
11
- attr_parameter :author, :as => Wordpress::User
12
- attr_parameter :meta, :as => Wordpress::OpenStruct
13
- end
14
- end
@@ -1,10 +0,0 @@
1
- require 'wordpress/array'
2
- require 'wordpress/comment'
3
-
4
- module Wordpress
5
- class CommentArray < Wordpress::Array
6
- attr_parameter :found
7
- attr_parameter :comments, :as => lambda { |array| array.nil? ? [] : array.map { |v| Wordpress::Comment.new(v) } }
8
- array_delegator :@comments
9
- end
10
- end
@@ -1,9 +0,0 @@
1
- require 'wordpress/array'
2
-
3
- module Wordpress
4
- class LikeArray < Wordpress::Array
5
- attr_parameter :found, :i_like
6
- attr_parameter :likes, :as => lambda { |array| array.nil? ? [] : array.map { |v| Wordpress::User.new(v) } }
7
- array_delegator :@likes
8
- end
9
- end