Class: PushRadar::Client

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

Instance Method Summary collapse

Constructor Details

#initialize(secret_key) ⇒ Client

Returns a new instance of Client.



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/pushradar/client.rb', line 7

def initialize(secret_key)
  unless secret_key.is_a?(String)
    raise PushRadar::Error, 'Secret key must be a string.'
  end

  unless secret_key.start_with?('sk_')
    raise PushRadar::Error, 'Please provide your PushRadar secret key. You can find it on the API page of your dashboard.'
  end

  @secret_key = secret_key
  @api_endpoint = 'https://api.pushradar.com/v3'
end

Instance Method Details

#auth(channel_name, socket_id) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/pushradar/client.rb', line 47

def auth(channel_name, socket_id)
  unless channel_name.is_a?(String)
    raise PushRadar::Error, 'Channel name must be a string.'
  end

  if channel_name.nil? || channel_name.strip.empty?
    raise PushRadar::Error, 'Channel name empty. Please provide a channel name.'
  end

  unless channel_name.start_with?('private-') || channel_name.start_with?('presence-')
    raise PushRadar::Error, 'Channel authentication can only be used with private and presence channels.'
  end

  unless socket_id.is_a?(String)
    raise PushRadar::Error, 'Socket ID must be a string.'
  end

  if socket_id.nil? || socket_id.strip.empty?
    raise PushRadar::Error, 'Socket ID empty. Please pass through a socket ID.'
  end

  response = do_http_request('GET', @api_endpoint + "/channels/auth?channel=" + CGI.escape(channel_name) + "&socketID=" + CGI.escape(socket_id), {})
  if response[:status] === 200
    JSON(response[:body])['token']
  else
    raise PushRadar::Error, 'There was a problem receiving a channel authentication token. Server returned: ' + response[:body]
  end
end

#broadcast(channel_name, data) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/pushradar/client.rb', line 28

def broadcast(channel_name, data)
  unless channel_name.is_a?(String)
    raise PushRadar::Error, 'Channel name must be a string.'
  end

  if channel_name.nil? || channel_name.strip.empty?
    raise PushRadar::Error, 'Channel name empty. Please provide a channel name.'
  end

  validate_channel_name(channel_name)
  response = do_http_request('POST', @api_endpoint + "/broadcasts", { channel: channel_name, data: data.to_json })

  if response[:status] === 200
    true
  else
    raise PushRadar::Error, 'An error occurred while calling the API. Server returned: ' + response[:body]
  end
end

#register_client_data(socket_id, client_data) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/pushradar/client.rb', line 76

def register_client_data(socket_id, client_data)
  unless socket_id.is_a?(String)
    raise PushRadar::Error, 'Socket ID must be a string.'
  end

  if socket_id.nil? || socket_id.strip.empty?
    raise PushRadar::Error, 'Socket ID empty. Please pass through a socket ID.'
  end

  response = do_http_request('POST', @api_endpoint + "/client-data", { socketID: socket_id, clientData: client_data.to_json })

  if response[:status] === 200
    true
  else
    raise PushRadar::Error, 'An error occurred while calling the API. Server returned: ' + response[:body]
  end
end