Class: Notifiable::Sender
- Inherits:
-
Object
- Object
- Notifiable::Sender
- Defined in:
- lib/notifiable/sender.rb
Instance Method Summary collapse
-
#initialize(access_id, base_uri: 'https://notifiable.futureworkshops.com', secret_key: nil, logger: Logger.new(STDOUT)) ⇒ Sender
constructor
A new instance of Sender.
- #send_media_notification_to_users(user_aliases, media_url, title: nil, message: nil, parameters: {}, content_available: nil, thread_id: nil, category: nil, expiry: nil, filters: []) ⇒ Object
-
#send_notification(title: nil, message: nil, parameters: nil, filters: nil, content_available: nil, thread_id: nil, mutable_content: nil, category: nil, expiry: nil) ⇒ Object
Params: - filters: An array of hashes to filter notifications, e.g.
- #send_notification_to_users(user_aliases, title: nil, message: nil, parameters: nil, content_available: nil, thread_id: nil, mutable_content: nil, category: nil, expiry: nil, filters: []) ⇒ Object
Constructor Details
#initialize(access_id, base_uri: 'https://notifiable.futureworkshops.com', secret_key: nil, logger: Logger.new(STDOUT)) ⇒ Sender
Returns a new instance of Sender.
8 9 10 11 12 13 |
# File 'lib/notifiable/sender.rb', line 8 def initialize(access_id, base_uri: 'https://notifiable.futureworkshops.com', secret_key: nil, logger: Logger.new(STDOUT)) raise 'base_uri cannot be nil' if !base_uri || base_uri.empty? raise 'access_id cannot be nil' if !access_id || access_id.empty? @base_uri, @access_id, @secret_key, @logger = base_uri, access_id, secret_key, logger end |
Instance Method Details
#send_media_notification_to_users(user_aliases, media_url, title: nil, message: nil, parameters: {}, content_available: nil, thread_id: nil, category: nil, expiry: nil, filters: []) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/notifiable/sender.rb', line 15 def send_media_notification_to_users(user_aliases, media_url, title: nil, message: nil, parameters: {}, content_available: nil, thread_id: nil, category: nil, expiry: nil, filters: []) raise 'user_aliases should be an array' unless user_aliases.is_a? Array raise 'media_url should not be blank' if media_url.nil? || media_url.empty? parameters = {media_url: media_url}.merge(parameters) filters = filters + [{property: "user_alias", predicate: "in", value: user_aliases}] send_notification(title: title, message: , parameters: parameters, content_available: content_available, filters: filters, thread_id: thread_id, mutable_content: true, category: category, expiry: expiry) end |
#send_notification(title: nil, message: nil, parameters: nil, filters: nil, content_available: nil, thread_id: nil, mutable_content: nil, category: nil, expiry: nil) ⇒ Object
Params:
-
filters: An array of hashes to filter notifications, e.g. [“alert_level”, predicate: “lt”, value: 3]
-
expiry: The system will not retry delivery past this date.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/notifiable/sender.rb', line 35 def send_notification(title: nil, message: nil, parameters: nil, filters: nil, content_available: nil, thread_id: nil, mutable_content: nil, category: nil, expiry: nil) body = {} body[:title] = title unless title.nil? body[:message] = unless .nil? body[:parameters] = parameters.to_json unless parameters.nil? body[:filters] = filters.to_json unless filters.nil? body[:content_available] = content_available unless content_available.nil? body[:thread_id] = thread_id unless thread_id.nil? body[:mutable_content] = mutable_content unless mutable_content.nil? body[:category] = category unless category.nil? body[:expiry] = expiry unless expiry.nil? headers = {} headers[:authorization] = @access_id unless @secret_key @request = RestClient::Request.new url: "#{@base_uri}/api/v1/notifications", payload: {notification: body}, method: :post, headers: headers @request = ApiAuth.sign!(@request, @access_id, @secret_key) if @secret_key begin @request.execute rescue RestClient::ExceptionWithResponse => e @logger.warn "Request failed with code: #{e.response.code} body: #{e.response.body}" end end |
#send_notification_to_users(user_aliases, title: nil, message: nil, parameters: nil, content_available: nil, thread_id: nil, mutable_content: nil, category: nil, expiry: nil, filters: []) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/notifiable/sender.rb', line 24 def send_notification_to_users(user_aliases, title: nil, message: nil, parameters: nil, content_available: nil, thread_id: nil, mutable_content: nil, category: nil, expiry: nil, filters: []) raise 'user_aliases should be an array' unless user_aliases.is_a? Array filters = filters + [{property: "user_alias", predicate: "in", value: user_aliases}] send_notification(title: title, message: , parameters: parameters, content_available: content_available, filters: filters, thread_id: thread_id, mutable_content: mutable_content, category: category, expiry: expiry) end |