qismo 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dbfbe5dc426f29f2bab1875e42889d559b0fb0936d471343e6dd2088ac1c0cc1
4
- data.tar.gz: ca61c1154a98b662dbe05b87d6340a5a423b7665908b7ae7baa1f296ff03b8df
3
+ metadata.gz: e1b4c93e50732069adea997b37a9377cff4444c8785971e1a194eac896b4e18d
4
+ data.tar.gz: 2afff6846d7d8e981dbc8242bee37bdfe32d37845029ba11614365c898bd5f89
5
5
  SHA512:
6
- metadata.gz: 58b646f0e706c9193f46f60c6aa31aa1572539bbb098718e75725c6f7b197436a68c52e001b7bc9a46ea4fe04dd258eee8e2fcbe3a656c1364a6375ad231907d
7
- data.tar.gz: 3d154d41d5a1a763da397b3b245b6087e8a2456028cfdabe32076471956491ca314931c9fc4d5d4340bbd2bd9c1b39281808310b664ad7e934d36ff4cea1dde8
6
+ metadata.gz: 7a12795cfc80d51487a8c5242f11b5796e2292e6fc440f1fab7a05ad32bc616ffb5c129d43679f622397a19001cc56fa4fb229f0f20473c40dec4961593f4d4b
7
+ data.tar.gz: c6bb012dc5209dd55409c4cdcad760f4bc7a2686ee3265cd758bc9228be0ca0643a9d40cb54932815d9095d3722ee934a5d6ecaea1f9fbba2a5711bbb9f6de45
data/.rubocop.yml CHANGED
@@ -5,15 +5,4 @@ AllCops:
5
5
  TargetRubyVersion: 2.6
6
6
  Exclude:
7
7
  - "bin/**/*"
8
- - "examples/*"
9
-
10
- Style/StringLiterals:
11
- Enabled: true
12
- EnforcedStyle: double_quotes
13
-
14
- Style/StringLiteralsInInterpolation:
15
- Enabled: true
16
- EnforcedStyle: double_quotes
17
-
18
- Layout/LineLength:
19
- Max: 120
8
+ - "examples/*"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qismo (0.8.8)
4
+ qismo (0.10.0)
5
5
  activesupport
6
6
  http
7
7
 
data/lib/qismo/api.rb CHANGED
@@ -5,10 +5,10 @@ module Qismo
5
5
  # List customer rooms
6
6
  #
7
7
  # @param opt [Hash]
8
- # @return [Qismo::Collection]
8
+ # @return [Qismo::CollectionObject]
9
9
  def rooms(opt = {})
10
10
  body = post("/api/v2/customer_rooms", opt)
11
- Collection.new(
11
+ CollectionObject.new(
12
12
  body.data.customer_rooms,
13
13
  prev_page: body.meta&.cursor_before,
14
14
  next_page: body.meta&.cursor_after,
@@ -20,7 +20,7 @@ module Qismo
20
20
  # Get room by id
21
21
  #
22
22
  # @param room_id [Integer]
23
- # @return [Qismo::DataObject]
23
+ # @return [Qismo::SingleObject]
24
24
  def room(room_id)
25
25
  body = get("/api/v2/customer_rooms/#{room_id}")
26
26
  if body.data.customer_room.nil?
@@ -33,18 +33,18 @@ module Qismo
33
33
  # List tags inside room
34
34
  #
35
35
  # @param room_id [Integer]
36
- # @return [Qismo::DataObject]
36
+ # @return [Qismo::CollectionObject]
37
37
  def room_tags(room_id)
38
- get("/api/v2/room_tags/#{room_id}").data
38
+ CollectionObject.new(get("/api/v2/room_tags/#{room_id}").data)
39
39
  end
40
40
 
41
41
  # Add room tag
42
42
  #
43
43
  # @param room_id [Integer]
44
- # @param tag [String]
45
- # @return [Qismo::DataObject]
46
- def add_room_tag(room_id, tag)
47
- post("/api/v2/room_tags/#{room_id}", tag: tag).data
44
+ # @param tag_name [String]
45
+ # @return [Qismo::SingleObject]
46
+ def add_room_tag(room_id, tag_name)
47
+ post("/api/v2/room_tags/#{room_id}", tag: tag_name).data
48
48
  end
49
49
 
50
50
  # Delete room tag
@@ -60,46 +60,53 @@ module Qismo
60
60
  # List room additional info
61
61
  #
62
62
  # @param room_id [Integer]
63
- # @return [Qismo::DataObject]
63
+ # @return [Qismo::CollectionObject]
64
64
  def room_additional_info(room_id)
65
- body = get("/api/v1/qiscus/room/#{room_id}/user_info")
66
- body.data.extras.user_properties
65
+ CollectionObject.new(
66
+ get(
67
+ "/api/v1/qiscus/room/#{room_id}/user_info",
68
+ ).data&.extras&.user_properties,
69
+ ) || CollectionObject.new
67
70
  end
68
71
 
69
72
  # Set room additional info
70
73
  #
71
74
  # @note This will replace your current room additional info
72
75
  # @param room_id [Integer]
73
- # @param *additional_info [Array<Hash>]
74
- # @return [Qismo::DataObject]
75
- def set_room_additional_info(room_id, *additional_info)
76
- body = post("/api/v1/qiscus/room/#{room_id}/user_info", user_properties: additional_info)
77
- body.data.extras.user_properties
76
+ # @param additional_info [Array<Hash>]
77
+ # @return [Qismo::CollectionObject]
78
+ def set_room_additional_info(room_id, additional_info)
79
+ CollectionObject.new(
80
+ post(
81
+ "/api/v1/qiscus/room/#{room_id}/user_info",
82
+ user_properties: additional_info,
83
+ ).data&.extras&.user_properties,
84
+ ) || CollectionObject.new
78
85
  end
79
86
 
80
87
  # Update room additional info
81
88
  #
82
89
  # @param room_id [Integer]
83
- # @param *additional_info [Array]
84
- # @return [Qismo::DataObject]
85
- def update_room_additional_info(room_id, *additional_info)
90
+ # @param additional_info [Array]
91
+ # @return [Qismo::CollectionObject]
92
+ def update_room_additional_info(room_id, additional_info)
86
93
  old_additional_info = room_additional_info(room_id)
87
94
  new_additional_info = (additional_info + old_additional_info).uniq { |h| h.values_at("key") }
88
- set_room_additional_info(room_id, *new_additional_info)
95
+ set_room_additional_info(room_id, new_additional_info)
89
96
  end
90
97
 
91
98
  # List Whatsapp broadcast history inside room
92
99
  #
93
100
  # @param room_id [Integer]
94
101
  # @param opt [Hash]
95
- # @return [Qismo::Collection]
102
+ # @return [Qismo::CollectionObject]
96
103
  def room_broadcast_history(room_id, opt = {})
97
104
  body = get("/api/v2/customer_rooms/#{room_id}/broadcast_history", opt)
98
105
 
99
106
  next_page = body.meta.page < body.meta.total_page ? (body.meta.page + 1) : nil
100
107
  prev_page = body.meta.page > 1 ? (body.meta.page - 1) : nil
101
108
 
102
- Collection.new(
109
+ CollectionObject.new(
103
110
  body.data.broadcast_logs,
104
111
  next_page: next_page,
105
112
  prev_page: prev_page,
@@ -113,7 +120,7 @@ module Qismo
113
120
  # @param room_id [Integer]
114
121
  # @param agent_id [Integer]
115
122
  # @param opt [Hash]
116
- # @return [Qismo::DataObject]
123
+ # @return [Qismo::SingleObject]
117
124
  def assign_agent(room_id, agent_id, opt = {})
118
125
  body = post("/api/v1/admin/service/assign_agent", opt.merge(room_id: room_id.to_s, agent_id: agent_id))
119
126
  body.data.added_agent
@@ -134,7 +141,7 @@ module Qismo
134
141
  # @param room_id [Integer]
135
142
  # @param last_comment_id [Integer]
136
143
  # @param opt [Hash]
137
- # @return [Qismo::DataObject]
144
+ # @return [Qismo::SingleObject]
138
145
  def resolve_room(room_id, last_comment_id, opt = {})
139
146
  body = post("/api/v1/admin/service/mark_as_resolved",
140
147
  opt.merge(room_id: room_id.to_s, last_comment_id: last_comment_id))
@@ -147,7 +154,7 @@ module Qismo
147
154
  #
148
155
  # @param source [String]
149
156
  # @param opt [Hash]
150
- # @return [Qismo::DataObject]
157
+ # @return [Qismo::SingleObject]
151
158
  def allocate_agent(source, opt = {})
152
159
  body = post("/api/v1/admin/service/allocate_agent", opt.merge(source: source))
153
160
  body.data.agent
@@ -157,7 +164,7 @@ module Qismo
157
164
  #
158
165
  # @param room_id [Integer]
159
166
  # @param opt [Hash]
160
- # @return [Qismo::DataObject]
167
+ # @return [Qismo::SingleObject]
161
168
  def allocate_and_assign_agent(room_id, opt = {})
162
169
  body = post("/api/v1/admin/service/allocate_assign_agent", opt.merge(room_id: room_id))
163
170
  body.data.agent
@@ -167,10 +174,10 @@ module Qismo
167
174
  #
168
175
  # @param room_id [Integer]
169
176
  # @param opt [Hash]
170
- # @return [Qismo::Collection]
177
+ # @return [Qismo::CollectionObject]
171
178
  def other_agents(room_id, opt = {})
172
179
  body = get("/api/v2/admin/service/other_agents", opt.merge(room_id: room_id))
173
- Collection.new(
180
+ CollectionObject.new(
174
181
  body.data.agents,
175
182
  prev_page: body.meta&.cursor_before,
176
183
  next_page: body.meta&.cursor_after,
@@ -183,10 +190,10 @@ module Qismo
183
190
  #
184
191
  # @param room_id [Integer]
185
192
  # @param opt [Hash]
186
- # @return [Qismo::Collection]
193
+ # @return [Qismo::CollectionObject]
187
194
  def available_agents(room_id, opt = {})
188
195
  body = get("/api/v2/admin/service/available_agents", opt.merge(room_id: room_id))
189
- Collection.new(
196
+ CollectionObject.new(
190
197
  body.data.agents,
191
198
  prev_page: body.meta&.cursor_before,
192
199
  next_page: body.meta&.cursor_after,
@@ -197,7 +204,7 @@ module Qismo
197
204
 
198
205
  # Get new session webhook config
199
206
  #
200
- # @return [Qismo::DataObject]
207
+ # @return [Qismo::SingleObject]
201
208
  def new_session_webhook
202
209
  get("/api/v2/app/config/new_session_webhook").data.configs
203
210
  end
@@ -206,14 +213,14 @@ module Qismo
206
213
  #
207
214
  # @param url [String]
208
215
  # @param opt [Hash]
209
- # @return [Qismo::DataObject]
216
+ # @return [Qismo::SingleObject]
210
217
  def set_new_session_webhook(url, opt = {})
211
218
  post("/api/v2/app/config/new_session_webhook", opt.merge(url: url)).data.configs
212
219
  end
213
220
 
214
221
  # Get auth webhook config
215
222
  #
216
- # @return [Qismo::DataObject]
223
+ # @return [Qismo::SingleObject]
217
224
  def auth_webhook
218
225
  get("/api/v2/app/config/auth_webhook").data.configs
219
226
  end
@@ -222,14 +229,14 @@ module Qismo
222
229
  #
223
230
  # @param url [String]
224
231
  # @param opt [Hash]
225
- # @return [Qismo::DataObject]
232
+ # @return [Qismo::SingleObject]
226
233
  def set_auth_webhook(url, opt = {})
227
234
  post("/api/v2/app/config/auth_webhook", opt.merge(url: url)).data.configs
228
235
  end
229
236
 
230
237
  # Get resolve webhook config
231
238
  #
232
- # @return [Qismo::DataObject]
239
+ # @return [Qismo::SingleObject]
233
240
  def resolve_webhook
234
241
  get("/api/v1/app/webhook/mark_as_resolved").data
235
242
  end
@@ -238,7 +245,7 @@ module Qismo
238
245
  #
239
246
  # @param url [String]
240
247
  # @param opt [Hash]
241
- # @return [Qismo::DataObject]
248
+ # @return [Qismo::SingleObject]
242
249
  def set_resolve_webhook(url, opt = {})
243
250
  post("/api/v1/app/webhook/mark_as_resolved", opt.merge(url: url)).data
244
251
  end
@@ -246,7 +253,7 @@ module Qismo
246
253
  # List agents
247
254
  #
248
255
  # @param opt [Hash]
249
- # @return [Qismo::Collection]
256
+ # @return [Qismo::CollectionObject]
250
257
  def agents(opt = {})
251
258
  if opt[:page].nil? || opt[:page].empty?
252
259
  opt[:page] = 1
@@ -258,7 +265,7 @@ module Qismo
258
265
  next_page = opt[:page] < total_page ? (opt[:page] + 1) : nil
259
266
  prev_page = opt[:page] > 1 ? (opt[:page] - 1) : nil
260
267
 
261
- Collection.new(
268
+ CollectionObject.new(
262
269
  body.data.agents,
263
270
  next_page: next_page,
264
271
  prev_page: prev_page,
@@ -269,24 +276,24 @@ module Qismo
269
276
 
270
277
  # List agents by id
271
278
  #
272
- # @param *ids [Array<Integer>]
273
- # @return [Qismo::DataObject]
274
- def agents_by_ids(*ids)
275
- get("/api/v1/admin/agents/get_by_ids", **{ "ids[]": ids }).data
279
+ # @param ids [Array<Integer>]
280
+ # @return [Qismo::CollectionObject]
281
+ def agents_by_ids(ids)
282
+ CollectionObject.new(get("/api/v1/admin/agents/get_by_ids", { "ids[]": ids }).data) || CollectionObject.new
276
283
  end
277
284
 
278
285
  # List agents by divisions
279
286
  #
280
- # @param *division_ids [Array<Integer>]
287
+ # @param division_ids [Array<Integer>]
281
288
  # @param opt [Hash]
282
- # @return [Qismo::Collection]
289
+ # @return [Qismo::CollectionObject]
283
290
  def agents_by_divisions(division_ids, opt = {})
284
291
  body = get("/api/v2/admin/agents/by_division", opt.merge({ "division_ids[]": division_ids }))
285
292
 
286
293
  next_page = body.meta.page < body.meta.total_page ? (body.meta.page + 1) : nil
287
294
  prev_page = body.meta.page > 1 ? (body.meta.page - 1) : nil
288
295
 
289
- Collection.new(
296
+ CollectionObject.new(
290
297
  body.data,
291
298
  next_page: next_page,
292
299
  prev_page: prev_page,
@@ -298,26 +305,26 @@ module Qismo
298
305
  # Get agent by id
299
306
  #
300
307
  # @param agent_id [Integer]
301
- # @return [Qismo::DataObject]
308
+ # @return [Qismo::SingleObject]
302
309
  def agent(agent_id)
303
310
  get("/api/v2/admin/agent/#{agent_id}").data.agent
304
311
  end
305
312
 
306
313
  # Get office hour config
307
314
  #
308
- # @return [Qismo::DataObject]
315
+ # @return [Qismo::SingleObject]
309
316
  def office_hours
310
317
  data = get("/api/v1/admin/office_hours").data
311
318
  data_hash = data.as_json
312
319
  data_hash["is_in_office_hour"] = Util.in_office_hour?(data)
313
320
 
314
- DataObject.new(data_hash)
321
+ SingleObject.new(data_hash)
315
322
  end
316
323
 
317
324
  # List WA broadcast templates
318
325
  #
319
326
  # @param opt [Hash]
320
- # @return [Qismo::Collection]
327
+ # @return [Qismo::CollectionObject]
321
328
  def wa_broadcast_templates(opt = {})
322
329
  body = get("/api/v3/admin/hsm", opt)
323
330
 
@@ -325,7 +332,7 @@ module Qismo
325
332
  next_page = meta.page < meta.total_page ? (meta.page + 1) : nil
326
333
  prev_page = meta.page > 1 ? (meta.page - 1) : nil
327
334
 
328
- Collection.new(
335
+ CollectionObject.new(
329
336
  body.data.hsm_templates,
330
337
  next_page: next_page,
331
338
  prev_page: prev_page,
@@ -337,7 +344,7 @@ module Qismo
337
344
  # Send WA outbound message
338
345
  #
339
346
  # @param opt [Hash]
340
- # @return [Qismo::DataObject]
347
+ # @return [Qismo::SingleObject]
341
348
  def send_wa_outbound(opt = {})
342
349
  post("/api/v3/admin/broadcast/client", opt).data
343
350
  end
@@ -346,7 +353,7 @@ module Qismo
346
353
  #
347
354
  # @param file [HTTP::FormData]
348
355
  # @param template_detail_id [Integer]
349
- # @return [Qismo::DataObject]
356
+ # @return [Qismo::SingleObject]
350
357
  def upload_wa_broadcast_csv(file, template_detail_id)
351
358
  raise ArgumentError, "Invalid file" unless file.is_a?(HTTP::FormData::File)
352
359
 
@@ -356,7 +363,7 @@ module Qismo
356
363
  # Send wa broadcast
357
364
  #
358
365
  # @param opt [Hash]
359
- # @return [Qismo::DataObject]
366
+ # @return [Qismo::SingleObject]
360
367
  def send_wa_broadcast(opt = {})
361
368
  post("/api/v3/admin/broadcast/send_broadcast", opt).data.broadcast_job
362
369
  end
@@ -364,14 +371,14 @@ module Qismo
364
371
  # List wa broadcast jobs
365
372
  #
366
373
  # @param opt [Hash]
367
- # @return [Qismo::Collection]
374
+ # @return [Qismo::CollectionObject]
368
375
  def wa_broadcast_jobs(opt = {})
369
376
  body = get("/api/v2/admin/broadcast_jobs", opt)
370
377
 
371
378
  prev_page = body.meta.page > 1 ? (body.meta.meta - 1) : nil
372
379
  next_page = body.meta.page < body.meta.total_page ? (body.meta.page + 1) : nil
373
380
 
374
- Collection.new(
381
+ CollectionObject.new(
375
382
  body.data.broadcast_jobs,
376
383
  next_page: next_page,
377
384
  prev_page: prev_page,
@@ -383,7 +390,7 @@ module Qismo
383
390
  # Get wa broadcast job by id
384
391
  #
385
392
  # @param broadcast_job_id [Integer]
386
- # @return [Qismo::DataObject]
393
+ # @return [Qismo::SingleObject]
387
394
  def wa_broadcast_job(broadcast_job_id)
388
395
  get("/api/v2/admin/broadcast_jobs/#{broadcast_job_id}").data.broadcast_job
389
396
  end
@@ -392,14 +399,14 @@ module Qismo
392
399
  #
393
400
  # @param broadcast_job_id [Integer]
394
401
  # @param opt [Hash]
395
- # @return [Qismo::Collection]
402
+ # @return [Qismo::CollectionObject]
396
403
  def wa_broadcast_logs(broadcast_job_id, opt = {})
397
404
  body = get("/api/v2/admin/broadcast_logs/#{broadcast_job_id}", opt)
398
405
 
399
406
  prev_page = body.meta.page > 1 ? (body.meta.meta - 1) : nil
400
407
  next_page = body.meta.page < body.meta.total_page ? (body.meta.page + 1) : nil
401
408
 
402
- Collection.new(
409
+ CollectionObject.new(
403
410
  body.data.broadcast_logs,
404
411
  next_page: next_page,
405
412
  prev_page: prev_page,
@@ -421,16 +428,16 @@ module Qismo
421
428
  #
422
429
  # @param room_id [Integer]
423
430
  # @return [TrueClass]
424
- def enable_chatbot_in_room(room_id)
431
+ def enable_bot_in_room(room_id)
425
432
  post("/bot/#{room_id}/activate", is_active: true)
426
433
  true
427
434
  end
428
435
 
429
- # Disable chabot in room
436
+ # Disable chatbot in room
430
437
  #
431
438
  # @param room_id [Integer]
432
439
  # @return [TrueClass]
433
- def disable_chatbot_in_room(room_id)
440
+ def disable_bot_in_room(room_id)
434
441
  post("/bot/#{room_id}/activate", is_active: false)
435
442
  true
436
443
  end
@@ -447,7 +454,7 @@ module Qismo
447
454
  # Handover room from chatbot to human agent in specific divisions
448
455
  #
449
456
  # @param room_id [Integer]
450
- # @param *roles [Array<Integer>]
457
+ # @param roles [Array<Integer>]
451
458
  # @param opt [Hash]
452
459
  # @return [TrueClass]
453
460
  def handover_room_from_bot_to_division(room_id, roles, opt = {})
@@ -460,7 +467,7 @@ module Qismo
460
467
  # @param user_id [String]
461
468
  # @param name [String]
462
469
  # @param opt [Hash]
463
- # @return [Qismo::DataObject]
470
+ # @return [Qismo::SingleObject]
464
471
  def initiate_widget_chat(user_id, name, opt = {})
465
472
  opt = opt.merge(app_id: app_id, user_id: user_id, name: name)
466
473
  post("/api/v2/qiscus/initiate_chat", opt).data.customer_room
@@ -472,10 +479,71 @@ module Qismo
472
479
  # @param user_id [String]
473
480
  # @param name [String]
474
481
  # @param opt [Hash]
475
- # @return [Qismo::DataObject]
482
+ # @return [Qismo::SingleObject]
476
483
  def send_message_to_custom_channel(identifier_key, user_id, name, opt = {})
477
484
  post("/#{app_id}/api/v2/custom_channel/send",
478
485
  opt.merge(identifier_key: identifier_key, user_id: user_id, name: name)).data
479
486
  end
487
+
488
+ def channels
489
+ get("/api/v2/channels").data
490
+ end
491
+
492
+ # Create customchannel
493
+ #
494
+ # @param identifier_key [String]
495
+ # @param name [String]
496
+ # @param webhook_url [String]
497
+ # @param opt [Hash]
498
+ # @return [Qismo::SingleObject]
499
+ def create_custom_channel(identifier_key, name, webhook_url, opt = {})
500
+ opt = opt.merge(
501
+ identifier_key: identifier_key,
502
+ name: name,
503
+ webhook_url: webhook_url,
504
+ )
505
+
506
+ opt[:is_active] = true unless opt[:is_active].nil?
507
+
508
+ post("/api/v1/custom_channel/connect", opt.merge).data
509
+ end
510
+
511
+ # Update custom channel
512
+ #
513
+ # @param id [Integer]
514
+ # @param opt [Hash]
515
+ # @return [Qismo::SingleObject]
516
+ def update_custom_channel(id, opt = {})
517
+ channel = channels.custom_channels.find { |cc| cc.id == id }
518
+ if channel.nil?
519
+ raise Qismo::NotFoundError.new("Channel not found", status_code: 404, response_body: nil)
520
+ end
521
+
522
+ channel_hash = JSON.parse(channel.to_json, symbolize_names: true)
523
+ new_channel_config = channel_hash.merge(opt)
524
+
525
+ post("/api/v1/custom_channel/connect/update", new_channel_config).data
526
+ end
527
+
528
+ # Activate custom channel
529
+ #
530
+ # @param id [Integer]
531
+ # @return [Qismo::SingleObject]
532
+ def activate_custom_channel(id)
533
+ update_custom_channel(id, is_active: true)
534
+ end
535
+
536
+ # Deactivate custom channel
537
+ #
538
+ # @param id [Integer]
539
+ # @return [Qismo::SingleObject]
540
+ def deactivate_custom_channel(id)
541
+ update_custom_channel(id, is_active: false)
542
+ end
543
+
544
+ def delete_custom_channel(id)
545
+ post("/api/v2/custom_channel/connect/#{id}/delete")
546
+ true
547
+ end
480
548
  end
481
549
  end
data/lib/qismo/client.rb CHANGED
@@ -39,7 +39,7 @@ module Qismo
39
39
  #
40
40
  # @param path [String]
41
41
  # @param body [Hash]
42
- # @return [Qismo::DataObject]
42
+ # @return [Qismo::SingleObject]
43
43
  def post(path, body = {})
44
44
  request(:post, path, json: body)
45
45
  end
@@ -48,7 +48,7 @@ module Qismo
48
48
  #
49
49
  # @param path [String]
50
50
  # @param body [Hash]
51
- # @return [Qismo::DataObject]
51
+ # @return [Qismo::SingleObject]
52
52
  def post_upload(path, body = {})
53
53
  request(:post, form: body)
54
54
  end
@@ -57,7 +57,7 @@ module Qismo
57
57
  #
58
58
  # @param path [String]
59
59
  # @param params [Hash]
60
- # @return [Qismo::DataObject]
60
+ # @return [Qismo::SingleObject]
61
61
  def get(path, **params)
62
62
  request(:get, path, params: params)
63
63
  end
@@ -71,11 +71,11 @@ module Qismo
71
71
  # @param method [Symbol, String]
72
72
  # @param path [String]
73
73
  # @param body [Hash]
74
- # @return [Qismo::DataObject]
74
+ # @return [Qismo::SingleObject]
75
75
  def request(method, path, opt = {})
76
76
  res = connection.request(method, @url + path, opt.compact)
77
77
  if res.status.success?
78
- return DataObject.new(JSON.parse(res.to_s))
78
+ return SingleObject.new(JSON.parse(res.to_s))
79
79
  end
80
80
 
81
81
  if res.status.server_error?
@@ -83,10 +83,10 @@ module Qismo
83
83
  end
84
84
 
85
85
  if res.status.client_error?
86
- body = DataObject.new(JSON.parse(res.to_s))
86
+ body = SingleObject.new(JSON.parse(res.to_s))
87
87
 
88
88
  error = body.errors
89
- error = error.message if error.is_a?(DataObject)
89
+ error = error.message if error.is_a?(SingleObject)
90
90
 
91
91
  error_klass_map = {
92
92
  400 => BadRequestError,
data/lib/qismo/model.rb CHANGED
@@ -3,14 +3,14 @@
3
3
  module Qismo
4
4
  # Class to handle http response body
5
5
  #
6
- class DataObject
6
+ class SingleObject
7
7
  # Initiate data object
8
8
  #
9
9
  # @param opt [Hash]
10
10
  def initialize(opt = {})
11
11
  opt.each do |key, value|
12
12
  value = if value.is_a?(Array)
13
- handle_array(value)
13
+ CollectionObject.new(handle_array(value))
14
14
  elsif value.is_a?(Hash)
15
15
  self.class.new(value)
16
16
  elsif value.is_a?(TrueClass) || value.is_a?(FalseClass)
@@ -54,15 +54,15 @@ module Qismo
54
54
 
55
55
  # Class to handle response body that contain pagination
56
56
  #
57
- class Collection < Array
57
+ class CollectionObject < Array
58
58
  # Initiate collection
59
59
  #
60
- # @param data [Qismo::DataObject]
60
+ # @param data [Qismo::SingleObject]
61
61
  # @param prev_page [String, Integer]
62
62
  # @param next_page [String, Integer]
63
63
  # @param prev_func [Proc, NilClass]
64
64
  # @param next_func [Proc, NilClass]
65
- def initialize(data, prev_page: nil, next_page: nil, prev_func: -> { nil }, next_func: -> { nil })
65
+ def initialize(data = [], prev_page: nil, next_page: nil, prev_func: -> { nil }, next_func: -> { nil })
66
66
  super(data)
67
67
 
68
68
  @prev_page = prev_page
@@ -87,14 +87,14 @@ module Qismo
87
87
 
88
88
  # Call api request for next page
89
89
  #
90
- # @return [Qismo::DataObject, Qismo::Collection]
90
+ # @return [Qismo::SingleObject, Qismo::CollectionObject]
91
91
  def next_page
92
92
  @next_func.call if has_next_page?
93
93
  end
94
94
 
95
95
  # Call api request for previous page
96
96
  #
97
- # @return [Qismo::DataObject, Qismo::Collection]
97
+ # @return [Qismo::SingleObject, Qismo::CollectionObject]
98
98
  def prev_page
99
99
  @prev_func.call if has_prev_page?
100
100
  end
data/lib/qismo/util.rb CHANGED
@@ -5,7 +5,7 @@ module Qismo
5
5
  class << self
6
6
  # Check if now is in office hour or not
7
7
  #
8
- # @param data [Qismo::DataObject]
8
+ # @param data [Qismo::SingleObject]
9
9
  # @return [TrueClass, FalseClass]
10
10
  def in_office_hour?(data)
11
11
  return false if data.timezone.blank?
data/lib/qismo/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Qismo
4
4
  # @return [String]
5
- VERSION = "0.9.0"
5
+ VERSION = "0.10.0"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qismo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Qiscus Integration