class Freshdesk::Api::Client::Request
Public Class Methods
new(base_url, api_key)
click to toggle source
# File lib/freshdesk/api/client/request.rb, line 8 def initialize base_url, api_key @base_url = base_url @auth = create_auth_header api_key end
Public Instance Methods
delete(endpoint, primary_id, secondary_id=nil, method=nil)
click to toggle source
# File lib/freshdesk/api/client/request.rb, line 44 def delete endpoint, primary_id, secondary_id=nil, method=nil url = create_url endpoint, primary_id, nil, secondary_id, method p url handle_exceptions do RestClient::Request.execute( url: url, method: :delete, headers: @auth ) end end
get(endpoint, id=nil, filters=nil, secondary_id=nil, method=nil)
click to toggle source
# File lib/freshdesk/api/client/request.rb, line 13 def get endpoint, id=nil, filters=nil, secondary_id=nil, method=nil url = create_url endpoint, id, filters, secondary_id, method handle_exceptions do RestClient::Request.execute( url: url, method: :get, headers: @auth ) end end
post(endpoint, payload, primary_id=nil, secondary_id=nil, method=nil)
click to toggle source
# File lib/freshdesk/api/client/request.rb, line 20 def post endpoint, payload, primary_id=nil, secondary_id=nil, method=nil url = create_url endpoint, primary_id, nil, secondary_id, method handle_exceptions do RestClient::Request.execute( payload: payload.to_json, headers: @auth.merge({content_type: "application/json"}), method: :post, url: url ) end end
put(endpoint, id, payload)
click to toggle source
# File lib/freshdesk/api/client/request.rb, line 32 def put endpoint, id, payload url = create_url endpoint, id handle_exceptions do RestClient::Request.execute( payload: payload.to_json, headers: @auth.merge({content_type: "application/json"}), method: :put, url: url ) end end
Private Instance Methods
create_auth_header(api_key)
click to toggle source
# File lib/freshdesk/api/client/request.rb, line 90 def create_auth_header api_key token = Base64.encode64("#{api_key}:X") {Authorization: "Basic #{token}"} end
create_url(endpoint, id=nil, filters=nil, secondary_id=nil, method=nil)
click to toggle source
# File lib/freshdesk/api/client/request.rb, line 70 def create_url(endpoint, id=nil, filters=nil, secondary_id=nil, method=nil) base = @base_url.end_with?("/") ? @base_url : "#{@base_url}/" endpoint = endpoint.end_with?("/") ? endpoint : "#{endpoint}/" url = "#{base}#{endpoint}#{id}" url = "#{base}helpdesk/#{endpoint}#{id}" if(endpoint.include? "tickets" or endpoint.include? "conversations") url = "#{base}discussions/topics/#{id}/posts" if(endpoint.include? "discussions/posts" and !id.nil? and method.eql? "create_post") url = "#{base}solution/categories/#{id}/folders" if(method.eql? "create_folder") url = "#{base}solution/categories/#{id}/folders/#{secondary_id}/articles" if(method.eql? "create_article") url = "#{base}solution/categories/#{id}" if(method.eql? "list_folders" or method.eql? "delete_category") url = "#{base}solution/categories/#{id}/folders/#{secondary_id}" if(method.eql? "list_articles" or method.eql? "delete_folder") if url.end_with?("/") url = url.slice(0, url.length - 1) end return "#{url}.json?#{filters}" unless filters.nil? "#{url}.json" end
handle_exceptions() { || ... }
click to toggle source
# File lib/freshdesk/api/client/request.rb, line 54 def handle_exceptions begin yield if block_given? rescue RestClient::NotFound raise Freshdesk::Api::InvalidEndpointError, "Endpoint is Invalid" rescue RestClient::InternalServerError raise Freshdesk::Api::ServerError, "Server Error" rescue RestClient::UnprocessableEntity raise Freshdesk::Api::AlreadyExistsError, "Entity already exists" rescue RestClient::Found raise Freshdesk::Api::ConnectionError, "Connection to the server failed. Please check username/password" rescue Exception raise end end