lib/faraday/panoptes/client_credentials_authentication.rb in faraday-panoptes-0.2.0 vs lib/faraday/panoptes/client_credentials_authentication.rb in faraday-panoptes-0.3.0
- old
+ new
@@ -1,20 +1,25 @@
require 'faraday'
require 'faraday_middleware'
module Faraday
module Panoptes
+
+ class CredentialsOAuthError < StandardError
+ end
+
class ClientCredentialsAuthentication < Faraday::Middleware
dependency do
require 'json' unless defined?(::JSON)
end
def initialize(app, url:, client_id:, client_secret:)
super(app)
@client_id = client_id
@client_secret = client_secret
@conn = Faraday.new(url: url)
+ @current_token = nil
end
def call(env)
env[:request_headers]["Authorization"] = authorization_header
@app.call(env)
@@ -43,9 +48,11 @@
def get_token
result = @conn.post("/oauth/token",
grant_type: 'client_credentials',
client_id: @client_id,
client_secret: @client_secret)
+
+ raise CredentialsOAuthError.new "Failed to obtain access token" if result.status == 401 or result.status == 422 or result.body.empty?
JSON.parse(result.body)
end
end
end
end