gds-api-adapters 0.0.40 → 0.0.41

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.
data/lib/gds_api/base.rb CHANGED
@@ -4,11 +4,11 @@ require 'null_logger'
4
4
 
5
5
  class GdsApi::Base
6
6
  extend Forwardable
7
-
7
+
8
8
  def client
9
9
  @client ||= create_client
10
10
  end
11
-
11
+
12
12
  def create_client
13
13
  if options[:access_key]
14
14
  GdsApi::OAuth2Client.new(options)
@@ -16,8 +16,8 @@ class GdsApi::Base
16
16
  GdsApi::JsonClient.new(options)
17
17
  end
18
18
  end
19
-
20
- def_delegators :client, :get_json, :post_json, :put_json
19
+
20
+ def_delegators :client, :get_json, :post_json, :put_json, :get_raw
21
21
 
22
22
  attr_reader :options
23
23
 
@@ -15,7 +15,7 @@ module GdsApi
15
15
  def panopticon_api
16
16
  @panopticon_api ||= GdsApi::Panopticon.new(Plek.current.environment, panopticon_api_credentials)
17
17
  end
18
-
18
+
19
19
  def panopticon_api_credentials
20
20
  Object::const_defined?(:PANOPTICON_API_CREDENTIALS) ? PANOPTICON_API_CREDENTIALS : {}
21
21
  end
@@ -18,4 +18,8 @@ class GdsApi::Imminence < GdsApi::Base
18
18
  o
19
19
  }
20
20
  end
21
+
22
+ def places_kml(type)
23
+ get_raw("#{@endpoint}/places/#{type}.kml")
24
+ end
21
25
  end
@@ -28,19 +28,46 @@ module GdsApi
28
28
  }
29
29
  DEFAULT_TIMEOUT_IN_SECONDS = 2
30
30
 
31
+ def get_raw(url)
32
+ do_raw_request(Net::HTTP::Get, url)
33
+ end
34
+
31
35
  def get_json(url)
32
- @cache[url] ||= do_request(Net::HTTP::Get, url)
36
+ @cache[url] ||= do_json_request(Net::HTTP::Get, url)
33
37
  end
34
38
 
35
39
  def post_json(url, params)
36
- do_request(Net::HTTP::Post, url, params)
40
+ do_json_request(Net::HTTP::Post, url, params)
37
41
  end
38
42
 
39
43
  def put_json(url, params)
40
- do_request(Net::HTTP::Put, url, params)
44
+ do_json_request(Net::HTTP::Put, url, params)
41
45
  end
42
46
 
43
47
  private
48
+ def do_raw_request(method_class, url, params = nil)
49
+ response, loggable = do_request(method_class, url, params)
50
+ response.body
51
+ end
52
+
53
+ def do_json_request(method_class, url, params = nil)
54
+ response, loggable = do_request(method_class, url, params)
55
+
56
+ if response.is_a?(Net::HTTPSuccess)
57
+ logger.info loggable.merge(status: 'success', end_time: Time.now.to_f).to_json
58
+ Response.new(response)
59
+ else
60
+ body = begin
61
+ JSON.parse(response.body)
62
+ rescue
63
+ response.body
64
+ end
65
+ loggable.merge!(status: response.code, end_time: Time.now.to_f, body: body)
66
+ logger.warn loggable.to_json
67
+ nil
68
+ end
69
+ end
70
+
44
71
  def do_request(method_class, url, params = nil)
45
72
  loggable = {request_uri: url, start_time: Time.now.to_f}
46
73
  start_logging = loggable.merge(action: 'start')
@@ -60,19 +87,8 @@ module GdsApi
60
87
  http.request(request)
61
88
  end
62
89
 
63
- if response.is_a?(Net::HTTPSuccess)
64
- logger.info loggable.merge(status: 'success', end_time: Time.now.to_f).to_json
65
- Response.new(response)
66
- else
67
- body = begin
68
- JSON.parse(response.body)
69
- rescue
70
- response.body
71
- end
72
- loggable.merge!(status: response.code, end_time: Time.now.to_f, body: body)
73
- logger.warn loggable.to_json
74
- nil
75
- end
90
+ return response, loggable
91
+
76
92
  rescue Errno::ECONNREFUSED => e
77
93
  logger.error loggable.merge(status: 'refused', error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
78
94
  raise GdsApi::EndpointNotFound.new("Could not connect to #{url}")
@@ -6,13 +6,13 @@ module GdsApi
6
6
  class Response
7
7
  extend Forwardable
8
8
  include Enumerable
9
-
9
+
10
10
  def_delegators :to_hash, :[], :"<=>", :each
11
-
11
+
12
12
  def initialize(net_http_response)
13
13
  @net_http_response = net_http_response
14
14
  end
15
-
15
+
16
16
  def to_hash
17
17
  @parsed ||= JSON.parse(@net_http_response.body)
18
18
  end
@@ -20,7 +20,7 @@ module GdsApi
20
20
  def to_ostruct
21
21
  self.class.build_ostruct_recursively(to_hash)
22
22
  end
23
-
23
+
24
24
  def method_missing(method)
25
25
  if to_hash.has_key?(method.to_s)
26
26
  to_ostruct.send(method)
@@ -28,16 +28,16 @@ module GdsApi
28
28
  nil
29
29
  end
30
30
  end
31
-
31
+
32
32
  def respond_to_missing?(method, include_private)
33
33
  to_hash.has_key?(method.to_s)
34
34
  end
35
-
35
+
36
36
  def present?; ! blank?; end
37
37
  def blank?; false; end
38
-
38
+
39
39
  private
40
-
40
+
41
41
  def self.build_ostruct_recursively(value)
42
42
  case value
43
43
  when Hash
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = '0.0.40'
2
+ VERSION = '0.0.41'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gds-api-adapters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.40
4
+ version: 0.0.41
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-24 00:00:00.000000000 Z
12
+ date: 2012-01-26 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: plek
16
- requirement: &27792140 !ruby/object:Gem::Requirement
16
+ requirement: &70148847744340 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *27792140
24
+ version_requirements: *70148847744340
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: null_logger
27
- requirement: &27791720 !ruby/object:Gem::Requirement
27
+ requirement: &70148847743920 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *27791720
35
+ version_requirements: *70148847743920
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: lrucache
38
- requirement: &27791220 !ruby/object:Gem::Requirement
38
+ requirement: &70148847743420 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.1.1
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *27791220
46
+ version_requirements: *70148847743420
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &27790720 !ruby/object:Gem::Requirement
49
+ requirement: &70148847742920 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.9.2.2
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *27790720
57
+ version_requirements: *70148847742920
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: webmock
60
- requirement: &27790260 !ruby/object:Gem::Requirement
60
+ requirement: &70148847742460 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '1.7'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *27790260
68
+ version_requirements: *70148847742460
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mocha
71
- requirement: &27789800 !ruby/object:Gem::Requirement
71
+ requirement: &70148847742000 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.10.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *27789800
79
+ version_requirements: *70148847742000
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: minitest
82
- requirement: &27789340 !ruby/object:Gem::Requirement
82
+ requirement: &70148847772240 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 2.10.0
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *27789340
90
+ version_requirements: *70148847772240
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rack
93
- requirement: &27788960 !ruby/object:Gem::Requirement
93
+ requirement: &70148847771860 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *27788960
101
+ version_requirements: *70148847771860
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: simplecov
104
- requirement: &27788420 !ruby/object:Gem::Requirement
104
+ requirement: &70148847771320 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 0.5.4
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *27788420
112
+ version_requirements: *70148847771320
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: simplecov-rcov
115
- requirement: &27788000 !ruby/object:Gem::Requirement
115
+ requirement: &70148847770900 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,7 +120,7 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *27788000
123
+ version_requirements: *70148847770900
124
124
  description: A set of adapters providing easy access to the GDS gov.uk APIs
125
125
  email:
126
126
  - jystewart@gmail.com
@@ -128,34 +128,34 @@ executables: []
128
128
  extensions: []
129
129
  extra_rdoc_files: []
130
130
  files:
131
- - lib/gds_api/response.rb
132
- - lib/gds_api/panopticon/registerer.rb
131
+ - lib/gds_api/base.rb
132
+ - lib/gds_api/contactotron.rb
133
133
  - lib/gds_api/core-ext/openstruct.rb
134
- - lib/gds_api/part_methods.rb
135
- - lib/gds_api/oauth2_client.rb
136
- - lib/gds_api/test_helpers/imminence.rb
137
- - lib/gds_api/test_helpers/contactotron.rb
138
- - lib/gds_api/test_helpers/panopticon.rb
139
- - lib/gds_api/test_helpers/json_client_helper.rb
140
- - lib/gds_api/test_helpers/publisher.rb
134
+ - lib/gds_api/exceptions.rb
135
+ - lib/gds_api/helpers.rb
141
136
  - lib/gds_api/imminence.rb
137
+ - lib/gds_api/json_client.rb
142
138
  - lib/gds_api/needotron.rb
143
- - lib/gds_api/contactotron.rb
139
+ - lib/gds_api/oauth2_client.rb
140
+ - lib/gds_api/panopticon/registerer.rb
144
141
  - lib/gds_api/panopticon.rb
145
- - lib/gds_api/helpers.rb
146
- - lib/gds_api/json_client.rb
142
+ - lib/gds_api/part_methods.rb
147
143
  - lib/gds_api/publisher.rb
148
- - lib/gds_api/exceptions.rb
144
+ - lib/gds_api/response.rb
145
+ - lib/gds_api/test_helpers/contactotron.rb
146
+ - lib/gds_api/test_helpers/imminence.rb
147
+ - lib/gds_api/test_helpers/json_client_helper.rb
148
+ - lib/gds_api/test_helpers/panopticon.rb
149
+ - lib/gds_api/test_helpers/publisher.rb
149
150
  - lib/gds_api/version.rb
150
- - lib/gds_api/base.rb
151
151
  - README.md
152
152
  - Rakefile
153
+ - test/contactotron_api_test.rb
153
154
  - test/gds_api_base_test.rb
155
+ - test/json_client_test.rb
156
+ - test/panopticon_api_test.rb
154
157
  - test/publisher_api_test.rb
155
158
  - test/test_helper.rb
156
- - test/panopticon_api_test.rb
157
- - test/json_client_test.rb
158
- - test/contactotron_api_test.rb
159
159
  homepage: http://github.com/alphagov/gds-api-adapters
160
160
  licenses: []
161
161
  post_install_message:
@@ -176,14 +176,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
176
  version: '0'
177
177
  requirements: []
178
178
  rubyforge_project:
179
- rubygems_version: 1.8.11
179
+ rubygems_version: 1.8.10
180
180
  signing_key:
181
181
  specification_version: 3
182
182
  summary: Adapters to work with GDS APIs
183
183
  test_files:
184
+ - test/contactotron_api_test.rb
184
185
  - test/gds_api_base_test.rb
186
+ - test/json_client_test.rb
187
+ - test/panopticon_api_test.rb
185
188
  - test/publisher_api_test.rb
186
189
  - test/test_helper.rb
187
- - test/panopticon_api_test.rb
188
- - test/json_client_test.rb
189
- - test/contactotron_api_test.rb