proxy_service 1.0.1 → 1.1.0

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