gds-api-adapters 30.2.1 → 30.3.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: 969acb8ae599f5c52ed298ddd20c282defb88372
4
- data.tar.gz: 195b6054704e7dd2d48aa363e984e04633914c36
3
+ metadata.gz: 1ea4fb424e88b660a8ecb6ea9a088abf135983aa
4
+ data.tar.gz: ff6e5fd6357f9078dbc63762f498e3c47fc4d0d8
5
5
  SHA512:
6
- metadata.gz: e6850acb92b32f599b93073fff01b73deb2fb857a8d5578dfcc9e5d35c96c4c4fceadbf999295b00c166c21fe6daccbe0031807826b2425677698efe6e3b772e
7
- data.tar.gz: 1d16735000c6ab008c52ab4a69f8485b54c25eace4c38b0298f04e6e1982cad0a825e313f74d13d073e8a427e0dbd944aa766fb15e1f5ad837b0d170fac6b4a9
6
+ metadata.gz: 396bb7e3cddb5f262656439e1ef8c52795fa8b76f54e2339875e9d7d9ecd3e81843af9fdd8b1e050e9ca7293e22ee60b7af0078b7787235005f32fd972965ced
7
+ data.tar.gz: 173c4784e54d85ffdb1b6411572283a4082a5344cf0bb5b5ea87c6dabf500eef4b19963f6d26dc80109463bc9610d889eef7e5e757062de761f4c5f9810a2330
data/README.md CHANGED
@@ -12,9 +12,9 @@ results = rummager.unified_search(q: "taxes")
12
12
 
13
13
  Example adapters for frequently used applications:
14
14
 
15
- - [Publishing API](lib/gds_api/publishing_api_v2.rb) ([docs](http://www.rubydoc.info/gems/gds-api-adapters/GdsApi/PublishingApiV2), [test helper code](https://github.com/alphagov/gds-api-adapters/blob/master/lib/gds_api/test_helpers/publishing_api_v2.rb), [test helper docs](http://www.rubydoc.info/gems/gds-api-adapters/GdsApi/TestHelpers/PublishingApiV2))
16
- - [Content Store](lib/gds_api/content_store.rb) ([docs](http://www.rubydoc.info/gems/gds-api-adapters/GdsApi/ContentStore), [test helper code](https://github.com/alphagov/gds-api-adapters/blob/master/lib/gds_api/test_helpers/content_store.rb), [test helper docs](http://www.rubydoc.info/gems/gds-api-adapters/GdsApi/TestHelpers/ContentStore))
17
- - [Rummager](lib/gds_api/publishing_api_v2.rb) ([docs](http://www.rubydoc.info/gems/gds-api-adapters/GdsApi/Rummager), [test helper code](https://github.com/alphagov/gds-api-adapters/blob/master/lib/gds_api/test_helpers/rummager.rb), [test helper docs](http://www.rubydoc.info/gems/gds-api-adapters/GdsApi/TestHelpers/Rummager))
15
+ - [Publishing API](lib/gds_api/publishing_api_v2.rb) ([docs](http://www.rubydoc.info/github/alphagov/gds-api-adapters/master/GdsApi/PublishingApiV2), [test helper code](https://github.com/alphagov/gds-api-adapters/blob/master/lib/gds_api/test_helpers/publishing_api_v2.rb), [test helper docs](http://www.rubydoc.info/github/alphagov/gds-api-adapters/master/GdsApi/TestHelpers/PublishingApiV2))
16
+ - [Content Store](lib/gds_api/content_store.rb) ([docs](http://www.rubydoc.info/github/alphagov/gds-api-adapters/master/GdsApi/ContentStore), [test helper code](https://github.com/alphagov/gds-api-adapters/blob/master/lib/gds_api/test_helpers/content_store.rb), [test helper docs](http://www.rubydoc.info/github/alphagov/gds-api-adapters/master/GdsApi/TestHelpers/ContentStore))
17
+ - [Rummager](lib/gds_api/publishing_api_v2.rb) ([docs](http://www.rubydoc.info/github/alphagov/gds-api-adapters/master/GdsApi/Rummager), [test helper code](https://github.com/alphagov/gds-api-adapters/blob/master/lib/gds_api/test_helpers/rummager.rb), [test helper docs](http://www.rubydoc.info/github/alphagov/gds-api-adapters/master/GdsApi/TestHelpers/Rummager))
18
18
 
19
19
  ## Logging
20
20
 
@@ -1,8 +1,14 @@
1
1
  require_relative 'base'
2
2
  require_relative 'exceptions'
3
3
 
4
+ # Adapter for the Email Alert API
5
+ #
6
+ # @see https://github.com/alphagov/email-alert-api
4
7
  class GdsApi::EmailAlertApi < GdsApi::Base
5
8
 
9
+ # Get or Post subscriber list
10
+ #
11
+ # @param attributes [Hash] document_type, links, tags used to search existing subscriber lists
6
12
  def find_or_create_subscriber_list(attributes)
7
13
  tags = attributes["tags"]
8
14
  links = attributes["links"]
@@ -23,10 +29,33 @@ class GdsApi::EmailAlertApi < GdsApi::Base
23
29
  create_subscriber_list(attributes)
24
30
  end
25
31
 
32
+ # Post notification
33
+ #
34
+ # @param publication [Hash] Valid publication attributes
26
35
  def send_alert(publication)
27
36
  post_json!("#{endpoint}/notifications", publication)
28
37
  end
29
38
 
39
+ # Get notifications
40
+ #
41
+ # @option start_at [String] Optional GovDelivery bulletin id to page back through notifications
42
+ #
43
+ # @return [Hash] notifications
44
+ def notifications(start_at=nil)
45
+ url = "#{endpoint}/notifications"
46
+ url += "?start_at=#{start_at}" if start_at
47
+ get_json!(url)
48
+ end
49
+
50
+ # Get notification
51
+ #
52
+ # @param id [String] GovDelivery bulletin id
53
+ #
54
+ # @return [Hash] notification
55
+ def notification(id)
56
+ get_json!("#{endpoint}/notifications/#{id}")
57
+ end
58
+
30
59
  private
31
60
 
32
61
  def search_subscriber_list(params)
@@ -74,6 +74,27 @@ module GdsApi
74
74
  assert_requested(:post, notifications_url, times: 1, &matcher)
75
75
  end
76
76
 
77
+ def email_alert_api_has_notifications(notifications, start_at=nil)
78
+ url = notifications_url
79
+ url += "?start_at=#{start_at}" if start_at
80
+ url_regexp = Regexp.new("^#{Regexp.escape(url)}$")
81
+
82
+ stub_request(:get, url_regexp)
83
+ .to_return(
84
+ status: 200,
85
+ body: notifications.to_json
86
+ )
87
+ end
88
+
89
+ def email_alert_api_has_notification(notification)
90
+ url = "#{notifications_url}/#{notification['web_service_bulletin']['to_param']}"
91
+
92
+ stub_request(:get, url).to_return(
93
+ status: 200,
94
+ body: notification.to_json
95
+ )
96
+ end
97
+
77
98
  private
78
99
 
79
100
  def subscriber_lists_url(attributes = nil)
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = '30.2.1'
2
+ VERSION = '30.3.0'
3
3
  end
@@ -159,4 +159,33 @@ describe GdsApi::EmailAlertApi do
159
159
  end
160
160
  end
161
161
  end
162
+ describe "notifications" do
163
+ it "retrieves notifications" do
164
+ stubbed_request = email_alert_api_has_notifications([
165
+ {"subject" => "Foo"}, {"subject" => "Bar"}
166
+ ])
167
+ api_client.notifications
168
+ assert_requested(stubbed_request)
169
+ end
170
+
171
+ it "uses the start_at param if present" do
172
+ stubbed_request = email_alert_api_has_notifications([
173
+ {"subject" => "Foo"}, {"subject" => "Bar"}
174
+ ], "101AA")
175
+ api_client.notifications("101AA")
176
+ assert_requested(stubbed_request)
177
+ end
178
+ end
179
+
180
+ describe "notification" do
181
+ before do
182
+ @stubbed_request = email_alert_api_has_notification({
183
+ "web_service_bulletin" => { "to_param" => "10001001" }
184
+ })
185
+ end
186
+ it "retrieves a notification by id" do
187
+ api_client.notification("10001001")
188
+ assert_requested(@stubbed_request)
189
+ end
190
+ end
162
191
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gds-api-adapters
3
3
  version: !ruby/object:Gem::Version
4
- version: 30.2.1
4
+ version: 30.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Stewart
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-29 00:00:00.000000000 Z
11
+ date: 2016-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: plek