Class: PaychexAPI::Client

Inherits:
Footrest::Client
  • Object
show all
Defined in:
lib/paychex_api/client.rb,
lib/paychex_api/client/users.rb,
lib/paychex_api/client/workers.rb,
lib/paychex_api/client/messages.rb,
lib/paychex_api/client/companies.rb,
lib/paychex_api/client/purchases.rb,
lib/paychex_api/client/associations.rb,
lib/paychex_api/client/notifications.rb

Defined Under Namespace

Modules: Associations, Companies, Messages, Notifications, Purchases, Users, Workers

Constant Summary collapse

API_PATH =
''.freeze
COMPANIES_PATH =
'/companies'.freeze
ASSOCIATIONS_PATH =
'/'.freeze
ORGANIZATIONS_PATH =
'/organizations'.freeze
JOB_TITLES_PATH =
'/jobtitles'.freeze
WORKER_STATUSES_PATH =
'/workerstatuses'.freeze
MESSAGES_PATH =
'/messages'.freeze
NOTIFICATIONS_PATH =
'/notifications'.freeze
WORKERS_PATH =
'/workers'.freeze
COMMUNICATIONS_PATH =
'/communications'.freeze
COMPENSATION_PATH =
'/compensation'.freeze
DIRECT_DEPOSITS_PATH =
'/directdeposits'.freeze
PAY_PERIODS_PATH =
'/payperiods'.freeze
PAY_COMPONENTS_PATH =
'/paycomponents'.freeze
CHECKS_PATH =
'/checks'.freeze
OAUTH_TOKEN_PATH =
'/auth/oauth/v2/token'.freeze
USERS_PATH =
'/users'.freeze
PURCHASES_PATH =
'/purchases'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#authorizationObject (readonly)

Returns the value of attribute authorization.



34
35
36
# File 'lib/paychex_api/client.rb', line 34

def authorization
  @authorization
end

Instance Method Details

#authorizeObject



48
49
50
51
52
53
54
55
56
57
# File 'lib/paychex_api/client.rb', line 48

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_faradayObject



134
135
136
137
138
# File 'lib/paychex_api/client.rb', line 134

def default_faraday
  Faraday.new(url: config[:prefix]) do |faraday|
    faraday_config(faraday)
  end
end

#faraday_authObject



128
129
130
131
132
# File 'lib/paychex_api/client.rb', line 128

def faraday_auth
  Faraday.new(url: config[:prefix]) do |faraday|
    faraday_auth_config(faraday)
  end
end

#faraday_auth_config(faraday) ⇒ Object



118
119
120
121
122
123
124
125
126
# File 'lib/paychex_api/client.rb', line 118

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) ⇒ Object



78
79
80
81
82
# File 'lib/paychex_api/client.rb', line 78

def faraday_auth_headers(faraday)
  faraday.headers[:accept]          = 'application/json'
  faraday.headers[:user_agent]      = 'Footrest'
  faraday
end

#faraday_auth_request(faraday) ⇒ Object



72
73
74
75
76
# File 'lib/paychex_api/client.rb', line 72

def faraday_auth_request(faraday)
  faraday.request :multipart
  faraday.request :url_encoded
  faraday
end

#faraday_config(faraday) ⇒ Object



108
109
110
111
112
113
114
115
116
# File 'lib/paychex_api/client.rb', line 108

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) ⇒ Object



84
85
86
87
# File 'lib/paychex_api/client.rb', line 84

def faraday_default_headers(faraday)
  faraday.headers['Content-Type'] = 'application/json'
  faraday
end

#faraday_default_request(faraday) ⇒ Object



89
90
91
92
# File 'lib/paychex_api/client.rb', line 89

def faraday_default_request(faraday)
  faraday.request :json
  faraday
end

#faraday_default_use(faraday) ⇒ Object



64
65
66
67
68
69
70
# File 'lib/paychex_api/client.rb', line 64

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) ⇒ Object



94
95
96
97
98
99
100
101
# File 'lib/paychex_api/client.rb', line 94

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) ⇒ Object



103
104
105
106
# File 'lib/paychex_api/client.rb', line 103

def faraday_proxy(faraday)
  faraday.proxy PaychexAPI.proxy if PaychexAPI.proxy
  faraday
end

#request(method, &block) ⇒ Object

Override Footrest request for ApiArray support



42
43
44
45
46
# File 'lib/paychex_api/client.rb', line 42

def request(method, &block)
  authorize if @authorization.blank? || @authorization['expiration'] <= Time.now - 30.seconds
  connection.headers[:authorization] = "Bearer #{@authorization['access_token']}"
  ApiArray.process_response(connection.send(method, &block), self)
end

#set_connection(config) ⇒ Object



59
60
61
62
# File 'lib/paychex_api/client.rb', line 59

def set_connection(config)
  config[:logger] = config[:logging] if config[:logging]
  @connection = default_faraday
end