rubypress 1.0.4 → 1.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6aaed16b1f55bdfeb53008a99a2bf858cd5c9491
4
- data.tar.gz: 8c069c6a914a8a719722eacbb1ecfe2fe1b63d9a
3
+ metadata.gz: cac472ae4175124874fde244b6c7bc08f223adb9
4
+ data.tar.gz: aa7eec4aa4b679cdf95b92cfc92ad8885bcfe491
5
5
  SHA512:
6
- metadata.gz: 5c4d11588d711b121fd831c93e8df3a0f5a9527c5251adea549cc61342514be715b60949ea039a5daebc0e06836163aede2852750c2348ec4ea03fdc70a5d44b
7
- data.tar.gz: a8c7948bdc62b35ae6591ac37dff17500d7b3a22a3079721ccce58a101ad3cf0674ede017d98fffd7e86e16be395dfa39934b63a88c837b56c368c7efb746e20
6
+ metadata.gz: db956a9dcdb0d7e37e819b451a8606592de3cfdc46c637a22099bb694d3919afe9e1a221d60ac9d6cc308b50904a5e47c09112ef2f4f70bb402a1ace98ea1449
7
+ data.tar.gz: f9d429504b809dfdb8d693effc99ab9dbc0f80763046335f226021abf69e67ed6d5c692f422415c13f3a36e54aed87cb43d4222d553ccbe6a331a5239b4fdf0a
@@ -1,18 +1,22 @@
1
1
  require 'yaml'
2
2
  require 'erb'
3
+ require 'retryable'
4
+
3
5
  require_relative 'posts'
4
6
  require_relative 'taxonomies'
5
7
  require_relative 'media'
6
8
  require_relative 'comments'
7
9
  require_relative 'options'
8
10
  require_relative 'users'
11
+ require_relative 'xml_rpc_retryable'
9
12
 
10
13
  module Rubypress
11
14
 
12
15
  class Client
13
16
 
14
17
  attr_reader :connection
15
- attr_accessor :port, :host, :path, :username, :password, :use_ssl, :default_post_fields, :debug, :http_user, :http_password
18
+ attr_accessor :port, :host, :path, :username, :password, :use_ssl, :default_post_fields
19
+ attr_accessor :debug, :http_user, :http_password, :retry_timeouts
16
20
 
17
21
  def initialize(options = {})
18
22
  {
@@ -25,7 +29,8 @@ module Rubypress
25
29
  :default_post_fields => %w(post terms custom_fields),
26
30
  :debug => false,
27
31
  :http_user => nil,
28
- :http_password => nil
32
+ :http_password => nil,
33
+ :retry_timeouts => false
29
34
  }.merge(options).each{ |opt| self.send("#{opt[0]}=", opt[1]) }
30
35
  self
31
36
  end
@@ -33,6 +38,8 @@ module Rubypress
33
38
  def connection
34
39
  server = XMLRPC::Client.new(self.host, self.path, self.port,nil,nil,self.http_user,self.http_password,self.use_ssl,nil)
35
40
  server.http_header_extra = {'accept-encoding' => 'identity'}
41
+ server.extend(XMLRPCRetryable) if retry_timeouts
42
+
36
43
  @connection = server
37
44
  end
38
45
 
@@ -64,7 +71,6 @@ module Rubypress
64
71
  include Options
65
72
  include Users
66
73
 
67
-
68
74
  end
69
75
 
70
76
  end
@@ -0,0 +1,21 @@
1
+ module Rubypress
2
+ module XMLRPCRetryable
3
+ include Retryable
4
+
5
+ RETRY_EXCEPTIONS = [
6
+ Timeout::Error,
7
+ Net::ReadTimeout
8
+ ]
9
+
10
+ def self.extended(instance)
11
+ instance.singleton_class.send(:alias_method, :call_without_retry, :call)
12
+ instance.singleton_class.send(:alias_method, :call, :call_with_retry)
13
+ end
14
+
15
+ def call_with_retry(method, *args)
16
+ retryable on: RETRY_EXCEPTIONS do
17
+ call_without_retry(method, *args)
18
+ end
19
+ end
20
+ end
21
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubypress
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Feldman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-12 00:00:00.000000000 Z
11
+ date: 2014-04-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Easily access WordPress installations through the WordPress XML-RPC API.
14
14
  This gem exactly mirrors the functionality provided by the WordPress XML-RPC API
@@ -27,6 +27,7 @@ files:
27
27
  - lib/rubypress/posts.rb
28
28
  - lib/rubypress/taxonomies.rb
29
29
  - lib/rubypress/users.rb
30
+ - lib/rubypress/xml_rpc_retryable.rb
30
31
  homepage: https://github.com/zachfeldman/rubypress
31
32
  licenses:
32
33
  - GPLv2