gds-api-adapters 0.0.7 → 0.0.9
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 +3 -3
- data/lib/gds_api/json_utils.rb +12 -6
- data/lib/gds_api/test_helpers/imminence.rb +12 -0
- data/lib/gds_api/test_helpers/publisher.rb +27 -0
- data/lib/gds_api/version.rb +1 -1
- metadata +26 -14
data/lib/gds_api/base.rb
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
require_relative 'json_utils'
|
|
2
2
|
require 'cgi'
|
|
3
|
-
require '
|
|
3
|
+
require 'null_logger'
|
|
4
4
|
|
|
5
5
|
class GdsApi::Base
|
|
6
6
|
include GdsApi::JsonUtils
|
|
7
7
|
|
|
8
|
-
class <<self
|
|
8
|
+
class << self
|
|
9
9
|
attr_writer :logger
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def self.logger
|
|
13
|
-
@logger ||=
|
|
13
|
+
@logger ||= NullLogger.instance
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def initialize(platform, endpoint_url=nil)
|
data/lib/gds_api/json_utils.rb
CHANGED
|
@@ -14,11 +14,12 @@ module GdsApi::JsonUtils
|
|
|
14
14
|
TIMEOUT_IN_SECONDS = 0.5
|
|
15
15
|
|
|
16
16
|
def do_request(url, &block)
|
|
17
|
-
loggable = {request_uri: url, start_time: Time.now}
|
|
17
|
+
loggable = {request_uri: url, start_time: Time.now.to_f}
|
|
18
18
|
|
|
19
19
|
url = URI.parse(url)
|
|
20
20
|
request = url.path
|
|
21
21
|
request = request + "?" + url.query if url.query
|
|
22
|
+
logger.debug "I will request #{request}"
|
|
22
23
|
|
|
23
24
|
response = Net::HTTP.start(url.host, url.port) do |http|
|
|
24
25
|
http.read_timeout = TIMEOUT_IN_SECONDS
|
|
@@ -26,21 +27,26 @@ module GdsApi::JsonUtils
|
|
|
26
27
|
end
|
|
27
28
|
|
|
28
29
|
if response.is_a?(Net::HTTPSuccess)
|
|
29
|
-
|
|
30
|
+
logger.info loggable.merge(status: 'success', end_time: Time.now).to_json
|
|
30
31
|
JSON.parse(response.body)
|
|
31
32
|
else
|
|
32
|
-
loggable.merge!(status: '404', end_time: Time.now)
|
|
33
|
-
|
|
33
|
+
loggable.merge!(status: '404', end_time: Time.now.to_f)
|
|
34
|
+
logger.warn loggable.to_json
|
|
34
35
|
nil
|
|
35
36
|
end
|
|
36
37
|
rescue Errno::ECONNREFUSED
|
|
37
|
-
|
|
38
|
+
logger.error loggable.merge(status: 'refused', end_time: Time.now.to_f).to_json
|
|
38
39
|
raise GdsApi::EndpointNotFound.new("Could not connect to #{url}")
|
|
39
40
|
rescue Timeout::Error, Errno::ECONNRESET
|
|
40
|
-
|
|
41
|
+
logger.error loggable.merge(status: 'failed', end_time: Time.now.to_f).to_json
|
|
41
42
|
nil
|
|
42
43
|
end
|
|
43
44
|
|
|
45
|
+
def logger
|
|
46
|
+
GdsApi::Base.logger
|
|
47
|
+
end
|
|
48
|
+
private :logger
|
|
49
|
+
|
|
44
50
|
def get_json(url)
|
|
45
51
|
do_request(url) do |http, path|
|
|
46
52
|
http.get(path, REQUEST_HEADERS)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module GdsApi
|
|
2
|
+
module TestHelpers
|
|
3
|
+
module Imminence
|
|
4
|
+
def imminence_has_places(latitude, longitude, details)
|
|
5
|
+
response = JSON.dump(details['details'])
|
|
6
|
+
stub_request(:get, "http://imminence.test.alphagov.co.uk/places/#{details['slug']}.json").
|
|
7
|
+
with(:query => {"lat" => latitude, "lng" => longitude, "limit" => "5"}).
|
|
8
|
+
to_return(:status => 200, :body => response, :headers => {})
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -9,6 +9,33 @@ module GdsApi
|
|
|
9
9
|
stub_request(:get, uri).to_return(:body => json, :status => 200)
|
|
10
10
|
return uri
|
|
11
11
|
end
|
|
12
|
+
|
|
13
|
+
def publication_exists_for_snac(snac, details)
|
|
14
|
+
json = JSON.dump(details)
|
|
15
|
+
uri = "#{PUBLISHER_ENDPOINT}/publications/#{details['slug']}.json"
|
|
16
|
+
stub_request(:get, uri).with(:query => {:snac => snac.to_s}).to_return(:body => json, :status => 200)
|
|
17
|
+
return uri
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def publication_does_not_exist(details)
|
|
21
|
+
uri = "#{PUBLISHER_ENDPOINT}/publications/#{details['slug']}.json"
|
|
22
|
+
stub_request(:get, uri).to_return(:body => 'Not Found', :status => 404)
|
|
23
|
+
return uri
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def council_exists_for_slug(input_details, output_details)
|
|
27
|
+
json = JSON.dump(output_details)
|
|
28
|
+
slug = input_details.delete('slug')
|
|
29
|
+
uri = "#{PUBLISHER_ENDPOINT}/local_transactions/#{slug}/verify_snac.json"
|
|
30
|
+
stub_request(:post, uri).with(:body => JSON.dump(input_details),
|
|
31
|
+
:headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json', 'User-Agent'=>'GDS Api Client v. 0.0.7'}).
|
|
32
|
+
to_return(:body => json, :status => 200)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def no_council_for_slug(slug)
|
|
36
|
+
uri = "#{PUBLISHER_ENDPOINT}/local_transactions/#{slug}/verify_snac.json"
|
|
37
|
+
stub_request(:post, uri).to_return(:body => "", :status => 404)
|
|
38
|
+
end
|
|
12
39
|
end
|
|
13
40
|
end
|
|
14
41
|
end
|
data/lib/gds_api/version.rb
CHANGED
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.
|
|
4
|
+
version: 0.0.9
|
|
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: 2011-12-
|
|
12
|
+
date: 2011-12-15 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: plek
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70358011132760 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,10 +21,21 @@ dependencies:
|
|
|
21
21
|
version: '0'
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *70358011132760
|
|
25
|
+
- !ruby/object:Gem::Dependency
|
|
26
|
+
name: null_logger
|
|
27
|
+
requirement: &70358011115280 !ruby/object:Gem::Requirement
|
|
28
|
+
none: false
|
|
29
|
+
requirements:
|
|
30
|
+
- - ! '>='
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: *70358011115280
|
|
25
36
|
- !ruby/object:Gem::Dependency
|
|
26
37
|
name: rake
|
|
27
|
-
requirement: &
|
|
38
|
+
requirement: &70358011102660 !ruby/object:Gem::Requirement
|
|
28
39
|
none: false
|
|
29
40
|
requirements:
|
|
30
41
|
- - ~>
|
|
@@ -32,10 +43,10 @@ dependencies:
|
|
|
32
43
|
version: 0.9.2.2
|
|
33
44
|
type: :development
|
|
34
45
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *70358011102660
|
|
36
47
|
- !ruby/object:Gem::Dependency
|
|
37
48
|
name: webmock
|
|
38
|
-
requirement: &
|
|
49
|
+
requirement: &70358011083160 !ruby/object:Gem::Requirement
|
|
39
50
|
none: false
|
|
40
51
|
requirements:
|
|
41
52
|
- - ~>
|
|
@@ -43,10 +54,10 @@ dependencies:
|
|
|
43
54
|
version: '1.7'
|
|
44
55
|
type: :development
|
|
45
56
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *70358011083160
|
|
47
58
|
- !ruby/object:Gem::Dependency
|
|
48
59
|
name: rack
|
|
49
|
-
requirement: &
|
|
60
|
+
requirement: &70358011074400 !ruby/object:Gem::Requirement
|
|
50
61
|
none: false
|
|
51
62
|
requirements:
|
|
52
63
|
- - ! '>='
|
|
@@ -54,10 +65,10 @@ dependencies:
|
|
|
54
65
|
version: '0'
|
|
55
66
|
type: :development
|
|
56
67
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
68
|
+
version_requirements: *70358011074400
|
|
58
69
|
- !ruby/object:Gem::Dependency
|
|
59
70
|
name: simplecov
|
|
60
|
-
requirement: &
|
|
71
|
+
requirement: &70358011068120 !ruby/object:Gem::Requirement
|
|
61
72
|
none: false
|
|
62
73
|
requirements:
|
|
63
74
|
- - =
|
|
@@ -65,10 +76,10 @@ dependencies:
|
|
|
65
76
|
version: 0.4.2
|
|
66
77
|
type: :development
|
|
67
78
|
prerelease: false
|
|
68
|
-
version_requirements: *
|
|
79
|
+
version_requirements: *70358011068120
|
|
69
80
|
- !ruby/object:Gem::Dependency
|
|
70
81
|
name: simplecov-rcov
|
|
71
|
-
requirement: &
|
|
82
|
+
requirement: &70358011063780 !ruby/object:Gem::Requirement
|
|
72
83
|
none: false
|
|
73
84
|
requirements:
|
|
74
85
|
- - ! '>='
|
|
@@ -76,7 +87,7 @@ dependencies:
|
|
|
76
87
|
version: '0'
|
|
77
88
|
type: :development
|
|
78
89
|
prerelease: false
|
|
79
|
-
version_requirements: *
|
|
90
|
+
version_requirements: *70358011063780
|
|
80
91
|
description: A set of adapters providing easy access to the GDS gov.uk APIs
|
|
81
92
|
email:
|
|
82
93
|
- jystewart@gmail.com
|
|
@@ -95,6 +106,7 @@ files:
|
|
|
95
106
|
- lib/gds_api/part_methods.rb
|
|
96
107
|
- lib/gds_api/publisher.rb
|
|
97
108
|
- lib/gds_api/test_helpers/contactotron.rb
|
|
109
|
+
- lib/gds_api/test_helpers/imminence.rb
|
|
98
110
|
- lib/gds_api/test_helpers/panopticon.rb
|
|
99
111
|
- lib/gds_api/test_helpers/publisher.rb
|
|
100
112
|
- lib/gds_api/version.rb
|