Module: LimdeskApi
- Defined in:
- lib/limdesk_api.rb,
lib/limdesk_api/sale.rb,
lib/limdesk_api/client.rb,
lib/limdesk_api/ticket.rb,
lib/limdesk_api/version.rb,
lib/limdesk_api/activity.rb,
lib/limdesk_api/contactperson.rb,
lib/limdesk_api/limdesk_object.rb
Overview
LideskAPI Warapper Limdesk.com is a multichannel, web-based customer support solution. This gem lets you integrate your software using LimdeskAPI.
Defined Under Namespace
Classes: Activity, Client, Contactperson, LimdeskObject, Sale, Ticket
Constant Summary
collapse
- ENDPOINT =
'https://cloud.limdesk.com'
- KNOWN_OBJS =
{
ticket: :tickets,
activity: :activities,
client: :clients,
sale: :sales,
contactperson: :contactpersons
}
- VERSION =
'0.0.6'
Class Method Summary
collapse
Class Method Details
.check_create_response(body, obj) ⇒ Object
135
136
137
138
139
140
|
# File 'lib/limdesk_api.rb', line 135
def self.check_create_response(body, obj)
fail 'LimdeskApiError' if !body.is_a?(Hash) ||
body['status'].nil? ||
body['status'] == 'error' ||
body[obj.to_s].nil?
end
|
.check_get_one_response(body) ⇒ Object
60
61
62
63
|
# File 'lib/limdesk_api.rb', line 60
def self.check_get_one_response(body)
fail 'LimdeskApiError' if !body.is_a?(Hash) ||
body['status'] != 'ok'
end
|
.check_get_page_response(body, obj) ⇒ Object
88
89
90
91
92
93
94
|
# File 'lib/limdesk_api.rb', line 88
def self.check_get_page_response(body, obj)
fail 'LimdeskApiError' if !body.is_a?(Hash) ||
body['status'] != 'ok' ||
body['page'].nil? ||
body['total_pages'].nil? ||
body[obj.to_s].nil?
end
|
.check_update_resonse(body) ⇒ Object
161
162
163
164
|
# File 'lib/limdesk_api.rb', line 161
def self.check_update_resonse(body)
fail 'LimdeskApiError' if !body.is_a?(Hash) ||
body['status'].nil?
end
|
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/limdesk_api.rb', line 30
def self.configure
yield self
@connection = Faraday.new(url: ENDPOINT) do |faraday|
faraday.response :json, content_type: /\bjson$/
faraday.adapter Faraday.default_adapter
faraday.use Faraday::Response::Logger if @debug
end
@prefix = "/api/v#{@version}"
self
end
|
.create(params) ⇒ Object
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
# File 'lib/limdesk_api.rb', line 145
def self.create(params)
resp = @connection.post do |req|
req.url generate_url params
req.params[:key] = @key
req.body = params[:params].to_json
end
case resp.status
when 200
body = resp.body
check_create_response(body, params[:object])
body[params[:object].to_s]
else
fail 'LimdeskApiErrorFatal'
end
end
|
.debug=(debug) ⇒ Object
49
50
51
|
# File 'lib/limdesk_api.rb', line 49
def self.debug=(debug)
@debug = debug
end
|
.delete(params) ⇒ Object
194
195
196
|
# File 'lib/limdesk_api.rb', line 194
def self.delete(params)
update(:delete, params)
end
|
.generate_url(params) ⇒ Object
53
54
55
56
57
58
|
# File 'lib/limdesk_api.rb', line 53
def self.generate_url(params)
url = [@prefix, LimdeskApi::KNOWN_OBJS[params[:object]]]
url.push params[:id] if params[:id]
url.push params[:action] if params[:action]
url.join('/')
end
|
.get_all(object_name) ⇒ Object
get all LimdeskAPI objects of a type
123
124
125
126
127
128
129
130
131
132
133
|
# File 'lib/limdesk_api.rb', line 123
def self.get_all(object_name)
query_options = { page: 0, object: object_name }
data = []
loop do
query_options[:page] += 1
results = LimdeskApi.get_page(query_options)
data += results[:objects]
break if results[:total_pages] == results[:page] || results[:page] == 0
end
data
end
|
.get_one(params) ⇒ Object
get a single LimdeskAPI object
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
# File 'lib/limdesk_api.rb', line 70
def self.get_one(params)
resp = @connection.get do |req|
req.url generate_url params
req.params[:key] = @key
req.params[:query] = params[:query] if params[:query]
end
case resp.status
when 200
body = resp.body
check_get_one_response(body)
body[params[:object].to_s]
when 404
nil
else
fail 'LimdeskApiErrorFatal'
end
end
|
.get_page(params) ⇒ Object
get a page of LimdeskAPI object
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/limdesk_api.rb', line 101
def self.get_page(params)
obj = LimdeskApi::KNOWN_OBJS[params[:object]]
resp = @connection.get do |req|
req.url generate_url params
req.params[:key] = @key
req.params[:page] = params[:page]
end
case resp.status
when 200
body = resp.body
check_get_page_response(body, obj)
{ page: body['page'],
total_pages: body['total_pages'],
objects: body[obj.to_s] }
else
fail 'LimdeskApiErrorFatal'
end
end
|
.key=(key) ⇒ Object
41
42
43
|
# File 'lib/limdesk_api.rb', line 41
def self.key=(key)
@key = key
end
|
.post_simple(params) ⇒ Object
190
191
192
|
# File 'lib/limdesk_api.rb', line 190
def self.post_simple(params)
update(:post, params)
end
|
.put(params) ⇒ Object
186
187
188
|
# File 'lib/limdesk_api.rb', line 186
def self.put(params)
update(:put, params)
end
|
.update(method, params) ⇒ Object
update/delete a LimdeskAPI object
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
# File 'lib/limdesk_api.rb', line 170
def self.update(method, params)
resp = @connection.send(method) do |req|
req.url generate_url params
req.params[:key] = @key
req.body = params[:params].to_json
end
case resp.status
when 200
body = resp.body
check_update_resonse(body)
body['status'] == 'ok' ? true : false
else
fail 'LimdeskApiErrorFatal'
end
end
|
.version=(version) ⇒ Object
45
46
47
|
# File 'lib/limdesk_api.rb', line 45
def self.version=(version)
@version = version
end
|