Class: WSocketIO::PushClient

Inherits:
Object
  • Object
show all
Defined in:
lib/wsocket_io.rb

Overview

─── Push Client ────────────────────────────────────────────

Instance Method Summary collapse

Constructor Details

#initialize(base_url:, token:, app_id:) ⇒ PushClient

Returns a new instance of PushClient.



184
185
186
187
188
# File 'lib/wsocket_io.rb', line 184

def initialize(base_url:, token:, app_id:)
  @base_url = base_url
  @token = token
  @app_id = app_id
end

Instance Method Details

#add_channel(member_id, channel:) ⇒ Object



221
222
223
# File 'lib/wsocket_io.rb', line 221

def add_channel(member_id, channel:)
  post('channels/add', { memberId: member_id, channel: channel })
end

#broadcast(payload:) ⇒ Object



202
203
204
# File 'lib/wsocket_io.rb', line 202

def broadcast(payload:)
  post('broadcast', { payload: payload })
end

#delete_subscription(subscription_id) ⇒ Object



215
216
217
218
219
# File 'lib/wsocket_io.rb', line 215

def delete_subscription(subscription_id)
  uri = URI("#{@base_url}/api/push/subscriptions/#{subscription_id}")
  req = Net::HTTP::Delete.new(uri, headers)
  Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') { |http| http.request(req) }
end

#get_vapid_keyObject



229
230
231
232
233
234
235
# File 'lib/wsocket_io.rb', line 229

def get_vapid_key
  uri = URI("#{@base_url}/api/push/vapid-key")
  req = Net::HTTP::Get.new(uri, headers)
  resp = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') { |http| http.request(req) }
  data = JSON.parse(resp.body)
  data['vapidPublicKey']
end

#list_subscriptions(member_id: nil, platform: nil, limit: nil) ⇒ Object



237
238
239
240
241
242
243
244
245
246
247
# File 'lib/wsocket_io.rb', line 237

def list_subscriptions(member_id: nil, platform: nil, limit: nil)
  params = []
  params << "memberId=#{member_id}" if member_id
  params << "platform=#{platform}" if platform
  params << "limit=#{limit}" if limit
  qs = params.any? ? "?#{params.join('&')}" : ''
  uri = URI("#{@base_url}/api/push/subscriptions#{qs}")
  req = Net::HTTP::Get.new(uri, headers)
  resp = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') { |http| http.request(req) }
  JSON.parse(resp.body)
end

#register_apns(device_token:, member_id:) ⇒ Object



194
195
196
# File 'lib/wsocket_io.rb', line 194

def register_apns(device_token:, member_id:)
  post('register', { memberId: member_id, platform: 'apns', subscription: { deviceToken: device_token } })
end

#register_fcm(device_token:, member_id:) ⇒ Object



190
191
192
# File 'lib/wsocket_io.rb', line 190

def register_fcm(device_token:, member_id:)
  post('register', { memberId: member_id, platform: 'fcm', subscription: { deviceToken: device_token } })
end

#remove_channel(member_id, channel:) ⇒ Object



225
226
227
# File 'lib/wsocket_io.rb', line 225

def remove_channel(member_id, channel:)
  post('channels/remove', { memberId: member_id, channel: channel })
end

#send_to_member(member_id, payload:) ⇒ Object



198
199
200
# File 'lib/wsocket_io.rb', line 198

def send_to_member(member_id, payload:)
  post('send', { memberId: member_id, payload: payload })
end

#unregister(member_id, platform: nil) ⇒ Object



206
207
208
209
210
211
212
213
# File 'lib/wsocket_io.rb', line 206

def unregister(member_id, platform: nil)
  body = { memberId: member_id }
  body[:platform] = platform if platform
  uri = URI("#{@base_url}/api/push/unregister")
  req = Net::HTTP::Delete.new(uri, headers)
  req.body = body.to_json
  Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') { |http| http.request(req) }
end