proxy_service 1.0.1 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65a3e58131e6f7106bbafbcc3c8805da12ae67b0
4
- data.tar.gz: f244fae68a133d6e50ef82241c8619c2374fcaf7
3
+ metadata.gz: a3a873eeb05db5f539ad28b92d19e2f343a98fd2
4
+ data.tar.gz: 18356cdbf3b6110a40632160c052a1562caf88fa
5
5
  SHA512:
6
- metadata.gz: dd696acea6a8979527a6ed5019c41727c507429afa616e43e3b69077e7d2c7a5705e69534fc3e3c2be343d235ea2b7991f760208335d3e8a305c4f37f4f7d12c
7
- data.tar.gz: 5c8035c96fcada5cada060df7198169ddd76021802818330d8f53e688d533192d83bbccb76d645039bb072cf877c19137463ec04a8ec1936892ca1f5d5e90d1f
6
+ metadata.gz: f9cbda9e51af75dc088696d110e55ac0516fc1d45d8b6aa494639b92f4f91d84f4195db2648ecb15d9f04118dc9031f5e59427f1c13394efbc63a3e94f7a549f
7
+ data.tar.gz: 02fd4b2a19cbcbfe584935d366197c572c2096502cb2036997fe7371067abf61c8fb5fdc2a64e98d797ad81d28e971db2fd0cdc8f79dddaad77c50ade4209c92
data/lib/proxy_service.rb CHANGED
@@ -2,34 +2,27 @@ require 'json'
2
2
 
3
3
  class ProxyService
4
4
 
5
- POLL_PERIOD = 1
6
- MAX_FAILURES = 3
7
-
8
5
  class << self
9
- attr_accessor :proxies_enabled, :username, :password
6
+ attr_accessor :proxies_enabled, :username, :password, :failure_limit
10
7
 
11
8
  def configure
12
9
  yield self
13
10
  end
14
11
  end
15
12
 
16
- attr_accessor :source
13
+ attr_accessor :source, :failure_limit
17
14
  attr_writer :proxies_enabled
18
15
 
19
16
  # = Create a new proxy service with for a specific ODS
20
17
  #
21
- # @example
22
- #
23
- # ProxyService.new(:queue_name).with_mechanize do |agent|
24
- # agent.get('...')
25
- # end
26
- #
27
18
  # @param [String|Symbol] source name of the ODS (e.g. :tripadvisor), will look for a queue with that name "proxy/#{source}"
28
19
  # @param [Hash] options
29
- # @option options [Boolean] :proxies_enabled override the app configuration
20
+ # @option options [Boolean] :proxies_enabled override the class configuration
21
+ # @option options [Integer] :failure_limit before blocking the proxy
30
22
  def initialize(source, options = {})
31
23
  @source = source
32
24
  @proxies_enabled = options.fetch(:proxies_enabled, !!self.class.proxies_enabled)
25
+ @failure_limit = options.fetch(:failure_limit, self.class.failure_limit || 3)
33
26
  end
34
27
 
35
28
  # @yield [agent] Passes a [proxied] Mechanize agent to the block
@@ -40,7 +33,7 @@ class ProxyService
40
33
  yield agent
41
34
  proxy.reset_failures
42
35
  rescue
43
- if proxy.failures >= MAX_FAILURES
36
+ if proxy.failures >= failure_limit
44
37
  proxy.blocked!
45
38
  else
46
39
  proxy.increment_failures
@@ -53,19 +46,11 @@ class ProxyService
53
46
  # Private
54
47
  #
55
48
 
56
- def new_worker
57
- if proxies_enabled?
58
- Worker.new("proxy/#{source}")
59
- else
60
- NullWorker.new
61
- end
62
- end
63
-
64
49
  def proxies_enabled?
65
50
  @proxies_enabled
66
51
  end
67
52
 
68
- # = Creates a STOMP connection (consumer)
53
+ # = Sleeps until the worker receives a proxy (message)
69
54
  #
70
55
  # @return [Proxy] a new proxy object
71
56
  def reserve_proxy
@@ -75,10 +60,18 @@ class ProxyService
75
60
  if worker.ready?
76
61
  return Proxy.new(worker)
77
62
  else
78
- sleep(POLL_PERIOD)
63
+ sleep(1)
79
64
  end
80
65
  end
81
66
  end
67
+
68
+ def new_worker
69
+ if proxies_enabled?
70
+ Worker.new("proxy/#{source}")
71
+ else
72
+ NullWorker.new
73
+ end
74
+ end
82
75
  end
83
76
 
84
77
  require 'proxy_service/mechanize_agent'
@@ -1,3 +1,3 @@
1
1
  class ProxyService
2
- VERSION = '1.0.1'
2
+ VERSION = '1.1.0'
3
3
  end
@@ -51,7 +51,7 @@ describe ProxyService do
51
51
 
52
52
  context 'when +failures+ exceeds max failures' do
53
53
  it 'blocks the proxy' do
54
- expect(proxy).to receive(:failures).and_return(ProxyService::MAX_FAILURES + 1)
54
+ expect(proxy).to receive(:failures).and_return(subject.failure_limit + 1)
55
55
  expect(proxy).to receive(:blocked!)
56
56
  subject.with_mechanize { |_| raise 'Testing exception' }
57
57
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: proxy_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Buckley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-17 00:00:00.000000000 Z
11
+ date: 2014-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler