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