optimis_client 0.3.0 → 0.3.1

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.
@@ -2,45 +2,45 @@ module OptimisClient
2
2
 
3
3
  class ResponseError < StandardError
4
4
  attr_accessor :status, :message, :errors
5
-
5
+
6
6
  def initialize(http_status, message=nil, errors = {})
7
7
  self.status, self.message, self.errors = http_status, message, errors
8
8
  end
9
9
  end
10
-
10
+
11
11
  class Base
12
-
12
+
13
13
  DEFAULT_TIMEOUT = 10*1000 # 10s
14
14
 
15
15
  @@hydra = Typhoeus::Hydra.new
16
-
16
+
17
17
  class << self
18
18
  attr_accessor :host, :secure, :api_key, :timeout
19
-
19
+
20
20
  def hydra
21
21
  @@hydra
22
22
  end
23
-
23
+
24
24
  def stubbed?
25
25
  !!@stubbed
26
26
  end
27
-
27
+
28
28
  def stubbed=(value)
29
29
  @stubbed = value
30
30
  end
31
-
31
+
32
32
  def secure=(value, disable_ssl_peer_verification = true)
33
33
  if value && !(Typhoeus::Easy.new.curl_version =~ /OpenSSL/)
34
- raise "Your libcurl SSL support not enabled."
34
+ raise "Your libcurl SSL support not enabled."
35
35
  end
36
36
  @secure = value
37
37
  @disable_ssl_peer_verification = disable_ssl_peer_verification
38
38
  end
39
-
39
+
40
40
  def http_protocol
41
41
  (self.secure)? "https://" : "http://"
42
42
  end
43
-
43
+
44
44
  def hydra_run_all
45
45
  self.hydra.run unless self.stubbed?
46
46
  end
@@ -48,18 +48,33 @@ module OptimisClient
48
48
  protected
49
49
 
50
50
  def new_request(url, options={})
51
- options = { :disable_ssl_peer_verification => @disable_ssl_peer_verification,
51
+ options = { :disable_ssl_peer_verification => @disable_ssl_peer_verification,
52
52
  :timeout => (@timeout || DEFAULT_TIMEOUT) }.merge(options)
53
-
54
- options[:params] ||= {}
53
+
54
+ options[:params] ||= {}
55
55
  options[:params].merge!( :api_key => self.api_key ) unless options[:params][:api_key]
56
-
56
+ if options[:params]
57
+ options[:params] = fix_array_param_keys(options[:params])
58
+ end
59
+
57
60
  options[:headers] ||= {}
58
61
  options[:headers].merge!( "Authorization" => self.api_key ) unless options[:headers][:api_key]
59
-
62
+
60
63
  Typhoeus::Request.new(url, options)
61
64
  end
62
-
65
+
66
+ def fix_array_param_keys(params)
67
+ fixed_params = {}
68
+ params.each do |key, value|
69
+ if Array === value
70
+ fixed_params.store("#{key}[]", value)
71
+ else
72
+ fixed_params.store(key, value)
73
+ end
74
+ end
75
+ fixed_params
76
+ end
77
+
63
78
  def parse_json(response)
64
79
  begin
65
80
  Yajl::Parser.parse(response.body)
@@ -67,8 +82,8 @@ module OptimisClient
67
82
  raise ResponseError.new( 502, "Parsing service JSON error: #{response.body}")
68
83
  end
69
84
  end
70
-
71
- def hydra_run(request)
85
+
86
+ def hydra_run(request)
72
87
  self.hydra.queue(request)
73
88
  self.hydra.run
74
89
  response = request.response
@@ -81,8 +96,8 @@ module OptimisClient
81
96
  return response
82
97
  end
83
98
  end
84
-
99
+
85
100
  end
86
101
  end
87
-
88
- end
102
+
103
+ end
@@ -1,3 +1,3 @@
1
1
  module OptimisClient
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: optimis_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-10 00:00:00.000000000 Z
12
+ date: 2012-10-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: typhoeus