Class: GdsApi::EmailAlertApi

Inherits:
Base
  • Object
show all
Defined in:
lib/gds_api/email_alert_api.rb

Overview

Adapter for the Email Alert API

Instance Attribute Summary

Attributes inherited from Base

#options

Instance Method Summary collapse

Methods inherited from Base

#client, #create_client, #get_list, #initialize, #url_for_slug

Constructor Details

This class inherits a constructor from GdsApi::Base

Instance Method Details

#change_subscriber(id:, new_address:) ⇒ Hash

Patch a Subscriber

Parameters:

  • Subscriber (integer)

    id

  • Subscriber (string)

    new_address

Returns:

  • (Hash)

    subscriber



167
168
169
170
171
172
# File 'lib/gds_api/email_alert_api.rb', line 167

def change_subscriber(id:, new_address:)
  patch_json(
    "#{endpoint}/subscribers/#{id}",
    new_address: new_address
  )
end

#change_subscription(id:, frequency:) ⇒ Hash

Patch a Subscription

Parameters:

  • Subscription (string)

    id

  • Subscription (string)

    frequency

Returns:

  • (Hash)

    subscription



180
181
182
183
184
185
# File 'lib/gds_api/email_alert_api.rb', line 180

def change_subscription(id:, frequency:)
  patch_json(
    "#{endpoint}/subscriptions/#{id}",
    frequency: frequency
  )
end

#create_auth_token(address:, destination:, redirect: nil) ⇒ Hash

Create an authentication token for a subscriber

Parameters:

  • address (string)

    Email address of subscriber to create token for

  • destination (string)

    Path on GOV.UK that subscriber will be emailed

  • redirect (string, nil) (defaults to: nil)

    Path on GOV.UK to be encoded into the token for redirecting

Returns:

  • (Hash)

    subscriber



195
196
197
198
199
200
201
202
# File 'lib/gds_api/email_alert_api.rb', line 195

def create_auth_token(address:, destination:, redirect: nil)
  post_json(
    "#{endpoint}/subscribers/auth-token",
    address: address,
    destination: destination,
    redirect: redirect,
  )
end

#create_subscriber_list(attributes) ⇒ Object

Post a subscriber list

Parameters:

  • attributes (Hash)

    document_type, links, tags used to search existing subscriber lists



53
54
55
# File 'lib/gds_api/email_alert_api.rb', line 53

def create_subscriber_list(attributes)
  post_json("#{endpoint}/subscriber-lists", attributes)
end

#find_or_create_subscriber_list(attributes) ⇒ Object

Get or Post subscriber list

Parameters:

  • attributes (Hash)

    document_type, links, tags used to search existing subscriber lists



12
13
14
15
16
# File 'lib/gds_api/email_alert_api.rb', line 12

def find_or_create_subscriber_list(attributes)
  find_subscriber_list(attributes)
rescue GdsApi::HTTPNotFound
  create_subscriber_list(attributes)
end

#find_subscriber_list(attributes) ⇒ Object

Get a subscriber list

Parameters:

  • attributes (Hash)

    document_type, links, tags used to search existing subscriber lists



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/gds_api/email_alert_api.rb', line 21

def find_subscriber_list(attributes)
  tags = attributes["tags"]
  links = attributes["links"]
  document_type = attributes["document_type"]
  email_document_supertype = attributes["email_document_supertype"]
  government_document_supertype = attributes["government_document_supertype"]
  gov_delivery_id = attributes["gov_delivery_id"]
  content_purpose_supergroup = attributes["content_purpose_supergroup"]
  reject_content_purpose_supergroup = attributes["reject_content_purpose_supergroup"]

  if tags && links
    message = "please provide either tags or links (or neither), but not both"
    raise ArgumentError, message
  end

  params = {}
  params[:tags] = tags if tags
  params[:links] = links if links
  params[:document_type] = document_type if document_type
  params[:email_document_supertype] = email_document_supertype if email_document_supertype
  params[:government_document_supertype] = government_document_supertype if government_document_supertype
  params[:gov_delivery_id] = gov_delivery_id if gov_delivery_id
  params[:content_purpose_supergroup] = content_purpose_supergroup if content_purpose_supergroup
  params[:reject_content_purpose_supergroup] = reject_content_purpose_supergroup if reject_content_purpose_supergroup

  query_string = nested_query_string(params)
  get_json("#{endpoint}/subscriber-lists?" + query_string)
end

#get_subscribable(reference:) ⇒ Hash

Get a Subscribable

}

Returns:

  • (Hash)

    subscribable: { id title gov_delivery_id created_at updated_at document_type tags links email_document_supertype government_document_supertype subscriber_count



131
132
133
# File 'lib/gds_api/email_alert_api.rb', line 131

def get_subscribable(reference:)
  get_json("#{endpoint}/subscribables/#{reference}")
end

#get_subscription(id) ⇒ Hash

Get a Subscription

}

Returns:

  • (Hash)

    subscription: { id subscriber_list subscriber created_at updated_at ended_at ended_reason frequency source



148
149
150
# File 'lib/gds_api/email_alert_api.rb', line 148

def get_subscription(id)
  get_json("#{endpoint}/subscriptions/#{id}")
end

#get_subscriptions(id:) ⇒ Hash

Get Subscriptions for a Subscriber

Parameters:

  • Subscriber (integer)

    id

Returns:

  • (Hash)

    subscriber, subscriptions



157
158
159
# File 'lib/gds_api/email_alert_api.rb', line 157

def get_subscriptions(id:)
  get_json("#{endpoint}/subscribers/#{id}/subscriptions")
end

#send_alert(publication, headers = {}) ⇒ Object

Post notification

Parameters:

  • publication (Hash)

    Valid publication attributes



60
61
62
# File 'lib/gds_api/email_alert_api.rb', line 60

def send_alert(publication, headers = {})
  post_json("#{endpoint}/notifications", publication, headers)
end

#send_unpublish_message(message) ⇒ Object

Unpublishing alert

Used by email-alert-service to send a message to email-alert-api when an unpublishing message is put on the Rabbitmq queue by publishing-api

Parameters:

  • message (Hash)

    content_id



71
72
73
# File 'lib/gds_api/email_alert_api.rb', line 71

def send_unpublish_message(message)
  post_json("#{endpoint}/unpublish-messages", message)
end

#subscribe(subscribable_id:, address:, frequency: "immediately") ⇒ Hash

Subscribe

Returns:

  • (Hash)

    subscription_id



107
108
109
110
111
112
113
114
# File 'lib/gds_api/email_alert_api.rb', line 107

def subscribe(subscribable_id:, address:, frequency: "immediately")
  post_json(
    "#{endpoint}/subscriptions",
    subscribable_id: subscribable_id,
    address: address,
    frequency: frequency,
  )
end

#topic_matches(attributes) ⇒ Hash

Get topic matches

email_document_supertype, government_document_supertype

Parameters:

  • attributes (Hash)

    tags, links, document_type,

Returns:

  • (Hash)

    topics, enabled, disabled



81
82
83
84
# File 'lib/gds_api/email_alert_api.rb', line 81

def topic_matches(attributes)
  query_string = nested_query_string(attributes)
  get_json("#{endpoint}/topic-matches.json?#{query_string}")
end

#unsubscribe(uuid) ⇒ nil

Unsubscribe subscriber from subscription

Parameters:

  • Subscription (string)

    uuid

Returns:

  • (nil)


91
92
93
# File 'lib/gds_api/email_alert_api.rb', line 91

def unsubscribe(uuid)
  post_json("#{endpoint}/unsubscribe/#{uuid}")
end

#unsubscribe_subscriber(id) ⇒ nil

Unsubscribe subscriber from everything

Parameters:

  • Subscriber (integer)

    id

Returns:

  • (nil)


100
101
102
# File 'lib/gds_api/email_alert_api.rb', line 100

def unsubscribe_subscriber(id)
  delete_json("#{endpoint}/subscribers/#{id}")
end