class PaychexAPI::Client

Constants

API_PATH
ASSOCIATIONS_PATH
CHECKS_PATH
COMMUNICATIONS_PATH
COMPANIES_PATH
COMPENSATION_PATH
DIRECT_DEPOSITS_PATH
JOB_TITLES_PATH
MESSAGES_PATH
NOTIFICATIONS_PATH
OAUTH_TOKEN_PATH
ORGANIZATIONS_PATH
PAY_COMPONENTS_PATH
PAY_PERIODS_PATH
PURCHASES_PATH
STATUS_PATH
USERS_PATH
WORKERS_PATH
WORKER_STATUSES_PATH

Attributes

authorization[R]

Public Instance Methods

authorize() click to toggle source
# File lib/paychex_api/client.rb, line 62
def authorize
  response = faraday_auth.post(
    OAUTH_TOKEN_PATH,
    client_id: config[:client_id],
    client_secret: config[:client_secret],
    grant_type: 'client_credentials'
  )
  @authorization = response.body
  @authorization['expiration'] = Time.now + @authorization['expires_in'].to_i.seconds
end
default_faraday() click to toggle source
# File lib/paychex_api/client.rb, line 148
def default_faraday
  Faraday.new(url: config[:prefix]) do |faraday|
    faraday_config(faraday)
  end
end
faraday_auth() click to toggle source
# File lib/paychex_api/client.rb, line 142
def faraday_auth
  Faraday.new(url: config[:prefix]) do |faraday|
    faraday_auth_config(faraday)
  end
end
faraday_auth_config(faraday) click to toggle source
# File lib/paychex_api/client.rb, line 132
def faraday_auth_config(faraday)
  faraday = faraday_logger(faraday)
  faraday = faraday_auth_request(faraday)
  faraday = faraday_default_use(faraday)
  faraday = faraday_auth_headers(faraday)
  faraday = faraday_proxy(faraday)
  faraday.adapter Faraday.default_adapter
  faraday
end
faraday_auth_headers(faraday) click to toggle source
# File lib/paychex_api/client.rb, line 92
def faraday_auth_headers(faraday)
  faraday.headers[:accept]          = 'application/json'
  faraday.headers[:user_agent]      = 'Footrest'
  faraday
end
faraday_auth_request(faraday) click to toggle source
# File lib/paychex_api/client.rb, line 86
def faraday_auth_request(faraday)
  faraday.request :multipart
  faraday.request :url_encoded
  faraday
end
faraday_config(faraday) click to toggle source
# File lib/paychex_api/client.rb, line 122
def faraday_config(faraday)
  faraday = faraday_logger(faraday)
  faraday = faraday_default_request(faraday)
  faraday = faraday_default_use(faraday)
  faraday = faraday_default_headers(faraday)
  faraday = faraday_proxy(faraday)
  faraday.adapter Faraday.default_adapter
  faraday
end
faraday_default_headers(faraday) click to toggle source
# File lib/paychex_api/client.rb, line 98
def faraday_default_headers(faraday)
  faraday.headers['Content-Type'] = 'application/json'
  faraday
end
faraday_default_request(faraday) click to toggle source
# File lib/paychex_api/client.rb, line 103
def faraday_default_request(faraday)
  faraday.request :json
  faraday
end
faraday_default_use(faraday) click to toggle source
# File lib/paychex_api/client.rb, line 78
def faraday_default_use(faraday)
  faraday.use Footrest::ParseJson, content_type: /\bjson$/
  faraday.use Footrest::RaiseFootrestErrors
  faraday.use Footrest::Pagination
  faraday.use Footrest::FollowRedirects, limit: 5 if config[:follow_redirects]
  faraday
end
faraday_logger(faraday) click to toggle source
# File lib/paychex_api/client.rb, line 108
def faraday_logger(faraday)
  if config[:logger] == true
    faraday.response :logger
  elsif config[:logger]
    faraday.use Faraday::Response::Logger, config[:logger]
  end
  faraday
end
faraday_proxy(faraday) click to toggle source
# File lib/paychex_api/client.rb, line 117
def faraday_proxy(faraday)
  faraday.proxy PaychexAPI.proxy if PaychexAPI.proxy
  faraday
end
refresh_token!() click to toggle source
# File lib/paychex_api/client.rb, line 56
def refresh_token!
  config.delete(:token)
  authorize
  connection.headers[:authorization] = "Bearer #{token}"
end
request(method, &block) click to toggle source

Override Footrest request for ApiArray support

# File lib/paychex_api/client.rb, line 44
def request(method, &block)
  connection.headers[:authorization] = "Bearer #{token}"
  ApiArray.process_response(connection.send(method, &block), self)
end
set_connection(config) click to toggle source
# File lib/paychex_api/client.rb, line 73
def set_connection(config)
  config[:logger] = config[:logging] if config[:logging]
  @connection = default_faraday
end
token() click to toggle source
# File lib/paychex_api/client.rb, line 49
def token
  return config[:token] if config[:token].present?

  authorize if @authorization.blank? || @authorization['expiration'] <= Time.now - 30.seconds
  @authorization['access_token']
end