wordpress-client 0.1.5 → 0.2.0

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