qismo 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 835aca8c69a0b94f348930cefdc3454d2d90c131718bc1d825960e928ca43c3b
4
- data.tar.gz: '0240594c5422307db61e8dc208cef8ac06513c76bde7fda0ba649920bf4a400c'
3
+ metadata.gz: 82fdfb3850c268372f3bb9a626923296a277365a2e418e39e77faee771a17f01
4
+ data.tar.gz: 5e8e7248607487caab854fc59b45a4db35140b8f48392c3a52ef46fcb7d3b02f
5
5
  SHA512:
6
- metadata.gz: 57b4ebebb1efea8ea65f47b53cab0d8057864afd45ee5df75a05e0fd9c36ad7d4ee68d591d8e5d5e30d869787d22eb93a90a2da4a973dde5f7f0613215aff99d
7
- data.tar.gz: 305fa3917126e9abccdf3ed2c517e8a305675b6ad3aa46d3adb91a42fc0219d38da49bb57a2f391e6ba8b2393982a78d4d3a0022b1211dc46feb71c71e2d726d
6
+ metadata.gz: 6f18f2d1e90c3892e8793f8e48af1643a8c91fa94307197cab6660df6130aa7e9e6d28d9e8942e51fb9c538d0531e9532275bb728c2ae3cb05c57f539e4f6d0c
7
+ data.tar.gz: 804e77fe38f0bb3e5da3859e2560bb74586960d8a7c96a9b723c0026ee2cfdf16ceca7531d05bc3ce7f9e3c748092daad112e458f66800b18776073e6711125e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qismo (0.1.0)
4
+ qismo (0.5.0)
5
5
  activesupport
6
6
  http
7
7
 
data/lib/qismo/api.rb CHANGED
@@ -8,22 +8,10 @@ module Qismo
8
8
  body = post("/api/v2/customer_rooms", opt)
9
9
  Collection.new(
10
10
  body.data.customer_rooms,
11
- prev_page: body.meta.cursor_before,
12
- next_page: body.meta.cursor_after,
13
- prev_func: -> do
14
- if body.meta.cursor_before.nil? || body.meta.cursor_before.empty?
15
- Collection.new([])
16
- else
17
- rooms(opt.merge(cursor_before: body.meta.cursor_before))
18
- end
19
- end,
20
- next_func: -> do
21
- if body.meta.cursor_after.nil? || body.meta.cursor_after.empty?
22
- Collection.new([])
23
- else
24
- rooms(opt.merge(cursor_after: body.meta.cursor_after))
25
- end
26
- end,
11
+ prev_page: body.meta&.cursor_before,
12
+ next_page: body.meta&.cursor_after,
13
+ prev_func: -> { rooms(opt.merge(cursor_before: body.meta&.cursor_before)) },
14
+ next_func: -> { rooms(opt.merge(cursor_after: body.meta&.cursor_after)) },
27
15
  )
28
16
  end
29
17
 
@@ -50,7 +38,17 @@ module Qismo
50
38
 
51
39
  def room_broadcast_history(room_id, **opt)
52
40
  body = get("/api/v2/customer_rooms/#{room_id}/broadcast_history", opt)
53
- Collection.new(body.data.broadcast_logs, body.data.meta)
41
+
42
+ next_page = body.meta.page < body.meta.total_page ? (body.meta.page + 1) : nil
43
+ prev_page = body.meta.page > 1 ? (body.meta.page - 1) : nil
44
+
45
+ Collection.new(
46
+ body.data.broadcast_logs,
47
+ next_page: next_page,
48
+ prev_page: prev_page,
49
+ next_func: -> { room_broadcast_history(opt.merge(page: next_page)) },
50
+ prev_func: -> { room_broadcast_history(opt.merge(page: prev_page)) },
51
+ )
54
52
  end
55
53
 
56
54
  def assign_agent(room_id, agent_id, **opt)
@@ -81,12 +79,24 @@ module Qismo
81
79
 
82
80
  def other_agents(room_id, **opt)
83
81
  body = get("/api/v2/admin/service/other_agents", opt.merge(room_id: room_id))
84
- Collection.new(body.data.agents, body.meta)
82
+ Collection.new(
83
+ body.data.agents,
84
+ prev_page: body.meta&.cursor_before,
85
+ next_page: body.meta&.cursor_after,
86
+ prev_func: -> { other_agents(opt.merge(cursor_before: body.meta&.cursor_before)) },
87
+ next_func: -> { other_agents(opt.merge(cursor_after: body.meta&.cursor_after)) },
88
+ )
85
89
  end
86
90
 
87
91
  def available_agents(room_id, **opt)
88
92
  body = get("/api/v2/admin/service/available_agents", opt.merge(room_id: room_id))
89
- Collection.new(body.data.agents, body.meta)
93
+ Collection.new(
94
+ body.data.agents,
95
+ prev_page: body.meta&.cursor_before,
96
+ next_page: body.meta&.cursor_after,
97
+ prev_func: -> { available_agents(opt.merge(cursor_before: body.meta&.cursor_before)) },
98
+ next_func: -> { available_agents(opt.merge(cursor_after: body.meta&.cursor_after)) },
99
+ )
90
100
  end
91
101
 
92
102
  def new_session_webhook
@@ -114,16 +124,42 @@ module Qismo
114
124
  end
115
125
 
116
126
  def agents(**opt)
127
+ if opt[:page].nil? || opt[:page].empty?
128
+ opt[:page] = 1
129
+ end
130
+
117
131
  body = get("/api/v2/admin/agents", opt)
118
- [body.data.agents, body.meta]
132
+
133
+ total_page = (body.meta.total_count.to_f / body.meta.per_page.to_f).ceil
134
+ next_page = opt[:page] < total_page ? (opt[:page] + 1) : nil
135
+ prev_page = opt[:page] > 1 ? (opt[:page] - 1) : nil
136
+
137
+ Collection.new(
138
+ body.data.agents,
139
+ next_page: next_page,
140
+ prev_page: prev_page,
141
+ next_func: -> { agents(opt.merge(page: next_page)) },
142
+ prev_func: -> { agents(opt.merge(page: prev_page)) },
143
+ )
119
144
  end
120
145
 
121
146
  def agents_by_ids(*ids)
122
- get("/api/v1/admin/agents/get_by_ids", ids: ids).data
147
+ get("/api/v1/admin/agents/get_by_ids", **{ "ids[]": ids }).data
123
148
  end
124
149
 
125
- def agent_by_divisions(*division_ids, **opt)
126
- get("/api/v2/admin/agents/by_division", opt.merge(division_ids: division_ids)).data
150
+ def agents_by_divisions(*division_ids, **opt)
151
+ body = get("/api/v2/admin/agents/by_division", opt.merge({ "division_ids[]": division_ids }))
152
+
153
+ next_page = body.meta.page < body.meta.total_page ? (body.meta.page + 1) : nil
154
+ prev_page = body.meta.page > 1 ? (body.meta.page - 1) : nil
155
+
156
+ Collection.new(
157
+ body.data,
158
+ next_page: next_page,
159
+ prev_page: prev_page,
160
+ next_func: -> { agents_by_divisions(opt.merge(page: next_page)) },
161
+ prev_func: -> { agents_by_divisions(opt.merge(page: prev_page)) },
162
+ )
127
163
  end
128
164
 
129
165
  def agent(agent_id)
@@ -135,8 +171,19 @@ module Qismo
135
171
  end
136
172
 
137
173
  def wa_broadcast_templates(**opt)
138
- body = get("/api/v2/admin/hsm", opt)
139
- [body.data.hsm_templates, body.meta]
174
+ body = get("/api/v3/admin/hsm", opt)
175
+
176
+ meta = body.meta
177
+ next_page = meta.page < meta.total_page ? (meta.page + 1) : nil
178
+ prev_page = meta.page > 1 ? (meta.page - 1) : nil
179
+
180
+ Collection.new(
181
+ body.data.hsm_templates,
182
+ next_page: next_page,
183
+ prev_page: prev_page,
184
+ next_func: -> { wa_broadcast_templates(opt.merge(page: next_page)) },
185
+ prev_func: -> { wa_broadcast_templates(opt.merge(page: prev_page)) },
186
+ )
140
187
  end
141
188
 
142
189
  def send_wa_outbound(**opt)
data/lib/qismo/client.rb CHANGED
@@ -28,7 +28,7 @@ module Qismo
28
28
  end
29
29
 
30
30
  def get(path, **params)
31
- request(:get, path, params)
31
+ request(:get, path, params: params)
32
32
  end
33
33
 
34
34
  def request(method, path, **opt)
data/lib/qismo/model.rb CHANGED
@@ -28,11 +28,11 @@ module Qismo
28
28
  alias_method :prev_page?, :has_prev_page?
29
29
 
30
30
  def next_page
31
- @next_func.call
31
+ @next_func.call if has_next_page?
32
32
  end
33
33
 
34
34
  def prev_page
35
- @prev_func.call
35
+ @prev_func.call if has_prev_page?
36
36
  end
37
37
  end
38
38
 
data/lib/qismo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Qismo
4
- VERSION = "0.5.0"
4
+ VERSION = "0.6.0"
5
5
  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.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Qiscus Integration