knockapi 0.4.2 → 0.4.3

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: ed79d84e9b6070feed5df6299073f396d7739c43a5a7c5a1ed2bb87e91722f5a
4
- data.tar.gz: 99360a722f4a6f669940d38c08688edb64effb68f4805f26fe3d790dce7038bc
3
+ metadata.gz: 1bb4aabec2c7c629eb81d5471e1c1be91af2183336a751e212cf536299b2fd7e
4
+ data.tar.gz: 50f6206a65e9ffa3c7d2cf99692ad5acb6fd3d7c337304b6f4a814fa2ba756f6
5
5
  SHA512:
6
- metadata.gz: 670a433ef51923fb02f0af1abd618e848c6b5574dc919766ccec8583d364f9a6f3ca2f618592a1c3ed95245a028302eaa2d288d6a1b0b2d8eb979153e4dbaf16
7
- data.tar.gz: 9bcbe07af9a0125fb77d1f3ce50bc190ecf12ac2c32f71e214c93a6492276960343d4e59ad7fe98411ebccbdeea7da29de54f78da5a1041471d6bed2d0e6eb55
6
+ metadata.gz: 72a821d5baf5e43d50054f44193052e3eab317f59506a675085b481fec8490bec453ea2eaa01ff6b2a16df4aa7955f5f46544d93d193771e448915c520186b16
7
+ data.tar.gz: 94df91c57a491f60a2dd5a122b4b6d3cf37cda6a3f63e639b489b8d182c60dab4ed138dc9a48e8fab1be21a0ff10ab06b5bbd8edad393e8c297793bc1275770c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- knockapi (0.4.2)
4
+ knockapi (0.4.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/lib/knock/client.rb CHANGED
@@ -18,7 +18,9 @@ module Knock
18
18
  http_status = response.code.to_i
19
19
  handle_error_response(response: response) if http_status >= 400
20
20
 
21
- JSON.parse(response.body)
21
+ if response.body and response.body != "" do
22
+ JSON.parse(response.body)
23
+ end
22
24
  end
23
25
 
24
26
  def get_request(path:, auth: false, params: {}, access_token: nil)
data/lib/knock/objects.rb CHANGED
@@ -8,6 +8,8 @@ module Knock
8
8
  include Base
9
9
  include Client
10
10
 
11
+ DEFAULT_PREFERENCE_SET_ID = "default"
12
+
11
13
  # Retrieves an Object in a collection
12
14
  #
13
15
  # @param [String] collection The collection the object is in
@@ -111,7 +113,7 @@ module Knock
111
113
  # @param [Hash] channel_data channel data
112
114
  #
113
115
  # @return [Hash] channel data
114
- def set_channel_data(id:, channel_id:, channel_data:)
116
+ def set_channel_data(collection:, id:, channel_id:, channel_data:)
115
117
  request = put_request(
116
118
  auth: true,
117
119
  path: "/v1/objects/#{collection}/#{id}/channel_data/#{channel_id}",
@@ -121,6 +123,22 @@ module Knock
121
123
  execute_request(request: request)
122
124
  end
123
125
 
126
+ # Unsets object channel data for the given channel id
127
+ #
128
+ # @param [String] collection The collection the object is in
129
+ # @param [String] id The object id
130
+ # @param [String] channel_id target channel ID
131
+ #
132
+ # @return [Hash] channel data
133
+ def unset_channel_data(collection:, id:, channel_id:)
134
+ request = delete_request(
135
+ auth: true,
136
+ path: "/v1/objects/#{collection}/#{id}/channel_data/#{channel_id}"
137
+ )
138
+
139
+ execute_request(request: request)
140
+ end
141
+
124
142
  # Get object's messages
125
143
  #
126
144
  # @param [String] collection The collection the object is in
@@ -137,6 +155,146 @@ module Knock
137
155
 
138
156
  execute_request(request: request)
139
157
  end
158
+
159
+ ##
160
+ # Preferences
161
+ ##
162
+
163
+ # Returns all preference sets for the object
164
+ #
165
+ # @param [String] collection The collection the object is in
166
+ # @param [String] id The object id
167
+ #
168
+ # @return [Array] The preference sets
169
+ def get_all_preferences(collection:, id:)
170
+ endpoint = "/v1/objects/#{collection}/#{id}/preferences"
171
+
172
+ request = get_request(
173
+ auth: true,
174
+ path: endpoint
175
+ )
176
+
177
+ execute_request(request: request)
178
+ end
179
+
180
+ # Gets a single preference set, defaults to the 'default' set
181
+ # for the object given.
182
+ #
183
+ # @param [String] collection The collection the object is in
184
+ # @param [String] id The object id
185
+ # @param [String] preference_set The preference set ID (defaults to `default`)
186
+ #
187
+ # @return [Hash] The preference set (if it exists)
188
+ def get_preferences(collection:, id:, preference_set: DEFAULT_PREFERENCE_SET_ID)
189
+ endpoint = "/v1/objects/#{collection}/#{id}/preferences/#{preference_set}"
190
+
191
+ request = get_request(
192
+ auth: true,
193
+ path: endpoint
194
+ )
195
+
196
+ execute_request(request: request)
197
+ end
198
+
199
+ # Sets multiple preferences at once for the preference set.
200
+ #
201
+ # @param [String] collection The collection the object is in
202
+ # @param [String] id The object id
203
+ # @param [String] preference_set The preference set ID (defaults to `default`)
204
+ # @param [Hash] channel_types The channel_types hash to set
205
+ # @param [Hash] workflows The workflows hash to set
206
+ # @param [Hash] categories The categories hash to set
207
+ #
208
+ # @return [Hash] The preference set
209
+ def set_preferences(
210
+ collection:,
211
+ id:,
212
+ channel_types: nil,
213
+ workflows: nil,
214
+ categories: nil,
215
+ preference_set: DEFAULT_PREFERENCE_SET_ID
216
+ )
217
+ endpoint = "/v1/objects/#{collection}/#{id}/preferences/#{preference_set}"
218
+
219
+ request = put_request(
220
+ auth: true,
221
+ path: endpoint,
222
+ body: {
223
+ channel_types: channel_types,
224
+ workflows: workflows,
225
+ categories: categories
226
+ }
227
+ )
228
+
229
+ execute_request(request: request)
230
+ end
231
+
232
+ # Sets preferences for the given channel type
233
+ #
234
+ # @param [String] collection The collection the object is in
235
+ # @param [String] id The object id
236
+ # @param [String] preference_set The preference set ID (defaults to `default`)
237
+ # @param [String] channel_type The channel type to set
238
+ # @param [Bool] setting Whether the channel type is enabled or not
239
+ #
240
+ # @return [Hash] The preference set
241
+ def set_channel_type_preferences(collection:, id:, channel_type:, setting:, preference_set: DEFAULT_PREFERENCE_SET_ID)
242
+ endpoint = "/v1/objects/#{collection}/#{id}/preferences/#{preference_set}/channel_types/#{channel_type}"
243
+
244
+ request = put_request(
245
+ auth: true,
246
+ path: endpoint,
247
+ body: {subscribed: setting}
248
+ )
249
+
250
+ execute_request(request: request)
251
+ end
252
+
253
+ # Sets preferences for the given workflow
254
+ #
255
+ # @param [String] collection The collection the object is in
256
+ # @param [String] id The object id
257
+ # @param [String] preference_set The preference set ID (defaults to `default`)
258
+ # @param [String] workflow The workflow to set preferences for
259
+ # @param [Bool | Hash] setting Either a boolean to indicate if the type is enabled
260
+ # or a hash containing channel types and settings
261
+ #
262
+ # @return [Hash] The preference set
263
+ def set_workflow_preferences(collection:, id:, workflow:, setting:, preference_set: DEFAULT_PREFERENCE_SET_ID)
264
+ params = setting.is_a?(Hash) ? setting : {subscribed: setting}
265
+ endpoint = "/v1/objects/#{collection}/#{id}/preferences/#{preference_set}/workflows/#{workflow}"
266
+
267
+ request = put_request(
268
+ auth: true,
269
+ path: endpoint,
270
+ body: params
271
+ )
272
+
273
+ execute_request(request: request)
274
+ end
275
+
276
+ # Sets preferences for the given category
277
+ #
278
+ # @param [String] collection The collection the object is in
279
+ # @param [String] id The object id
280
+ # @param [String] preference_set The preference set ID (defaults to `default`)
281
+ # @param [String] category The category to set preferences for
282
+ # @param [Bool | Hash] setting Either a boolean to indicate if the type is enabled
283
+ # or a hash containing channel types and settings
284
+ #
285
+ # @return [Hash] The preference set
286
+ def set_category_preferences(collection:, id:, category:, setting:, preference_set: DEFAULT_PREFERENCE_SET_ID)
287
+ params = setting.is_a?(Hash) ? setting : {subscribed: setting}
288
+ endpoint = "/v1/objects/#{collection}/#{id}/preferences/#{preference_set}/categories/#{category}"
289
+
290
+ request = put_request(
291
+ auth: true,
292
+ path: endpoint,
293
+ body: params
294
+ )
295
+
296
+ execute_request(request: request)
297
+ end
140
298
  end
141
299
  end
142
300
  end
data/lib/knock/users.rb CHANGED
@@ -111,7 +111,7 @@ module Knock
111
111
  request = post_request(
112
112
  auth: true,
113
113
  path: "/v1/users/#{id}/merge",
114
- body: { from_user_id: from_user_id }
114
+ body: {from_user_id: from_user_id}
115
115
  )
116
116
 
117
117
  execute_request(request: request)
@@ -317,6 +317,22 @@ module Knock
317
317
  execute_request(request: request)
318
318
  end
319
319
 
320
+ # Unsets user's channel data for the given channel id
321
+ #
322
+ # @param [String] id the user ID
323
+ # @param [String] channel_id target channel ID
324
+ # @param [Hash] channel_data channel data
325
+ #
326
+ # @return [Hash] channel data
327
+ def unset_channel_data(id:, channel_id:)
328
+ request = delete_request(
329
+ auth: true,
330
+ path: "/v1/users/#{id}/channel_data/#{channel_id}"
331
+ )
332
+
333
+ execute_request(request: request)
334
+ end
335
+
320
336
  ##
321
337
  # Messages
322
338
  ##
data/lib/knock/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Knock
4
- VERSION = "0.4.2"
4
+ VERSION = "0.4.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knockapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Knock Labs, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-19 00:00:00.000000000 Z
11
+ date: 2022-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler