lib/eventick.rb
require 'net/http'
require 'json'
require 'cgi'
require 'openssl'
require_relative './eventick/version'
require_relative './eventick/base'
require_relative './eventick/auth'
require_relative './eventick/event'
require_relative './eventick/attendee'
require_relative './eventick/ticket'
require_relative './eventick/checkin'
require_relative './eventick/exceptions'
require_relative './eventick/params_parser'
module Eventick
BASE_URL = 'www.eventick.com.br'
BASE_PATH = '/api/v1/'
def self.config(&block)
@auth = Eventick::Auth.new &block
end
def self.get(resource, params={})
path = api_path resource
path = with_params path, params
method = Net::HTTP::Get.new(path)
request(method)
end
def self.put(resource, params={})
path = api_path resource
method = Net::HTTP::Put.new(path)
method.set_form_data(params)
method.content_type = 'application/json' if params.is_a? String
request(method, params)
end
def self.request(method, params={})
uri = URI("https://#{ BASE_URL }")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
if auth && auth.authenticated?
method.basic_auth auth_token, ""
end
response = http.start do |http|
http.request method
end
return { } unless response.is_a? Net::HTTPSuccess
# return response.body unless block_given?
# yield JSON.parse(response.body)
JSON.parse(response.body) unless response.body.nil?
end
def self.api_path(resource)
BASE_PATH + resource
end
def self.auth_token
@auth.token if @auth
end
def self.auth
@auth
end
private
def self.with_params(url, params )
escape_pair = Proc.new {|k,v| CGI.escape(k.to_s)+'='+CGI.escape(v.to_s) }
to_query = "?" + params.map(&escape_pair).join("&") unless params.empty?
"#{ url }#{ to_query }"
end
end