wordpress-client 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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