class Researchable::PdfRenderer::Sessions::BasicAuthSession

Attributes

api_url[R]
password[R]
username[R]

Public Class Methods

new(api_url: ENV['SVC_PDFRENDERER_URL'], username: ENV['SVC_PDFRENDERER_BASICAUTH_ID'], password: ENV['SVC_PDFRENDERER_BASICAUTH_SECRET']) click to toggle source
# File lib/researchable/pdf_renderer/sessions/basic_auth_session.rb, line 11
def initialize(api_url: ENV['SVC_PDFRENDERER_URL'],
               username: ENV['SVC_PDFRENDERER_BASICAUTH_ID'],
               password: ENV['SVC_PDFRENDERER_BASICAUTH_SECRET'])
  @api_url = api_url
  @username = username
  @password = password
end

Public Instance Methods

delete(path, params = {}) click to toggle source
# File lib/researchable/pdf_renderer/sessions/basic_auth_session.rb, line 46
def delete(path, params = {})
  perform_request_or_fail do
    HTTParty.delete(full_url_for(path),
                    query: params,
                    basic_auth: basic_auth)
  end
end
get(path, params = {}) click to toggle source
# File lib/researchable/pdf_renderer/sessions/basic_auth_session.rb, line 19
def get(path, params = {})
  perform_request_or_fail do
    HTTParty.get(full_url_for(path),
                 query: params,
                 basic_auth: basic_auth)
  end
end
patch(path, params = {}) click to toggle source
# File lib/researchable/pdf_renderer/sessions/basic_auth_session.rb, line 37
def patch(path, params = {})
  perform_request_or_fail do
    HTTParty.patch(full_url_for(path),
                   headers: { 'Content-Type' => 'application/json' },
                   body: params.to_json,
                   basic_auth: basic_auth)
  end
end
post(path, params = {}) click to toggle source
# File lib/researchable/pdf_renderer/sessions/basic_auth_session.rb, line 27
def post(path, params = {})
  perform_request_or_fail do
    HTTParty.post(full_url_for(path),
                  #headers: { 'Content-Type' => 'multip' },
                  multipart: true,
                  body: params,
                  basic_auth: basic_auth)
  end
end

Private Instance Methods

access_denied(response) click to toggle source
# File lib/researchable/pdf_renderer/sessions/basic_auth_session.rb, line 68
def access_denied(response)
  if response.headers['WWW-Authenticate']
    raise NoSession
  else
    raise Unauthorized
  end
end
api_base() click to toggle source
# File lib/researchable/pdf_renderer/sessions/basic_auth_session.rb, line 80
def api_base
  '/api/v1'
end
basic_auth() click to toggle source
# File lib/researchable/pdf_renderer/sessions/basic_auth_session.rb, line 84
def basic_auth
  { username: username, password: password }
end
full_url_for(path) click to toggle source
# File lib/researchable/pdf_renderer/sessions/basic_auth_session.rb, line 76
def full_url_for(path)
  api_url + api_base + path
end
perform_request_or_fail() { || ... } click to toggle source
# File lib/researchable/pdf_renderer/sessions/basic_auth_session.rb, line 56
def perform_request_or_fail
  response = yield
  case response.code
  when 200..299, 422
    response
  when 401
    access_denied(response)
  else
    raise response.parsed_response || "Received HTTP response code #{response.code}!"
  end
end