Sha256: 4f9ce1a5145a6abca6ed2f8e5dcf8e97aa032ac853148118104a33b7c87c6a8b

Contents?: true

Size: 1.81 KB

Versions: 1

Compression:

Stored size: 1.81 KB

Contents

module Auth
  module Lh
    class Api
      include Singleton

      attr_accessor :endpoint, :return_url, :application_code, :access_token

      def self.configure(args={})
        instance.endpoint = (args[:endpoint] || 'https://auth.lhconfort.com.ar')
        instance.return_url = args[:return_url]
        instance.application_code = args[:application_code]
        instance.access_token = args[:access_token]
      end

      def logged_user(session_token, remote_ip)
        result = get_request '/logged_user', {
          app_code: @application_code,
          session_token: session_token,
          remote_ip: remote_ip
        }

        SessionResponse.new(result)
      end

      def login_url
        login_attempt = create_login_attempt
        "#{@endpoint}/login?attempt=#{login_attempt.token}"
      end

      def logout_url
        "#{@endpoint}/logout?return=#{CGI::escape(@return_url)}"
      end

      def get_user(code_or_login)
        User.new(get_request("/api/users/#{code_or_login}"))
      end

      def get_users(filters={})
        results = get_request("/api/users", filters)
        results.map { |r| User.new(r) }
      end

      protected

      def create_login_attempt
        params = { app_code: @application_code }

        if @return_url
          params[:return_url] = @return_url
        end

        LoginAttempt.new(post_request('/login_attempts', params))
      end

      def get_request(action, params={})
        response = RestClient.get("#{@endpoint}#{action}", {params: params}.merge(auth_headers))
        JSON.parse(response.body)
      end

      def post_request(action, params={})
        JSON.parse(RestClient.post("#{@endpoint}#{action}", params, auth_headers))
      end

      def auth_headers
        { authorization: "Token token=\"#{@access_token}\"" }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
auth-lh-0.0.7 lib/auth/lh/api.rb