gds-api-adapters 30.2.1 → 30.3.0

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.
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