lib/f1api/oauth/credentials_authentication.rb in f1api-0.9.11 vs lib/f1api/oauth/credentials_authentication.rb in f1api-0.10.0

- old
+ new

@@ -1,38 +1,43 @@ module FellowshipOneAPI # :nodoc: module OAuth # Implements the Credentials method of authentication. You must manage the credentials. module CredentialsAuthentication include OAuth - # Authorizes a user + # Authenticates a user and throws and error if unable # +username+:: The username of the user # +password+:: The password of the user # +type+:: Can be :portal or :weblink based on which credentials you want to authenticate against # Returns the URI for the authenticated user def authenticate!(username, password, type = :portal) - load_consumer_config(type) if @oauth_consumer.nil? - - cred = URI.encode(Base64.encode64("#{username} #{password}")) - - case type - when :portal - auth_url = FellowshipOneAPI::Configuration.portal_credential_token_path - when :weblink - auth_url = FellowshipOneAPI::Configuration.weblink_credential_token_path - end - - response = @oauth_consumer.request(:post, auth_url, nil, {}, "ec=#{cred}", {'Content-Type' => 'application/x-www-form-urlencoded'}) - + response = get_api_response(username, password, type) + handle_response_code(response) - # Gettting the URI of the authenticated user @authenticated_user_uri = response["Content-Location"] end alias :authorize! :authenticate! + # Authenticates a user and returns true if successful + # +username+:: The username of the user + # +password+:: The password of the user + # +type+:: Can be :portal or :weblink based on which credentials you want to authenticate against + # Returns _true_ if was able to authenticate, _false_ if not + def authenticate(username, password, type = :portal) + response = get_api_response(username, password, type) + + if(response.code.to_i == 400) + return false + end + handle_response_code(response) + @authenticated_user_uri = response["Content-Location"] + return true + end + alias :authorize :authenticate + private - def handle_response_code(response) + def handle_response_code(response) case response.code.to_i when (200..299) @oauth_access_token = ::OAuth::AccessToken.from_hash(@oauth_consumer, parse_access_token(response.body)) when (300..399) # redirect @@ -42,10 +47,25 @@ raise OAuth::Unauthorized, response else response.error! end end - + + def get_api_response(username, password, type) + load_consumer_config(type) if @oauth_consumer.nil? + + cred = URI.encode(Base64.encode64("#{username} #{password}")) + + case type + when :portal + auth_url = FellowshipOneAPI::Configuration.portal_credential_token_path + when :weblink + auth_url = FellowshipOneAPI::Configuration.weblink_credential_token_path + end + + @oauth_consumer.request(:post, auth_url, nil, {}, "ec=#{cred}", {'Content-Type' => 'application/x-www-form-urlencoded'}) + end + # Parse returned OAuth access token key/secret pair def parse_access_token(response) oauth_hash = {} response.split('&').each do |val| kv = val.split('=')