class RubyPushNotifications::GCM::GCMConnection
Encapsulates a connection to the GCM
service Responsible for final connection with the service.
@author Carlos Alonso
Constants
- AUTHORIZATION_HEADER
@private Authorization HTTP Header String
- CONTENT_TYPE_HEADER
@private Content-Type HTTP Header string
- GCM_URL
@private The URL of the Android
GCM
endpoint- JSON_CONTENT_TYPE
@private Application/JSON content type
Public Class Methods
post(notification, key, options = {})
click to toggle source
Issues a POST request to the GCM
send endpoint to submit the given notifications.
@param notification [String]. The text to POST @param key [String]. The GCM
sender id to use
(https://developer.android.com/google/gcm/gcm.html#senderid)
@param options [Hash] optional. Options for post. Currently supports:
* url [String]: URL of the GCM endpoint. Defaults to the official GCM URL. * open_timeout [Integer]: Number of seconds to wait for the connection to open. Defaults to 30. * read_timeout [Integer]: Number of seconds to wait for one block to be read. Defaults to 30.
@return [GCMResponse]. The GCMResponse
that encapsulates the received response
# File lib/ruby-push-notifications/gcm/gcm_connection.rb, line 35 def self.post(notification, key, options = {}) headers = { CONTENT_TYPE_HEADER => JSON_CONTENT_TYPE, AUTHORIZATION_HEADER => "key=#{key}" } url = URI.parse options.fetch(:url, GCM_URL) http = Net::HTTP.new url.host, url.port http.use_ssl = url.scheme == 'https' http.verify_mode = OpenSSL::SSL::VERIFY_NONE http.open_timeout = options.fetch(:open_timeout, 30) http.read_timeout = options.fetch(:read_timeout, 30) response = http.post url.path, notification, headers GCMResponse.new response.code.to_i, response.body end