wordpress-client 0.1.5 → 0.2.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.
data/README.md CHANGED
@@ -4,9 +4,19 @@
4
4
 
5
5
  wordpress-client is a [Wordpress Rest API Wrapper](http://developer.wordpress.com/docs/api/).
6
6
 
7
- ## Getting started
7
+ ## Requirements
8
8
 
9
- Add wordpress-client to your `Gemfile` and `bundle install`:
9
+ I test with ruby 1.9.3 and 2.1. Other versions/VMs are untested but might work fine.
10
+
11
+ ## Installation
12
+
13
+ To your system
14
+
15
+ ```ruby
16
+ gem install wordpress-client
17
+ ```
18
+
19
+ Or add wordpress-client to your `Gemfile` and `bundle install`:
10
20
 
11
21
  ```ruby
12
22
  gem 'wordpress-client'
@@ -14,25 +24,28 @@ gem 'wordpress-client'
14
24
 
15
25
  ## Usage
16
26
 
27
+ Create new client
28
+
17
29
  ```ruby
18
30
  require 'wordpress-client'
19
31
 
20
- # Get user by access token
32
+ # Shared client
21
33
  client = Wordpress.client
22
- client.access_token = 'YOUR_ACCESS_TOKEN' # if you have any
23
- user = client.me
24
- site = user.site
25
- posts = site.posts
26
34
 
27
- # Get posts of a specific domain without access token
35
+ # New client
28
36
  client = Wordpress::Client.new
37
+ ```
38
+
39
+ Call API without access token
40
+
41
+ ```ruby
42
+ # Get posts of a specific domain without access token
29
43
  posts = client.get_posts('wordpress-site-domain')
30
44
  posts.each do |post|
31
45
  # Do something
32
46
  end
33
47
 
34
48
  # Get all the posts of a specific domain without access token
35
- client = Wordpress::Client.new
36
49
  page = 1
37
50
  loop do
38
51
  posts = client.get_posts('wordpress-site-domain', :page => page)
@@ -44,6 +57,16 @@ loop do
44
57
  end
45
58
  ```
46
59
 
60
+ Call API with access token
61
+
62
+ ```ruby
63
+ # Get user by access token
64
+ client.access_token = 'YOUR_ACCESS_TOKEN' # if you have any
65
+ user = client.me
66
+ site = user.site
67
+ posts = site.posts
68
+ ```
69
+
47
70
  ## TODO
48
71
  - Complete spec test
49
72
  - Support all the apis
data/lib/wordpress/api.rb CHANGED
@@ -1,18 +1,67 @@
1
- require 'wordpress/api/me'
2
- require 'wordpress/api/sites'
3
- require 'wordpress/api/posts'
4
- require 'wordpress/api/comments'
5
- require 'wordpress/api/tests'
1
+ require 'wordpress/errors'
2
+ require 'wordpress/request'
6
3
 
7
4
  module Wordpress
8
5
  module API
9
6
  def self.included(base)
7
+ base.send(:include, InstanceMethods)
8
+ base.extend(ClassMethods)
10
9
  base.class_eval do
11
- include Wordpress::API::Me
12
- include Wordpress::API::Sites
13
- include Wordpress::API::Posts
14
- include Wordpress::API::Comments
15
- include Wordpress::API::Tests
10
+ Dir.glob(File.expand_path('../api/*.rb', __FILE__)) do |path|
11
+ eval(File.open(path).read)
12
+ end
13
+ end
14
+ end
15
+
16
+ module ClassMethods
17
+ def register_api(name, method, path, valid_keys, response)
18
+ arg_names = path.scan(/\$([\w]+)/).map{ |a| a[0] }
19
+
20
+ @registered_apis ||= {}
21
+ @registered_apis[name] = {:method => method, :path => path, :arg_names => arg_names, :valid_keys => valid_keys, :response => response}
22
+
23
+ remove_method name if method_defined?(name)
24
+ define_method name do |*args|
25
+ params = args[-1].is_a?(Hash) ? args.pop : {}
26
+
27
+ params.keys.each do |key|
28
+ raise Wordpress::ArgumentError, "#{key} is not valid for this method." unless valid_keys.include?(key)
29
+ end
30
+
31
+ path = path.dup
32
+ arg_names.each do |key|
33
+ path.gsub!(/\$#{key}/, args.shift.to_s)
34
+ end
35
+ data = args.shift || {}
36
+
37
+ json = call_api(Wordpress::Request.new(method, path, params, data))
38
+
39
+ instance_exec(json, &response)
40
+ end
41
+ end
42
+
43
+ def default_keys
44
+ [:http_envelope, :pretty, :meta, :callback].freeze
45
+ end
46
+
47
+ def search_keys
48
+ [:number, :offset, :page, :order, :order_by, :after, :before].freeze
49
+ end
50
+
51
+ def registered_apis
52
+ (@registered_apis || {}).freeze
53
+ end
54
+ end
55
+
56
+ module InstanceMethods
57
+ def call_api(request)
58
+ json = call(request, :bearer_token_request => true)
59
+
60
+ if !json['error'].nil?
61
+ raise Wordpress::ResponseError, json
62
+ end
63
+
64
+ json
16
65
  end
17
66
  end
18
67
  end
@@ -1,39 +1,26 @@
1
- require 'wordpress/api/utils'
1
+ require "wordpress/object/comments"
2
+ require "wordpress/object/comment"
2
3
 
3
- module Wordpress
4
- module API
5
- module Comments
6
- include Wordpress::API::Utils
4
+ register_api :get_comments, :get, "/rest/v1/sites/$site/comments",
5
+ [:context, :type, :status] + default_keys + search_keys,
6
+ lambda{ |json| Wordpress::Object::Comments.new(self, json) }
7
7
 
8
- def get_comments(site, params = {})
9
- validate_params! params, [:context, :type, :status] + default_keys + search_keys
10
- object_from_response Wordpress::Object::Comments.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/comments", params)
11
- end
8
+ register_api :get_post_comments, :get, "/rest/v1/sites/$site/posts/$post_id/replies",
9
+ [:context] + default_keys,
10
+ lambda{ |json| Wordpress::Object::Comments.new(self, json) }
12
11
 
13
- def get_post_comments(site, post_id, params = {})
14
- validate_params! params, [:context] + default_keys
15
- object_from_response Wordpress::Object::Comments.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts/#{post_id}/replies", params)
16
- end
12
+ register_api :get_comment, :get, "/rest/v1/sites/$site/comments/$comment_id",
13
+ [:context] + default_keys,
14
+ lambda{ |json| Wordpress::Object::Comment.new(self, json) }
17
15
 
18
- def get_comment(site, comment_id, params = {})
19
- validate_params! params, [:context] + default_keys
20
- object_from_response Wordpress::Object::Comment.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/comments/#{comment_id}", params)
21
- end
16
+ register_api :update_comment, :post, "/rest/v1/sites/$site/comments/$comment_id",
17
+ [:context] + default_keys,
18
+ lambda{ |json| Wordpress::Object::Comment.new(self, json) }
22
19
 
23
- def update_comment(site, comment_id, data, params = {})
24
- validate_params! params, [:context] + default_keys
25
- object_from_response Wordpress::Object::Comment.new(self), Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/comments/#{comment_id}", params, data)
26
- end
20
+ register_api :create_comment, :post, "/rest/v1/sites/$site/comments/$site_id/replies/new",
21
+ [:context] + default_keys,
22
+ lambda{ |json| Wordpress::Object::Comment.new(self, json) }
27
23
 
28
- def create_comment(site, post_id, data, params = {})
29
- validate_params! params, [:context] + default_keys
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
- end
32
-
33
- def delete_comment(site, comment_id, params = {})
34
- validate_params! params, [:context] + default_keys
35
- object_from_response Wordpress::Object::Comment.new(self), Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/comments/#{comment_id}/delete", params)
36
- end
37
- end
38
- end
39
- end
24
+ register_api :delete_comment, :post, "/rest/v1/sites/$site/comments/$comment_id/delete",
25
+ [:context] + default_keys,
26
+ lambda{ |json| Wordpress::Object::Comment.new(self, json) }
@@ -0,0 +1,19 @@
1
+ require "wordpress/ostruct"
2
+
3
+ register_api :create_follow, :post, "/rest/v1/sites/$site/follows/new",
4
+ [:context] + default_keys,
5
+ lambda{ |json|
6
+ Wordpress::OpenStruct.new(json)
7
+ }
8
+
9
+ register_api :delete_follow, :post, "/rest/v1/sites/$site/follows/mine/delete",
10
+ [:context] + default_keys,
11
+ lambda{ |json|
12
+ Wordpress::OpenStruct.new(json)
13
+ }
14
+
15
+ register_api :get_follow, :get, "/rest/v1/sites/$site/follows/mine",
16
+ [:context] + default_keys,
17
+ lambda{ |json|
18
+ Wordpress::OpenStruct.new(json)
19
+ }
@@ -0,0 +1,7 @@
1
+ require "wordpress/ostruct"
2
+
3
+ register_api :freshly_pressed, :get, "/rest/v1/freshly-pressed",
4
+ [:number, :after, :before, :content_width, :thumb_width, :thumb_height] + default_keys,
5
+ lambda{ |json|
6
+ Wordpress::OpenStruct.new(json)
7
+ }
@@ -1,19 +1,10 @@
1
- require 'wordpress/api/utils'
1
+ require "wordpress/ostruct"
2
+ require "wordpress/object/user"
2
3
 
3
- module Wordpress
4
- module API
5
- module Me
6
- include Wordpress::API::Utils
4
+ register_api :me, :get, "/rest/v1/me",
5
+ default_keys,
6
+ lambda{ |json| Wordpress::Object::User.new(self, json) }
7
7
 
8
- def me(params = {})
9
- validate_params! params, default_keys
10
- object_from_response Wordpress::Object::User.new(self), Wordpress::Request.new(:get, "/rest/v1/me", params)
11
- end
12
-
13
- def get_my_likes(params = {})
14
- validate_params! params, default_keys
15
- object_from_response Wordpress::OpenStruct.new, Wordpress::Request.new(:get, "/rest/v1/me/likes", params)
16
- end
17
- end
18
- end
19
- end
8
+ register_api :get_my_likes, :get, "/rest/v1/me/likes",
9
+ default_keys,
10
+ lambda{ |json| Wordpress::OpenStruct.new(json) }
@@ -0,0 +1,26 @@
1
+ require "wordpress/ostruct"
2
+
3
+ register_api :get_notifications, :get, "/rest/v1/notifications",
4
+ [:ids, :fields, :type, :unread, :read, :number, :since, :before, :num_note_items, :trap] + default_keys,
5
+ lambda{ |json|
6
+ Wordpress::OpenStruct.new(json)
7
+ }
8
+
9
+ register_api :get_notification, :get, "/rest/v1/notifications/$note_id",
10
+ [:context, :fields, :num_note_items] + default_keys,
11
+ lambda{ |json|
12
+ Wordpress::OpenStruct.new(json)
13
+ }
14
+
15
+ register_api :seen_notification, :post, "/rest/v1/notifications/seen",
16
+ [:context] + default_keys,
17
+ lambda{ |json|
18
+ Wordpress::OpenStruct.new(json)
19
+ }
20
+
21
+ register_api :read_notification, :post, "/rest/v1/notifications/read",
22
+ [:context] + default_keys,
23
+ lambda{ |json|
24
+ Wordpress::OpenStruct.new(json)
25
+ }
26
+
@@ -1,69 +1,51 @@
1
- require 'wordpress/api/utils'
1
+ require "wordpress/ostruct"
2
+ require "wordpress/object/posts"
3
+ require "wordpress/object/post"
2
4
 
3
- module Wordpress
4
- module API
5
- module Posts
6
- include Wordpress::API::Utils
5
+ register_api :get_posts, :get, "/rest/v1/sites/$site/posts",
6
+ [:context, :tag, :category, :type, :status, :sticky, :author, :search, :meta_key, :meta_value] + default_keys + search_keys,
7
+ lambda{ |json| Wordpress::Object::Posts.new(self, json) }
7
8
 
8
- def get_posts(site, params = {})
9
- validate_params! params, [:context, :tag, :category, :type, :status, :sticky, :author, :search, :meta_key, :meta_value] + default_keys + search_keys
10
- object_from_response Wordpress::Object::Posts.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts", params)
11
- end
9
+ register_api :get_post, :get, "/rest/v1/sites/$site/posts/$post_id",
10
+ [:context] + default_keys,
11
+ lambda{ |json| Wordpress::Object::Post.new(self, json) }
12
12
 
13
- def get_post(site, post_id, params = {})
14
- validate_params! params, [:context] + default_keys
15
- object_from_response Wordpress::Object::Post.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts/#{post_id}", params)
16
- end
13
+ register_api :update_post, :post, "/rest/v1/sites/$site/posts/$post_id",
14
+ [:context] + default_keys,
15
+ lambda{ |json| Wordpress::Object::Post.new(self, json) }
17
16
 
18
- def update_post(site, post_id, data, params = {})
19
- validate_params! params, [:context] + default_keys
20
- object_from_response Wordpress::Object::Post.new(self), Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/posts/#{post_id}", params, data)
21
- end
17
+ register_api :get_post_by_slug, :get, "/rest/v1/sites/$site/posts/slug:$post_slug",
18
+ [:context] + default_keys,
19
+ lambda{ |json| Wordpress::Object::Post.new(self, json) }
22
20
 
23
- def get_post_by_slug(site, post_slug, params = {})
24
- validate_params! params, [:context] + default_keys
25
- object_from_response Wordpress::Object::Post.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts/slug:#{post_slug}", params)
26
- end
21
+ register_api :create_post, :post, "/rest/v1/sites/$site/posts/new",
22
+ [:context] + default_keys,
23
+ lambda{ |json| Wordpress::Object::Post.new(self, json) }
27
24
 
28
- def create_post(site, post_id, data, params = {})
29
- validate_params! params, [:context], default_keys
30
- object_from_response Wordpress::Object::Post.new(self), Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/posts/new", params, data)
31
- end
25
+ register_api :delete_post, :post, "/rest/v1/sites/$site/posts/$post_id/delete",
26
+ [:context] + default_keys,
27
+ lambda{ |json| Wordpress::Object::Post.new(self, json) }
32
28
 
33
- def delete_post(site, post_id, params = {})
34
- validate_params! params, [:context], default_keys
35
- object_from_response Wordpress::Object::Post.new(self), Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/posts/#{post_id}/delete", params)
36
- end
29
+ register_api :get_likes, :get, "/rest/v1/sites/$site/posts/$post_id/likes",
30
+ default_keys,
31
+ lambda{ |json| Wordpress::OpenStruct.new(json) }
37
32
 
38
- def get_likes(site, post_id, params = {})
39
- validate_params! params, default_keys
40
- object_from_response Wordpress::OpenStruct.new, Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts/#{post_id}/likes", params)
41
- end
33
+ register_api :create_like, :post, "/rest/v1/sites/$site/posts/$post_id/likes/new",
34
+ default_keys,
35
+ lambda{ |json| Wordpress::OpenStruct.new(json) }
42
36
 
43
- def create_like(site, post_id, params = {})
44
- validate_params! params, default_keys
45
- object_from_response Wordpress::OpenStruct.new, Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/posts/#{post_id}/likes/new", params)
46
- end
37
+ register_api :delete_like, :post, "/rest/v1/sites/$site/posts/$post_id/likes/mine/delete",
38
+ default_keys,
39
+ lambda{ |json| Wordpress::OpenStruct.new(json) }
47
40
 
48
- def delete_like(site, post_id, params = {})
49
- validate_params! params, default_keys
50
- object_from_response Wordpress::OpenStruct.new, Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/posts/#{post_id}/likes/mine/delete", params)
51
- end
41
+ register_api :get_like_status, :get, "/rest/v1/sites/$site/posts/$post_id/likes/mine",
42
+ default_keys,
43
+ lambda{ |json| Wordpress::OpenStruct.new(json) }
52
44
 
53
- def get_like_status(site, post_id, params = {})
54
- validate_params! params, default_keys
55
- object_from_response Wordpress::OpenStruct.new, Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts/#{post_id}/likes/mine", params)
56
- end
45
+ register_api :get_reblog_status, :get, "/rest/v1/sites/$site/posts/$post_id/reblogs/mine",
46
+ default_keys,
47
+ lambda{ |json| Wordpress::OpenStruct.new(json) }
57
48
 
58
- def get_reblog_status(site, post_id, params = {})
59
- validate_params! params, default_keys
60
- object_from_response Wordpress::OpenStruct.new, Wordpress::Request.new(:get, "/rest/v1/sites/#{site}/posts/#{post_id}/reblogs/mine", params)
61
- end
62
-
63
- def create_reblog(site, post_id, data, params = {})
64
- validate_params! params, default_keys
65
- object_from_response Wordpress::OpenStruct.new, Wordpress::Request.new(:post, "/rest/v1/sites/#{site}/posts/#{post_id}/reblogs/new", params, data)
66
- end
67
- end
68
- end
69
- end
49
+ register_api :create_reblog, :post, "/rest/v1/sites/$site/posts/$post_id/reblogs/new",
50
+ default_keys,
51
+ lambda{ |json| Wordpress::OpenStruct.new(json) }
@@ -1,14 +1,5 @@
1
- require 'wordpress/api/utils'
1
+ require "wordpress/object/site"
2
2
 
3
- module Wordpress
4
- module API
5
- module Sites
6
- include Wordpress::API::Utils
7
-
8
- def get_site(site, params = {})
9
- validate_params! params, default_keys
10
- object_from_response Wordpress::Object::Site.new(self), Wordpress::Request.new(:get, "/rest/v1/sites/#{site}", params)
11
- end
12
- end
13
- end
14
- end
3
+ register_api :get_site, :get, "/rest/v1/sites/$site",
4
+ default_keys,
5
+ lambda{ |json| Wordpress::Object::Site.new(self, json) }
@@ -0,0 +1,50 @@
1
+ require "wordpress/ostruct"
2
+
3
+ register_api :get_category, :get, "/rest/v1/sites/$site/categories/slug:$category",
4
+ [:context] + default_keys,
5
+ lambda{ |json|
6
+ Wordpress::OpenStruct.new(json)
7
+ }
8
+
9
+ register_api :update_category, :post, "/rest/v1/sites/$site/categories/slug:$category",
10
+ [:context] + default_keys,
11
+ lambda{ |json|
12
+ Wordpress::OpenStruct.new(json)
13
+ }
14
+
15
+ register_api :get_tag, :get, "/rest/v1/sites/$site/tags/slug:$tag",
16
+ [:context] + default_keys,
17
+ lambda{ |json|
18
+ Wordpress::OpenStruct.new(json)
19
+ }
20
+
21
+ register_api :update_tag, :post, "/rest/v1/sites/$site/tags/slug:$tag",
22
+ [:context] + default_keys,
23
+ lambda{ |json|
24
+ Wordpress::OpenStruct.new(json)
25
+ }
26
+
27
+ register_api :create_category, :post, "/rest/v1/sites/$site/categories/new",
28
+ [:context] + default_keys,
29
+ lambda{ |json|
30
+ Wordpress::OpenStruct.new(json)
31
+ }
32
+
33
+ register_api :create_tag, :post, "/rest/v1/sites/$site/tags/new",
34
+ [:context] + default_keys,
35
+ lambda{ |json|
36
+ Wordpress::OpenStruct.new(json)
37
+ }
38
+
39
+ register_api :delete_category, :post, "/rest/v1/sites/$site/categories/slug:$category/delete",
40
+ [:context] + default_keys,
41
+ lambda{ |json|
42
+ Wordpress::OpenStruct.new(json)
43
+ }
44
+
45
+ register_api :delete_tag, :post, "/rest/v1/sites/$site/tags/slug:$tag/delete",
46
+ [:context] + default_keys,
47
+ lambda{ |json|
48
+ Wordpress::OpenStruct.new(json)
49
+ }
50
+
@@ -1,25 +1,11 @@
1
- require 'wordpress/api/utils'
1
+ require "wordpress/object/test"
2
2
 
3
- module Wordpress
4
- module API
5
- module Tests
6
- include Wordpress::API::Utils
3
+ test_keys = [:id, :default_string, :default_int, :boolean_whitelist_defaults_to_false, :boolean_whitelist_defaults_to_true, :string_whitelist_defaults_to_foo, :url, :datetime]
7
4
 
8
- def get_test(id, params = {})
9
- validate_params! params, test_keys
10
- object_from_response Wordpress::Object::Test.new(self), Wordpress::Request.new(:get, "/rest/v1/test/#{id}", params)
11
- end
5
+ register_api :get_test, :get, "/rest/v1/test/$id",
6
+ test_keys,
7
+ lambda{ |json| Wordpress::Object::Test.new(self, json) }
12
8
 
13
- def post_test(id, params = {})
14
- validate_params! params, test_keys
15
- object_from_response Wordpress::Object::Test.new(self), Wordpress::Request.new(:post, "/rest/v1/test/#{id}", params)
16
- end
17
-
18
- private
19
-
20
- def test_keys
21
- [:id, :default_string, :default_int, :boolean_whitelist_defaults_to_false, :boolean_whitelist_defaults_to_true, :string_whitelist_defaults_to_foo, :url, :datetime]
22
- end
23
- end
24
- end
25
- end
9
+ register_api :post_test, :post, "/rest/v1/test/$id",
10
+ test_keys,
11
+ lambda{ |json| Wordpress::Object::Test.new(self, json) }
@@ -1,8 +1,10 @@
1
+ require 'multi_json'
1
2
  require 'faraday'
2
3
  require 'faraday_middleware/gzip'
3
4
  require 'wordpress/base'
4
5
  require 'wordpress/request'
5
6
  require 'wordpress/api'
7
+ require 'wordpress/errors'
6
8
 
7
9
  module Wordpress
8
10
  class Client < Base
@@ -35,9 +37,18 @@ module Wordpress
35
37
  req.options[:open_timeout] = 5
36
38
  end
37
39
 
38
- debug "Response: #{response.body}"
40
+ begin
41
+ json = MultiJson.load(response.body)
42
+ if json.nil? || json == ''
43
+ raise Wordpress::ResponseError
44
+ end
45
+ rescue MultiJson::LoadError => e
46
+ raise Wordpress::ResponseError, {'error' => e, 'message' => "Can not parse the response: #{response.body.inspect}"}
47
+ end
48
+
49
+ debug "Response: #{json}"
39
50
 
40
- response.body
51
+ json
41
52
  end
42
53
 
43
54
  private
@@ -24,7 +24,8 @@ module Wordpress::Object
24
24
  def reload
25
25
  if meta && meta.links && meta.links.self
26
26
  request = Wordpress::Request.new(:get, meta.links.self)
27
- client.object_from_response(self, request)
27
+ json = client.call(request)
28
+ self.assign(json)
28
29
  end
29
30
  end
30
31
 
@@ -52,7 +53,8 @@ module Wordpress::Object
52
53
  if associated_object?(name)
53
54
  @cached_objects[name] ||= begin
54
55
  request = Wordpress::Request.new(:get, meta.links.send(name))
55
- client.object_from_response(Wordpress::Object.const_get(meta_objects[name]).new(client), request)
56
+ json = client.call(request)
57
+ Wordpress::Object.const_get(meta_objects[name]).new(client, json)
56
58
  end
57
59
  else
58
60
  super
@@ -1,8 +1,8 @@
1
1
  module Wordpress
2
2
  class Version
3
3
  MAJOR = 0 unless defined? Wordpress::Version::MAJOR
4
- MINOR = 1 unless defined? Wordpress::Version::MINOR
5
- PATCH = 5 unless defined? Wordpress::Version::PATCH
4
+ MINOR = 2 unless defined? Wordpress::Version::MINOR
5
+ PATCH = 0 unless defined? Wordpress::Version::PATCH
6
6
  PRE = nil unless defined? Wordpress::Version::PRE
7
7
 
8
8
  class << self
@@ -21,11 +21,17 @@ describe Wordpress::API do
21
21
  'get_post_comments' => {:args => ['sitename', 1], :method => :get, :url => '/rest/v1/sites/sitename/posts/1/replies', :response => Wordpress::Object::Comments},
22
22
  'get_comment' => {:args => ['sitename', 1], :method => :get, :url => '/rest/v1/sites/sitename/comments/1', :response => Wordpress::Object::Comment},
23
23
  'get_test' => {:args => [1], :method => :get, :url => '/rest/v1/test/1', :response => Wordpress::Object::Test},
24
+ 'get_category' => {:args => ['sitename', 'cat_name'], :method => :get, :url => '/rest/v1/sites/sitename/categories/slug:cat_name', :response => Wordpress::OpenStruct},
25
+ 'get_tag' => {:args => ['sitename', 'tag_name'], :method => :get, :url => '/rest/v1/sites/sitename/tags/slug:tag_name', :response => Wordpress::OpenStruct},
26
+ 'get_follow' => {:args => ['sitename'], :method => :get, :url => '/rest/v1/sites/sitename/follows/mine', :response => Wordpress::OpenStruct},
27
+ 'freshly_pressed' => {:method => :get, :url => '/rest/v1/freshly-pressed', :response => Wordpress::OpenStruct},
28
+ 'get_notifications' => {:method => :get, :url => '/rest/v1/notifications', :response => Wordpress::OpenStruct},
29
+ 'get_notification' => {:args => [1], :method => :get, :url => '/rest/v1/notifications/1', :response => Wordpress::OpenStruct},
24
30
  }.each do |method, params|
25
31
  describe "\##{method}" do
26
32
  it "should return #{params[:response].name}" do
27
33
  request = Wordpress::Request.new(params[:method], params[:url])
28
- client.stub(:call).and_return('{}')
34
+ client.stub(:call).and_return({})
29
35
  client.should_receive(:call).with do |*args|
30
36
  req = args.shift
31
37
  req.method.should == request.method
@@ -16,6 +16,7 @@ describe Wordpress::Client do
16
16
  req.should_receive(:url).with(anything)
17
17
  req.should_receive(:params=).with(anything)
18
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('{}')
19
20
 
20
21
  request = Wordpress::Request.new(:get, 'url', {})
21
22
  client.call(request)
@@ -29,6 +30,7 @@ describe Wordpress::Client do
29
30
  req.should_receive(:params=).with(anything)
30
31
  req.should_receive(:body=).with(anything)
31
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('{}')
32
34
 
33
35
  request = Wordpress::Request.new(:post, 'url', {}, {})
34
36
  client.call(request)
@@ -45,6 +47,7 @@ describe Wordpress::Client do
45
47
  req.should_receive(:url).with(anything)
46
48
  req.should_receive(:params=).with(anything)
47
49
  Faraday::Connection.any_instance.should_receive(:get).and_yield(req).and_return(Faraday::Response.new)
50
+ Faraday::Response.any_instance.stub(:body).and_return('{}')
48
51
 
49
52
  request = Wordpress::Request.new(:get, 'url', {})
50
53
  client.access_token = 'something'
@@ -59,6 +62,7 @@ describe Wordpress::Client do
59
62
  req.should_receive(:url).with(anything)
60
63
  req.should_receive(:params=).with(anything)
61
64
  Faraday::Connection.any_instance.should_receive(:get).and_yield(req).and_return(Faraday::Response.new)
65
+ Faraday::Response.any_instance.stub(:body).and_return('{}')
62
66
 
63
67
  request = Wordpress::Request.new(:get, 'url', {})
64
68
  client.call(request, :bearer_token_request => true)
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wordpress-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Daisuke Taniwaki
@@ -13,6 +14,7 @@ dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: faraday
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,6 +30,7 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: logger
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ! '>='
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ! '>='
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: multi_json
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ! '>='
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ! '>='
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: rspec
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ! '>='
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ! '>='
67
76
  - !ruby/object:Gem::Version
@@ -69,6 +78,7 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: simplecov
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - ! '>='
74
84
  - !ruby/object:Gem::Version
@@ -76,6 +86,7 @@ dependencies:
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - ! '>='
81
92
  - !ruby/object:Gem::Version
@@ -83,6 +94,7 @@ dependencies:
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: rake
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
99
  - - ! '>='
88
100
  - !ruby/object:Gem::Version
@@ -90,6 +102,7 @@ dependencies:
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
107
  - - ! '>='
95
108
  - !ruby/object:Gem::Version
@@ -112,11 +125,14 @@ files:
112
125
  - lib/wordpress-client.rb
113
126
  - lib/wordpress/api.rb
114
127
  - lib/wordpress/api/comments.rb
128
+ - lib/wordpress/api/follow.rb
129
+ - lib/wordpress/api/freshly_pressed.rb
115
130
  - lib/wordpress/api/me.rb
131
+ - lib/wordpress/api/notifications.rb
116
132
  - lib/wordpress/api/posts.rb
117
133
  - lib/wordpress/api/sites.rb
134
+ - lib/wordpress/api/taxonomy.rb
118
135
  - lib/wordpress/api/tests.rb
119
- - lib/wordpress/api/utils.rb
120
136
  - lib/wordpress/base.rb
121
137
  - lib/wordpress/client.rb
122
138
  - lib/wordpress/configuration.rb
@@ -146,26 +162,27 @@ files:
146
162
  homepage: https://github.com/dtaniwaki/wordpress-client
147
163
  licenses:
148
164
  - MIT
149
- metadata: {}
150
165
  post_install_message:
151
166
  rdoc_options: []
152
167
  require_paths:
153
168
  - lib
154
169
  required_ruby_version: !ruby/object:Gem::Requirement
170
+ none: false
155
171
  requirements:
156
172
  - - ! '>='
157
173
  - !ruby/object:Gem::Version
158
174
  version: '0'
159
175
  required_rubygems_version: !ruby/object:Gem::Requirement
176
+ none: false
160
177
  requirements:
161
178
  - - ! '>='
162
179
  - !ruby/object:Gem::Version
163
180
  version: '0'
164
181
  requirements: []
165
182
  rubyforge_project:
166
- rubygems_version: 2.1.11
183
+ rubygems_version: 1.8.23
167
184
  signing_key:
168
- specification_version: 4
185
+ specification_version: 3
169
186
  summary: Wordpress API Wrapper.
170
187
  test_files:
171
188
  - spec/spec_helper.rb
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZWRmZjc5ZWZiYzZmOGI2MzllZWFkYzEzN2E5OGY4ZDBiMzcxZTZlYw==
5
- data.tar.gz: !binary |-
6
- YWZiYTdlN2ViZjk1NWE2N2Q5Y2Y4NzkzZjFlZWRhZTg0YzQyMjEwYg==
7
- SHA512:
8
- metadata.gz: !binary |-
9
- ZmZkZDc2NGE0NDQ0OWE4MWNiMjVlNWFhZWRiZjFiNGVlMmJlOTE0OGJmM2Ji
10
- Nzk3NjZkZjJjMWJhNTI3MjI0OTA5YTk3Y2NmYTdhMDU1NmJiOWIxOWQ0MWM0
11
- Njk5ODdiNzBlMDNjZjRlZTgxNDg2Y2IzNTBhMWI4ZGEzZDY2ZDQ=
12
- data.tar.gz: !binary |-
13
- YmU4Y2I1MjUzZmE1ZjlhMTkyMTNjNzA1ZTE0NWFmY2U1NWU1NTgwZTFlOThm
14
- NjA1ZDI0Mjg2OGJlYjBmNWM4YTZiOTg1OWE0ZWI1ZGNiNWNjOTQ5ZWVkZmI0
15
- ZDgzNTYzM2UzOGM5YmQ0YTJkZDg0OWQyNjZmY2FiOGMwNWU0Zjk=
@@ -1,44 +0,0 @@
1
- require 'multi_json'
2
- require 'wordpress/errors'
3
- require 'wordpress/ostruct'
4
- Dir.glob(File.expand_path('../../object/*.rb', __FILE__)) do |path|
5
- require path
6
- end
7
-
8
- module Wordpress
9
- module API
10
- module Utils
11
- def object_from_response(obj, request)
12
- res = call(request, :bearer_token_request => true)
13
- begin
14
- json = MultiJson.load(res)
15
- if json.nil? || json == ''
16
- raise Wordpress::ResponseError
17
- end
18
- if !json['error'].nil?
19
- raise Wordpress::ResponseError, json
20
- end
21
- obj.assign(json)
22
- rescue MultiJson::LoadError => e
23
- raise Wordpress::ResponseError, {'error' => e, 'message' => "Can not parse the response: #{res.inspect}"}
24
- end
25
- end
26
-
27
- private
28
-
29
- def default_keys
30
- [:http_envelope, :pretty, :callback]
31
- end
32
-
33
- def search_keys
34
- [:number, :offset, :page, :order, :order_by, :after, :before]
35
- end
36
-
37
- def validate_params!(params, valid_keys = [])
38
- params.keys.each do |key|
39
- raise Wordpress::ArgumentError, "#{key} is not valid for this method." unless valid_keys.include?(key)
40
- end
41
- end
42
- end
43
- end
44
- end