module Cropio::Connection::Authenticable
Contains authentication options for connection.
Public Instance Methods
authenticate!()
click to toggle source
Public interface for authentication request
# File lib/cropio/connection/authenticable.rb, line 6 def authenticate! auth_request end
Protected Instance Methods
auth_request()
click to toggle source
Send authentication request.
# File lib/cropio/connection/authenticable.rb, line 25 def auth_request process_result RestClient.post(url_for('sign_in'), auth_request_params.to_json, authentication_headers) rescue RestClient::Unauthorized => e process_result(e.http_body) end
auth_request_params()
click to toggle source
Return params based on user credentials.
# File lib/cropio/connection/authenticable.rb, line 46 def auth_request_params { user_login: { email: Cropio.credentials.email, password: Cropio.credentials.password } } rescue NoMethodError => e process_auth_params_error(e) || raise(e) end
authenticate_before(*methods)
click to toggle source
Define wrappers around specified methods to be sure they are authenticated.
# File lib/cropio/connection/authenticable.rb, line 14 def authenticate_before(*methods) methods.each do |method_name| unauthentificated_method = method(method_name) singleton_class.send(:define_method, method_name) do |*args| authenticate! unless authenticated? unauthentificated_method.call(*args) end end end
authenticated?()
click to toggle source
Returns true if user has api token.
# File lib/cropio/connection/authenticable.rb, line 58 def authenticated? !Cropio.credentials.api_token.nil? rescue NoMethodError => e e.name == :api_token ? false : raise(e) end
process_auth_params_error(e)
click to toggle source
Process NoMethodError and prints norification if exeption was produced by empty credentials.
# File lib/cropio/connection/authenticable.rb, line 66 def process_auth_params_error(e) return unless %i(email password).include?(e.name) fail "Cropio credentials is not specified: #{e.name}" end
process_result(result)
click to toggle source
Process result returned by authentication request.
# File lib/cropio/connection/authenticable.rb, line 34 def process_result(result) result = JSON.parse(result) if result['success'] Cropio.credentials.api_token = result['user_api_token'] true else fail 'Access to Cropio denied.' end end