Class: Fcmpush::Client
Constant Summary
Constants included from Batch
Instance Attribute Summary collapse
-
#access_token ⇒ Object
readonly
Returns the value of attribute access_token.
-
#access_token_expiry ⇒ Object
readonly
Returns the value of attribute access_token_expiry.
-
#configuration ⇒ Object
readonly
Returns the value of attribute configuration.
-
#connection ⇒ Object
readonly
Returns the value of attribute connection.
-
#domain ⇒ Object
readonly
Returns the value of attribute domain.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#server_key ⇒ Object
readonly
Returns the value of attribute server_key.
Instance Method Summary collapse
- #batch_push(messages, query: {}, headers: {}) ⇒ Object
-
#initialize(domain, project_id, configuration, **options) ⇒ Client
constructor
A new instance of Client.
- #push(body, query: {}, headers: {}) ⇒ Object
- #subscribe(topic, *instance_ids, query: {}, headers: {}) ⇒ Object
- #unsubscribe(topic, *instance_ids, query: {}, headers: {}) ⇒ Object
- #v1_authorize ⇒ Object
Methods included from Batch
#create_part, #make_batch_payload, #serialize_sub_request
Constructor Details
#initialize(domain, project_id, configuration, **options) ⇒ Client
Returns a new instance of Client.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/fcmpush/client.rb', line 17 def initialize(domain, project_id, configuration, **) @domain = domain @project_id = project_id @path = V1_ENDPOINT_PREFIX + project_id.to_s + V1_ENDPOINT_SUFFIX @options = {}.merge() @configuration = configuration.dup access_token_response = @access_token = access_token_response['access_token'] @access_token_expiry = Time.now.utc + access_token_response['expires_in'] # @server_key = configuration.server_key @connection = Net::HTTP::Persistent.new @connection.open_timeout = configuration.open_timeout if configuration.open_timeout @connection.read_timeout = configuration.read_timeout if configuration.read_timeout if !configuration.proxy # do nothing elsif configuration.proxy == :ENV @connection.proxy = :ENV elsif configuration.proxy && configuration.proxy[:uri] uri = URI(configuration.proxy[:uri]) # user name must not be a empty string, password can if configuration.proxy[:user] && configuration.proxy[:user].strip != '' uri.user = configuration.proxy[:user] uri.password = configuration.proxy[:password] if configuration.proxy[:password] end @connection.proxy = uri end end |
Instance Attribute Details
#access_token ⇒ Object (readonly)
Returns the value of attribute access_token.
15 16 17 |
# File 'lib/fcmpush/client.rb', line 15 def access_token @access_token end |
#access_token_expiry ⇒ Object (readonly)
Returns the value of attribute access_token_expiry.
15 16 17 |
# File 'lib/fcmpush/client.rb', line 15 def access_token_expiry @access_token_expiry end |
#configuration ⇒ Object (readonly)
Returns the value of attribute configuration.
15 16 17 |
# File 'lib/fcmpush/client.rb', line 15 def configuration @configuration end |
#connection ⇒ Object (readonly)
Returns the value of attribute connection.
15 16 17 |
# File 'lib/fcmpush/client.rb', line 15 def connection @connection end |
#domain ⇒ Object (readonly)
Returns the value of attribute domain.
15 16 17 |
# File 'lib/fcmpush/client.rb', line 15 def domain @domain end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
15 16 17 |
# File 'lib/fcmpush/client.rb', line 15 def path @path end |
#server_key ⇒ Object (readonly)
Returns the value of attribute server_key.
15 16 17 |
# File 'lib/fcmpush/client.rb', line 15 def server_key @server_key end |
Instance Method Details
#batch_push(messages, query: {}, headers: {}) ⇒ Object
90 91 92 93 94 95 96 |
# File 'lib/fcmpush/client.rb', line 90 def batch_push(, query: {}, headers: {}) uri, request = make_batch_request(, query, headers) response = exception_handler(connection.request(uri, request)) BatchResponse.new(response) rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e raise NetworkError, "A network error occurred: #{e.class} (#{e.})" end |
#push(body, query: {}, headers: {}) ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/fcmpush/client.rb', line 66 def push(body, query: {}, headers: {}) uri, request = make_push_request(body, query, headers) response = exception_handler(connection.request(uri, request)) JsonResponse.new(response) rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e raise NetworkError, "A network error occurred: #{e.class} (#{e.})" end |
#subscribe(topic, *instance_ids, query: {}, headers: {}) ⇒ Object
74 75 76 77 78 79 80 |
# File 'lib/fcmpush/client.rb', line 74 def subscribe(topic, *instance_ids, query: {}, headers: {}) uri, request = make_subscription_request(topic, *instance_ids, :subscribe, query, headers) response = exception_handler(connection.request(uri, request)) JsonResponse.new(response) rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e raise NetworkError, "A network error occurred: #{e.class} (#{e.})" end |
#unsubscribe(topic, *instance_ids, query: {}, headers: {}) ⇒ Object
82 83 84 85 86 87 88 |
# File 'lib/fcmpush/client.rb', line 82 def unsubscribe(topic, *instance_ids, query: {}, headers: {}) uri, request = make_subscription_request(topic, *instance_ids, :unsubscribe, query, headers) response = exception_handler(connection.request(uri, request)) JsonResponse.new(response) rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e raise NetworkError, "A network error occurred: #{e.class} (#{e.})" end |
#v1_authorize ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/fcmpush/client.rb', line 47 def @auth ||= if configuration.json_key_io io = if configuration.json_key_io.respond_to?(:read) configuration.json_key_io else File.open(configuration.json_key_io) end io.rewind if io.respond_to?(:read) Google::Auth::ServiceAccountCredentials.make_creds( json_key_io: io, scope: configuration.scope ) else # from ENV Google::Auth::ServiceAccountCredentials.make_creds(scope: configuration.scope) end @auth.fetch_access_token end |