qismo 0.5.0 → 0.6.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: 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