class ShiftPlanning::Connection

Attributes

http[R]

Public Class Methods

new(key) click to toggle source
# File lib/shift_planning/connection.rb, line 4
def initialize(key)
  @key = key
  @token = nil
  @http = Faraday.new(url: "http://www.shiftplanning.com") do |conn|
    conn.request :url_encoded

    conn.response :json
    conn.response :logger

    conn.adapter Faraday.default_adapter
  end
end

Public Instance Methods

authenticated?() click to toggle source
# File lib/shift_planning/connection.rb, line 34
def authenticated?
  @token && !@token.empty?
end
call(method, command, params = {}) click to toggle source
# File lib/shift_planning/connection.rb, line 17
def call(method, command, params = {})
  request_params = {
    request: params.merge(
      method: method,
      module: command
    ),
    output: 'json'
  }

  response = http.post('/api/', data: JSON::generate(signed_params(request_params))).body
  ShiftPlanning::ApiError.parse(response['status'])

  parse_data response do |data|
    @token = data['token'] if data.has_key?('token')
  end
end

Private Instance Methods

parse_data(response_data, &block) click to toggle source
# File lib/shift_planning/connection.rb, line 40
def parse_data(response_data, &block)
  data = response_data
  block.call(data) if block_given?
  data['data']
end
signed_params(params) click to toggle source
# File lib/shift_planning/connection.rb, line 46
def signed_params(params)
  params.merge(key: @key, token: @token)
end