class Andpush::Client
Constants
- DEFAULT_OPTIONS
- HTTPS
Attributes
domain[R]
proxy_addr[R]
proxy_password[R]
proxy_port[R]
proxy_user[R]
request_handler[R]
Public Class Methods
new(domain, proxy_addr: nil, proxy_port: nil, proxy_user: nil, proxy_password: nil, request_handler: RequestHandler.new, **options)
click to toggle source
# File lib/andpush/client.rb, line 10 def initialize(domain, proxy_addr: nil, proxy_port: nil, proxy_user: nil, proxy_password: nil, request_handler: RequestHandler.new, **options) @domain = domain @proxy_addr = proxy_addr @proxy_port = proxy_port @proxy_user = proxy_user @proxy_password = proxy_password @interceptors = [] @observers = [] @request_handler = request_handler @options = DEFAULT_OPTIONS.merge(options) register_interceptor(JsonSerializer.new) register_observer(ResponseHandler.new) register_observer(JsonDeserializer.new) end
Public Instance Methods
push(body, query: {}, headers: {}, **options)
click to toggle source
# File lib/andpush/client.rb, line 36 def push(body, query: {}, headers: {}, **options) request(Net::HTTP::Post, uri('/fcm/send', query), body, headers, method: :push, **options) end
register_interceptor(interceptor)
click to toggle source
# File lib/andpush/client.rb, line 26 def register_interceptor(interceptor) @interceptors << interceptor self end
register_observer(observer)
click to toggle source
# File lib/andpush/client.rb, line 31 def register_observer(observer) @observers << observer self end
Private Instance Methods
request(request_class, uri, body, headers, options = {})
click to toggle source
# File lib/andpush/client.rb, line 62 def request(request_class, uri, body, headers, options = {}) uri, body, headers, options = @interceptors.reduce([uri, body, headers, @options.merge(options)]) { |r, i| i.before_request(*r) } response = begin request_handler.call(request_class, uri, headers, body, proxy_addr, proxy_port, proxy_user, proxy_password, options) rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e raise NetworkError, "A network error occurred: #{e.class} (#{e.message})" end @observers.reduce(response) { |r, o| o.received_response(r, options) } end
uri(path, query = {})
click to toggle source
# File lib/andpush/client.rb, line 74 def uri(path, query = {}) uri = URI.join(domain, path) uri.query = URI.encode_www_form(query) unless query.empty? uri end