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