Class: WSocketIO::PushClient
- Inherits:
-
Object
- Object
- WSocketIO::PushClient
- Defined in:
- lib/wsocket_io.rb
Overview
─── Push Client ────────────────────────────────────────────
Instance Method Summary collapse
- #add_channel(member_id, channel:) ⇒ Object
- #broadcast(payload:) ⇒ Object
- #delete_subscription(subscription_id) ⇒ Object
- #get_vapid_key ⇒ Object
-
#initialize(base_url:, token:, app_id:) ⇒ PushClient
constructor
A new instance of PushClient.
- #list_subscriptions(member_id: nil, platform: nil, limit: nil) ⇒ Object
- #register_apns(device_token:, member_id:) ⇒ Object
- #register_fcm(device_token:, member_id:) ⇒ Object
- #remove_channel(member_id, channel:) ⇒ Object
- #send_to_member(member_id, payload:) ⇒ Object
- #unregister(member_id, platform: nil) ⇒ Object
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_key ⇒ Object
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 |