Sha256: 1185ce93ff5410c3cd7b778666566f2a2166c711ea1d8f4806f713a5c48495be

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

module Lifen
  class UserAuthenticatedClient < Client

    def initialize(token)
      @token = token
    end

    attr_reader :token

    def request(mode, url, params = {})
      response = faraday_client.send(mode) do |req|
        req.url url

        req.headers['x-auth-token']     = token
        req.headers['Content-Type']     = "application/json"

        req.body = JSON.generate(params)
      end

      if response.status == 500
        json = JSON.parse response.body

        trace_id = json.fetch("X-B3-TraceId", "unknown")
        raise Error, "Error 500, Internal server error (trace ID: #{trace_id})"
      end

      raise UnauthorizedError, "Token is not valid" if response.status == 401
      raise Error, "Action is forbidden" if response.status == 403
      raise InvalidParamsError, "Invalid params" if response.status == 400

      json = JSON.parse response.body

      json
    end

    def post(url, params = {})
      request(:post, url, params)
    end

    def get(url, params = {})
      request(:get, url, params)
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lifen-0.2.1 lib/lifen/user_authenticated_client.rb
lifen-0.2.0 lib/lifen/user_authenticated_client.rb
lifen-0.1.5 lib/lifen/user_authenticated_client.rb