module Crowdtilt

Attributes

api_key[RW]
api_secret[RW]
base_url[RW]
mode[RW]
version[RW]

Public Class Methods

configure(params) click to toggle source
# File lib/crowdtilt/crowdtilt.rb, line 12
def configure(params)
  raise ArgumentError, "You must include both the api_key and api_secret" unless (params.include?(:api_key) && params.include?(:api_secret))
  @api_key = params[:api_key]
  @api_secret = params[:api_secret]

  @version = 'v1'

  if params[:mode] == 'production'
    @mode = 'production'
    @base_url = 'https://api.tilt.com'
  else
    @mode = 'sandbox'
    @base_url = 'https://api-sandbox.tilt.com'
  end

  @base_url = params[:base_url] if params[:base_url]
  @version = params[:version] if params[:version]

  true
end
create_user(user) click to toggle source
# File lib/crowdtilt/crowdtilt.rb, line 73
def create_user(user)
  post("/users", { :user => user })['user']
end
delete(string) click to toggle source
# File lib/crowdtilt/crowdtilt.rb, line 57
def delete(string)
  if block_given?
    request :delete, uri(string), &Proc.new
  else
    request :delete, uri(string)
  end
end
get(string) click to toggle source
# File lib/crowdtilt/crowdtilt.rb, line 33
def get(string)
  if block_given?
    request :get, uri(string), &Proc.new
  else
    request :get, uri(string)
  end
end
get_user(id) click to toggle source
# File lib/crowdtilt/crowdtilt.rb, line 69
def get_user(id)
  get("/users/#{id}")['user']
end
get_users() click to toggle source
# File lib/crowdtilt/crowdtilt.rb, line 65
def get_users()
  get("/users")['users']
end
post(string, params={}) click to toggle source
# File lib/crowdtilt/crowdtilt.rb, line 41
def post(string, params={})
  if block_given?
    request :post, uri(string), params, &Proc.new
  else
    request :post, uri(string), params
  end
end
put(string, params={}) click to toggle source
# File lib/crowdtilt/crowdtilt.rb, line 49
def put(string, params={})
  if block_given?
    request :put, uri(string), params, &Proc.new
  else
    request :put, uri(string), params
  end
end
update_user(id, user) click to toggle source
# File lib/crowdtilt/crowdtilt.rb, line 77
def update_user(id, user)
  put("/users/#{id}", { :user => user })['user']
end

Private Class Methods

handle_response(res) click to toggle source
# File lib/crowdtilt/crowdtilt.rb, line 100
def handle_response(res)
  response_obj = res.respond_to?(:to_hash) ? res.to_hash : res
  case response_obj[:status]
    when 401
      raise ApiError.new('Invalid credentials', response_obj)
    when 400...599
      if response_obj[:body].include? 'error'
        raise ApiError.new(response_obj[:body]['error'], response_obj)
      else
        raise ApiError.new('Unknown error', response_obj)
      end
    else
      response_obj[:body]
  end
end
request(method, *args) { |conn| ... } click to toggle source
# File lib/crowdtilt/crowdtilt.rb, line 83
def request(method, *args)
  conn = Faraday.new(:url => @base_url) do |faraday|
    # faraday.response :logger
    faraday.request :json
    faraday.response :json, :content_type => /\bjson$/
    faraday.use :instrumentation
    faraday.adapter Faraday.default_adapter
  end
  conn.basic_auth(@api_key, @api_secret)
  conn.headers.update({'Content-Type' => 'application/json'})

  yield conn if block_given?

  res = conn.send method.to_sym, *args
  handle_response(res)
end
uri(string) click to toggle source
# File lib/crowdtilt/crowdtilt.rb, line 116
def uri(string)
  if string =~ /^\/v/
    string
  elsif string =~ /^v/
    '/' + string
  elsif string =~ /^\//
    "/#{@version}" + string
  else
    "/#{@version}/" + string
  end
end