Class: ActionPushNative::Service::Apns::HttpxSession

Inherits:
Object
  • Object
show all
Defined in:
lib/action_push_native/service/apns/httpx_session.rb

Constant Summary collapse

DEFAULT_POOL_SIZE =
5
DEFAULT_REQUEST_TIMEOUT =
30.seconds
DEVELOPMENT_SERVER_URL =
"https://api.sandbox.push.apple.com:443"
PRODUCTION_SERVER_URL =
"https://api.push.apple.com:443"

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ HttpxSession

Returns a new instance of HttpxSession.



9
10
11
12
13
14
15
16
17
# File 'lib/action_push_native/service/apns/httpx_session.rb', line 9

def initialize(config)
  @session = \
    HTTPX.
      plugin(:persistent, close_on_fork: true).
      with(pool_options: { max_connections: config[:connection_pool_size] || DEFAULT_POOL_SIZE }).
      with(timeout: { request_timeout: config[:request_timeout] || DEFAULT_REQUEST_TIMEOUT }).
      with(origin: config[:connect_to_development_server] ? DEVELOPMENT_SERVER_URL : PRODUCTION_SERVER_URL)
  @token_provider = ActionPushNative::Service::Apns::TokenProvider.new(config)
end

Instance Method Details

#post(*uri, **options) ⇒ Object



19
20
21
22
# File 'lib/action_push_native/service/apns/httpx_session.rb', line 19

def post(*uri, **options)
  options[:headers][:authorization] = "Bearer #{token_provider.fresh_access_token}"
  session.post(*uri, **options)
end