Class: Her::Middleware::OAuthProviderHeader

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/her/middleware/o_auth_provider_header.rb

Overview

OAuthProviderHeader

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.add_header(headers) ⇒ Object



8
9
10
# File 'lib/her/middleware/o_auth_provider_header.rb', line 8

def add_header(headers)
  headers.merge! Authorization: "Bearer #{refresh_token['access_token']}"
end

.passwordObject



42
43
44
45
46
# File 'lib/her/middleware/o_auth_provider_header.rb', line 42

def password
  uri = URI("#{token_url}?#{URI.encode_www_form(password_params)}")
  res = Net::HTTP.post_form(uri, {})
  JSON.parse(res.body)
end

.password_paramsObject



27
28
29
30
31
32
33
34
35
36
# File 'lib/her/middleware/o_auth_provider_header.rb', line 27

def password_params
  {
    client_id: Parasut.options.client_id,
    client_secret: Parasut.options.client_secret,
    username: Parasut.options.username,
    password: Parasut.options.password,
    grant_type: 'password',
    redirect_uri: 'urn:ietf:wg:oauth:2.0:oob'
  }
end

.refresh_tokenObject



12
13
14
15
16
# File 'lib/her/middleware/o_auth_provider_header.rb', line 12

def refresh_token
  uri = URI("#{token_url}?#{URI.encode_www_form(refresh_token_params)}")
  res = Net::HTTP.post_form(uri, {})
  JSON.parse(res.body)
end

.refresh_token_paramsObject



18
19
20
21
22
23
24
25
# File 'lib/her/middleware/o_auth_provider_header.rb', line 18

def refresh_token_params
  {
    client_id: Parasut.options.client_id,
    client_secret: Parasut.options.client_secret,
    grant_type: 'refresh_token',
    refresh_token: password['refresh_token']
  }
end

.token_urlObject



38
39
40
# File 'lib/her/middleware/o_auth_provider_header.rb', line 38

def token_url
  "#{Parasut.options.api_base_url}/oauth/token"
end

Instance Method Details

#call(env) ⇒ Object

end static



53
54
55
56
# File 'lib/her/middleware/o_auth_provider_header.rb', line 53

def call(env)
  Her::Middleware::OAuthProviderHeader.add_header(env[:request_headers])
  @app.call(env)
end