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.
- checksums.yaml +15 -0
- data/Rakefile +8 -0
- data/lib/faraday_middleware/gzip.rb +22 -0
- data/lib/wordpress-client.rb +2 -4
- data/lib/wordpress/api/comments.rb +6 -6
- data/lib/wordpress/api/me.rb +2 -2
- data/lib/wordpress/api/posts.rb +12 -12
- data/lib/wordpress/api/sites.rb +1 -1
- data/lib/wordpress/api/tests.rb +6 -6
- data/lib/wordpress/api/utils.rb +12 -14
- data/lib/wordpress/base.rb +24 -1
- data/lib/wordpress/client.rb +29 -31
- data/lib/wordpress/configuration.rb +1 -2
- data/lib/wordpress/errors.rb +10 -0
- data/lib/wordpress/object/array.rb +29 -0
- data/lib/wordpress/object/base.rb +94 -0
- data/lib/wordpress/object/comment.rb +11 -0
- data/lib/wordpress/object/comments.rb +8 -0
- data/lib/wordpress/object/meta_object.rb +62 -0
- data/lib/wordpress/{post.rb → object/post.rb} +6 -8
- data/lib/wordpress/object/posts.rb +8 -0
- data/lib/wordpress/object/site.rb +8 -0
- data/lib/wordpress/{test.rb → object/test.rb} +3 -3
- data/lib/wordpress/object/user.rb +8 -0
- data/lib/wordpress/ostruct.rb +28 -36
- data/lib/wordpress/request.rb +24 -0
- data/lib/wordpress/version.rb +2 -2
- data/spec/spec_helper.rb +13 -0
- data/spec/wordpress-client_spec.rb +20 -2
- data/spec/wordpress/base_spec.rb +54 -11
- data/spec/wordpress/client_spec.rb +50 -0
- data/spec/wordpress/object/base_spec.rb +56 -0
- data/spec/wordpress/ostruct_spec.rb +15 -9
- data/spec/wordpress/request_spec.rb +5 -0
- data/wordpress-client.gemspec +4 -3
- metadata +42 -38
- data/lib/wordpress/array.rb +0 -30
- data/lib/wordpress/comment.rb +0 -14
- data/lib/wordpress/comment_array.rb +0 -10
- data/lib/wordpress/like_array.rb +0 -9
- data/lib/wordpress/like_result.rb +0 -9
- data/lib/wordpress/object.rb +0 -34
- data/lib/wordpress/post_array.rb +0 -10
- data/lib/wordpress/site.rb +0 -9
- data/lib/wordpress/user.rb +0 -9
- data/spec/wordpress/object_spec.rb +0 -31
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MjczN2E1ZjNkODBlN2NjYjBiYWMyZmI0OWY0MmU3N2IxZWY1OGUzNQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YWI2YzI2YzBhZTJmNDNhZjc1MTQ1YzU4OTE5NGNhZmUyODE2ZmFiNA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NDQ5Y2YzYjAzMWZlMDNlYzJiZDgwMWJjODcyM2VmZjdmMGMxZmI1OTdmOWZk
|
10
|
+
YmNmZjBlMzEwODM3ZmMxNjJiYTZjZDcyOGJmMTkwMjEyYjgxM2E5YmQxNzU0
|
11
|
+
YTk0ODc5NjY2MzAyOGI4ZDQ0NTI4MmMyNzc5ZTUxMDM3NmVmMTQ=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MWYzNmQ4YTI4OTZiYmRiNTE2NTc5Y2ExNGY0ZDBhZTZkNzUzYjZkNTllMmRk
|
14
|
+
M2IzYmFhZGMxMGIwOGY4MDc0OTlkMDFlMjRiNDM0YzNkOTQyOTljNzM0NDU5
|
15
|
+
YTk0ODZkNDc2YzlkYzdkNDdmZmExY2VjNTc5ZDIxODEwZTllNDU=
|
data/Rakefile
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'zlib'
|
3
|
+
|
4
|
+
module FaradayMiddleware
|
5
|
+
class Gzip < Faraday::Response::Middleware
|
6
|
+
|
7
|
+
def on_complete(env)
|
8
|
+
encoding = env[:response_headers]['content-encoding'].to_s.downcase
|
9
|
+
case encoding
|
10
|
+
when 'gzip'
|
11
|
+
env[:body] = Zlib::GzipReader.new(StringIO.new(env[:body]), encoding: 'ASCII-8BIT').read
|
12
|
+
env[:response_headers].delete('content-encoding')
|
13
|
+
when 'deflate'
|
14
|
+
env[:body] = Zlib::Inflate.inflate(env[:body])
|
15
|
+
env[:response_headers].delete('content-encoding')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
Faraday::Response.register_middleware :gzip => FaradayMiddleware::Gzip
|
data/lib/wordpress-client.rb
CHANGED
@@ -7,32 +7,32 @@ module Wordpress
|
|
7
7
|
|
8
8
|
def get_comments(site, params = {})
|
9
9
|
validate_params! params, [:context, :type, :status], :search
|
10
|
-
object_from_response Wordpress::
|
10
|
+
object_from_response Wordpress::Object::Comments.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/comments", params)
|
11
11
|
end
|
12
12
|
|
13
13
|
def get_post_comments(site, post_id, params = {})
|
14
14
|
validate_params! params, [:context]
|
15
|
-
object_from_response Wordpress::
|
15
|
+
object_from_response Wordpress::Object::Comments.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts/#{post_id}/replies", params)
|
16
16
|
end
|
17
17
|
|
18
18
|
def get_comment(site, comment_id, params = {})
|
19
19
|
validate_params! params, [:context]
|
20
|
-
object_from_response Wordpress::Comment, "/sites/#{site}/comments/#{comment_id}",
|
20
|
+
object_from_response Wordpress::Object::Comment.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/comments/#{comment_id}", params)
|
21
21
|
end
|
22
22
|
|
23
23
|
def update_comment(site, comment_id, data, params = {})
|
24
24
|
validate_params! params, [:context]
|
25
|
-
object_from_response Wordpress::Comment, "/sites/#{site}/comments/#{comment_id}",
|
25
|
+
object_from_response Wordpress::Object::Comment.new(self), Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/comments/#{comment_id}", params, data)
|
26
26
|
end
|
27
27
|
|
28
28
|
def create_comment(site, post_id, data, params = {})
|
29
29
|
validate_params! params, [:context]
|
30
|
-
object_from_response Wordpress::Comment, "/sites/#{site}/posts/#{post_id}/replies/new",
|
30
|
+
object_from_response Wordpress::Object::Comment.new(self), Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/posts/#{post_id}/replies/new", params, data)
|
31
31
|
end
|
32
32
|
|
33
33
|
def delete_comment(site, comment_id, params = {})
|
34
34
|
validate_params! params, [:context]
|
35
|
-
object_from_response Wordpress::Comment, "/sites/#{site}/comments/#{comment_id}/delete",
|
35
|
+
object_from_response Wordpress::Object::Comment.new(self), Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/comments/#{comment_id}/delete", params)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
data/lib/wordpress/api/me.rb
CHANGED
@@ -7,12 +7,12 @@ module Wordpress
|
|
7
7
|
|
8
8
|
def me(params = {})
|
9
9
|
validate_params! params
|
10
|
-
object_from_response Wordpress::User, "/me",
|
10
|
+
object_from_response Wordpress::Object::User.new(self), Wordpress::Request.new(:get, "/rest/v1/me", params)
|
11
11
|
end
|
12
12
|
|
13
13
|
def get_my_likes(params = {})
|
14
14
|
validate_params! params
|
15
|
-
object_from_response Wordpress::
|
15
|
+
object_from_response Wordpress::Ostruct.new, Wordpress::Request.new(:get, "/rest/v1/me/likes", params)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
data/lib/wordpress/api/posts.rb
CHANGED
@@ -7,62 +7,62 @@ module Wordpress
|
|
7
7
|
|
8
8
|
def get_posts(site, params = {})
|
9
9
|
validate_params! params, [:context, :tag, :category, :type, :status, :sticky, :author, :search, :meta_key, :meta_value], :search
|
10
|
-
object_from_response Wordpress::
|
10
|
+
object_from_response Wordpress::Object::Posts.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts", params)
|
11
11
|
end
|
12
12
|
|
13
13
|
def get_post(site, post_id, params = {})
|
14
14
|
validate_params! params, [:context]
|
15
|
-
object_from_response Wordpress::Post, "/sites/#{site}/posts/#{post_id}",
|
15
|
+
object_from_response Wordpress::Object::Post.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts/#{post_id}", params)
|
16
16
|
end
|
17
17
|
|
18
18
|
def update_post(site, post_id, data, params = {})
|
19
19
|
validate_params! params, [:context]
|
20
|
-
object_from_response Wordpress::Post, "/sites/#{site}/posts/#{post_id}",
|
20
|
+
object_from_response Wordpress::Object::Post.new(self), Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/posts/#{post_id}", params, data)
|
21
21
|
end
|
22
22
|
|
23
23
|
def get_post_by_slug(site, post_slug, params = {})
|
24
24
|
validate_params! params, [:context]
|
25
|
-
object_from_response Wordpress::Post, "/sites/#{site}/posts/slug:#{post_slug}",
|
25
|
+
object_from_response Wordpress::Object::Post.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts/slug:#{post_slug}", params)
|
26
26
|
end
|
27
27
|
|
28
28
|
def create_post(site, post_id, data, params = {})
|
29
29
|
validate_params! params, [:context]
|
30
|
-
object_from_response Wordpress::Post, "/sites/#{site}/posts/new",
|
30
|
+
object_from_response Wordpress::Object::Post.new(self), Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/posts/new", params, data)
|
31
31
|
end
|
32
32
|
|
33
33
|
def delete_post(site, post_id, params = {})
|
34
34
|
validate_params! params, [:context]
|
35
|
-
object_from_response Wordpress::Post, "/sites/#{site}/posts/#{post_id}/delete",
|
35
|
+
object_from_response Wordpress::Object::Post.new(self), Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/posts/#{post_id}/delete", params)
|
36
36
|
end
|
37
37
|
|
38
38
|
def get_likes(site, post_id, params = {})
|
39
39
|
validate_params! params
|
40
|
-
object_from_response Wordpress::
|
40
|
+
object_from_response Wordpress::Ostruct.new, Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts/#{post_id}/likes", params)
|
41
41
|
end
|
42
42
|
|
43
43
|
def create_like(site, post_id, params = {})
|
44
44
|
validate_params! params
|
45
|
-
object_from_response Wordpress::
|
45
|
+
object_from_response Wordpress::Ostruct.new, Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/posts/#{post_id}/likes/new", params)
|
46
46
|
end
|
47
47
|
|
48
48
|
def delete_like(site, post_id, params = {})
|
49
49
|
validate_params! params
|
50
|
-
object_from_response Wordpress::
|
50
|
+
object_from_response Wordpress::Ostruct.new, Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/posts/#{post_id}/likes/mine/delete", params)
|
51
51
|
end
|
52
52
|
|
53
53
|
def get_like_status(site, post_id, params = {})
|
54
54
|
validate_params! params
|
55
|
-
object_from_response Wordpress::
|
55
|
+
object_from_response Wordpress::Ostruct.new, Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts/#{post_id}/likes/mine", params)
|
56
56
|
end
|
57
57
|
|
58
58
|
def get_reblog_status(site, post_id, params = {})
|
59
59
|
validate_params! params
|
60
|
-
object_from_response Wordpress::
|
60
|
+
object_from_response Wordpress::Ostruct.new, Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts/#{post_id}/reblogs/mine", params)
|
61
61
|
end
|
62
62
|
|
63
63
|
def create_reblog(site, post_id, data, params = {})
|
64
64
|
validate_params! params
|
65
|
-
object_from_response Wordpress::
|
65
|
+
object_from_response Wordpress::Ostruct.new, Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/posts/#{post_id}/reblogs/new", params, data)
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
data/lib/wordpress/api/sites.rb
CHANGED
@@ -7,7 +7,7 @@ module Wordpress
|
|
7
7
|
|
8
8
|
def get_site(site, params = {})
|
9
9
|
validate_params! params
|
10
|
-
object_from_response Wordpress::Site, "/sites/#{site}",
|
10
|
+
object_from_response Wordpress::Object::Site.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}", params)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
data/lib/wordpress/api/tests.rb
CHANGED
@@ -5,14 +5,14 @@ module Wordpress
|
|
5
5
|
module Tests
|
6
6
|
include Wordpress::API::Utils
|
7
7
|
|
8
|
-
def get_test(id,
|
9
|
-
|
10
|
-
object_from_response Wordpress::Test, "/test/#{id}",
|
8
|
+
def get_test(id, params = {})
|
9
|
+
validate_params! params, [:id, :default_string, :default_int, :boolean_whitelist_defaults_to_false, :boolean_whitelist_defaults_to_true, :string_whitelist_defaults_to_foo, :url, :datetime], :test
|
10
|
+
object_from_response Wordpress::Object::Test.new(self), Wordpress::Request.new(:get, "/rest/v1/test/#{id}", params)
|
11
11
|
end
|
12
12
|
|
13
|
-
def post_test(id,
|
14
|
-
|
15
|
-
object_from_response Wordpress::Test, "/test/#{id}",
|
13
|
+
def post_test(id, params = {})
|
14
|
+
validate_params! params, [:id, :default_string, :default_int, :boolean_whitelist_defaults_to_false, :boolean_whitelist_defaults_to_true, :string_whitelist_defaults_to_foo, :url, :datetime], :test
|
15
|
+
object_from_response Wordpress::Object::Test.new(self), Wordpress::Request.new(:post, "/rest/v1/test/#{id}", params)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
data/lib/wordpress/api/utils.rb
CHANGED
@@ -1,33 +1,31 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'wordpress/errors'
|
3
3
|
require 'wordpress/ostruct'
|
4
|
-
|
5
|
-
require
|
6
|
-
|
7
|
-
require 'wordpress/post_array'
|
8
|
-
require 'wordpress/like_array'
|
9
|
-
require 'wordpress/comment'
|
10
|
-
require 'wordpress/test'
|
4
|
+
Dir.glob(File.expand_path('../../object/*.rb', __FILE__)) do |path|
|
5
|
+
require path
|
6
|
+
end
|
11
7
|
|
12
8
|
module Wordpress
|
13
9
|
module API
|
14
10
|
module Utils
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
res = request(method, "/rest/v1#{path}", params, :bearer_token_request => true)
|
19
|
-
if res
|
11
|
+
def object_from_response(obj, request)
|
12
|
+
res = call(request, :bearer_token_request => true)
|
13
|
+
begin
|
20
14
|
json = MultiJson.load(res)
|
21
15
|
if json.nil? || json == ''
|
22
16
|
raise Wordpress::ResponseError
|
23
17
|
end
|
24
18
|
if !json['error'].nil?
|
25
|
-
raise Wordpress::ResponseError, json
|
19
|
+
raise Wordpress::ResponseError, json
|
26
20
|
end
|
27
|
-
|
21
|
+
obj.assign(json)
|
22
|
+
rescue MultiJson::LoadError => e
|
23
|
+
raise Wordpress::ResponseError, {'error' => e, 'message' => "Can not parse the response: #{res.inspect}"}
|
28
24
|
end
|
29
25
|
end
|
30
26
|
|
27
|
+
private
|
28
|
+
|
31
29
|
def validate_params!(params, valid_keys = [], type = nil)
|
32
30
|
valid_keys += [:http_envelope, :pretty, :callback] if type != :test
|
33
31
|
valid_keys += [:number, :offset, :page, :order, :order_by, :after, :before] if type == :search
|
data/lib/wordpress/base.rb
CHANGED
@@ -2,9 +2,12 @@ module Wordpress
|
|
2
2
|
class Base
|
3
3
|
extend Forwardable
|
4
4
|
|
5
|
-
def_delegators 'Wordpress
|
5
|
+
def_delegators 'Wordpress', :logger
|
6
|
+
def_delegators 'logger', :debug, :info, :warn, :error, :fatal
|
6
7
|
|
7
8
|
class << self
|
9
|
+
private
|
10
|
+
|
8
11
|
def attr_accessor(*args)
|
9
12
|
if args.size == 1 && args.first.is_a?(Hash)
|
10
13
|
args.first.each do |key, default|
|
@@ -19,6 +22,26 @@ module Wordpress
|
|
19
22
|
super
|
20
23
|
end
|
21
24
|
end
|
25
|
+
|
26
|
+
def class_attribute(*args)
|
27
|
+
args.each do |arg|
|
28
|
+
class_eval <<-EOS
|
29
|
+
class << self
|
30
|
+
def #{arg}
|
31
|
+
@#{arg}
|
32
|
+
end
|
33
|
+
|
34
|
+
def #{arg}=(v)
|
35
|
+
@#{arg} = v
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def #{arg}
|
40
|
+
self.class.#{arg}
|
41
|
+
end
|
42
|
+
EOS
|
43
|
+
end
|
44
|
+
end
|
22
45
|
end
|
23
46
|
|
24
47
|
def metaclass
|
data/lib/wordpress/client.rb
CHANGED
@@ -1,50 +1,48 @@
|
|
1
1
|
require 'wordpress/base'
|
2
|
+
require 'wordpress/request'
|
2
3
|
require 'wordpress/api'
|
3
|
-
require '
|
4
|
+
require 'faraday'
|
5
|
+
require 'faraday_middleware/gzip'
|
6
|
+
require 'multi_json'
|
4
7
|
|
5
8
|
module Wordpress
|
6
|
-
class Client <
|
9
|
+
class Client < Base
|
7
10
|
include Wordpress::API
|
8
11
|
|
9
12
|
attr_accessor :access_token
|
10
|
-
attr_accessor :end_point => "https://public-api.wordpress.com/"
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
def initialize
|
15
|
+
@conn = Faraday.new do |faraday|
|
16
|
+
faraday.use Faraday::Response::Logger, logger
|
17
|
+
faraday.request :url_encoded
|
18
|
+
faraday.response :gzip
|
19
|
+
faraday.adapter Faraday.default_adapter
|
20
|
+
end
|
21
|
+
end
|
19
22
|
|
20
|
-
|
21
|
-
Request
|
22
|
-
Method : #{method}
|
23
|
-
Path : #{uri}
|
24
|
-
Parameters : #{request_params.inspect}
|
25
|
-
EOS
|
23
|
+
def call(request, options = {})
|
24
|
+
debug "Request: #{request}"
|
26
25
|
|
27
|
-
|
26
|
+
response = @conn.send(request.method) do |req|
|
27
|
+
req.url request.url
|
28
|
+
req.params = request.params
|
29
|
+
req.body = request.body.to_s
|
28
30
|
if options.delete(:bearer_token_request) && !access_token.nil?
|
29
|
-
|
31
|
+
req.headers['Authorization'] = bearer_auth_header
|
30
32
|
end
|
31
|
-
|
32
|
-
|
33
|
+
req.headers['Accept-Encoding'] = 'gzip,deflate'
|
34
|
+
req.headers['Content-Type'] = 'application/json'
|
35
|
+
req.options[:timeout] = 10
|
36
|
+
req.options[:open_timeout] = 5
|
33
37
|
end
|
34
|
-
begin
|
35
|
-
res = Zlib::GzipReader.new(StringIO.new(http.body_str)).read
|
36
|
-
rescue Zlib::GzipFile::Error
|
37
|
-
res = http.body_str
|
38
|
-
end
|
39
|
-
|
40
|
-
debug <<-EOS
|
41
|
-
Response Dump
|
42
|
-
Content : #{res}
|
43
|
-
EOS
|
44
38
|
|
45
|
-
|
39
|
+
debug "Response: #{response.body}"
|
40
|
+
|
41
|
+
response.body
|
46
42
|
end
|
47
43
|
|
44
|
+
private
|
45
|
+
|
48
46
|
def bearer_auth_header
|
49
47
|
"Bearer #{access_token}"
|
50
48
|
end
|
data/lib/wordpress/errors.rb
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module Wordpress::Object
|
4
|
+
class Array < Base
|
5
|
+
class_attribute :array_name
|
6
|
+
|
7
|
+
class << self
|
8
|
+
private
|
9
|
+
|
10
|
+
def attr_array(name, klass)
|
11
|
+
name = name.to_s
|
12
|
+
@array_name = name
|
13
|
+
attr_parameter name, :as => lambda{ |client, array|
|
14
|
+
(array || []).map{ |v|
|
15
|
+
Wordpress::Object.const_get(klass).new(client, v)
|
16
|
+
}
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def [](k)
|
22
|
+
if k.is_a?(Fixnum) && array_name.to_s != ''
|
23
|
+
send(array_name)[k]
|
24
|
+
else
|
25
|
+
send(k)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|