devcycle-ruby-server-sdk 2.5.0 → 2.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 +4 -4
- data/README.md +4 -4
- data/lib/devcycle-ruby-server-sdk/api/{devcycle_api.rb → client.rb} +74 -83
- data/lib/devcycle-ruby-server-sdk/localbucketing/config_manager.rb +1 -1
- data/lib/devcycle-ruby-server-sdk/localbucketing/event_queue.rb +4 -4
- data/lib/devcycle-ruby-server-sdk/localbucketing/local_bucketing.rb +5 -5
- data/lib/devcycle-ruby-server-sdk/localbucketing/{dvc_options.rb → options.rb} +4 -1
- data/lib/devcycle-ruby-server-sdk/models/{user_data.rb → user.rb} +6 -3
- data/lib/devcycle-ruby-server-sdk/models/user_data_and_events_body.rb +1 -1
- data/lib/devcycle-ruby-server-sdk/version.rb +1 -1
- data/lib/devcycle-ruby-server-sdk.rb +3 -3
- data/spec/api/devcycle_api_spec.rb +16 -16
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a430c89852328eb9c5b7d6ef5d5af059dc0cca0f4f92d970078c7ce99ba30bb
|
4
|
+
data.tar.gz: 779241990b71f283cd20b7f6ddba222988ba4b09269c8380d944267b063a909b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69aad9997132cc4635bc9a526c7b32db6f8e2c3debf7fd1523f76df55d072ca1af858820778f89e10cc3b64a6dbf49c136ba9b56a70dd9a6d86bbcb0650b6441
|
7
|
+
data.tar.gz: 781849079fdc8cb6377de5a5c06a857fb33d6cc378bb46692cb67dc9f8e4049a349874aacf4865daa5b0da0f3d5bbff79d9a62a0945a30e55d47f3e36c88e5f2
|
data/README.md
CHANGED
@@ -23,15 +23,15 @@ DevCycle.configure do |config|
|
|
23
23
|
config.api_key['bearerAuth'] = 'YOUR API KEY'
|
24
24
|
end
|
25
25
|
|
26
|
-
api_instance = DevCycle::
|
27
|
-
|
26
|
+
api_instance = DevCycle::Client.new
|
27
|
+
user = DevCycle::User.new({ user_id: 'user_id_example' }) # User |
|
28
28
|
|
29
29
|
begin
|
30
30
|
#Get all features for user data
|
31
|
-
result = api_instance.all_features(
|
31
|
+
result = api_instance.all_features(user)
|
32
32
|
p result
|
33
33
|
rescue DevCycle::ApiError => e
|
34
|
-
puts "Exception when calling
|
34
|
+
puts "Exception when calling DevCycle::Client->all_features: #{e}"
|
35
35
|
end
|
36
36
|
|
37
37
|
```
|
@@ -1,21 +1,9 @@
|
|
1
|
-
=begin
|
2
|
-
#DevCycle Bucketing API
|
3
|
-
|
4
|
-
#Documents the DevCycle Bucketing API which provides and API interface to User Bucketing and for generated SDKs.
|
5
|
-
|
6
|
-
The version of the OpenAPI document: 1.0.0
|
7
|
-
|
8
|
-
Generated by: https://openapi-generator.tech
|
9
|
-
OpenAPI Generator version: 5.3.0
|
10
|
-
|
11
|
-
=end
|
12
|
-
|
13
1
|
require 'cgi'
|
14
2
|
require 'logger'
|
15
3
|
|
16
4
|
module DevCycle
|
17
|
-
class
|
18
|
-
def initialize(sdkKey, dvc_options =
|
5
|
+
class Client
|
6
|
+
def initialize(sdkKey, dvc_options = Options.new, wait_for_init = false)
|
19
7
|
if sdkKey.nil?
|
20
8
|
raise ArgumentError.new('Missing SDK key!')
|
21
9
|
elsif !sdkKey.start_with?('server') && !sdkKey.start_with?('dvc_server')
|
@@ -78,23 +66,23 @@ module DevCycle
|
|
78
66
|
end
|
79
67
|
|
80
68
|
# Get all features by key for user data
|
81
|
-
# @param
|
69
|
+
# @param user [User]
|
82
70
|
# @param [Hash] opts the optional parameters
|
83
71
|
# @return [Hash<String, Feature>]
|
84
|
-
def all_features(
|
85
|
-
if !
|
86
|
-
fail ArgumentError, "
|
72
|
+
def all_features(user, opts = {})
|
73
|
+
if !user.is_a?(DevCycle::User)
|
74
|
+
fail ArgumentError, "user param must be an instance of DevCycle::User!"
|
87
75
|
end
|
88
76
|
|
89
|
-
validate_model(
|
77
|
+
validate_model(user)
|
90
78
|
|
91
79
|
if @dvc_options.enable_cloud_bucketing
|
92
|
-
data, _status_code, _headers = all_features_with_http_info(
|
80
|
+
data, _status_code, _headers = all_features_with_http_info(user, opts)
|
93
81
|
return data
|
94
82
|
end
|
95
83
|
|
96
84
|
if local_bucketing_initialized? && @local_bucketing.has_config
|
97
|
-
bucketed_config = @local_bucketing.generate_bucketed_config(
|
85
|
+
bucketed_config = @local_bucketing.generate_bucketed_config(user)
|
98
86
|
bucketed_config.features
|
99
87
|
else
|
100
88
|
{}
|
@@ -102,16 +90,16 @@ module DevCycle
|
|
102
90
|
end
|
103
91
|
|
104
92
|
# Get all features by key for user data
|
105
|
-
# @param
|
93
|
+
# @param user [User]
|
106
94
|
# @param [Hash] opts the optional parameters
|
107
95
|
# @return [Array<(Hash<String, Feature>, Integer, Hash)>] Hash<String, Feature> data, response status code and response headers
|
108
|
-
def all_features_with_http_info(
|
96
|
+
def all_features_with_http_info(user, opts = {})
|
109
97
|
if @api_client.config.debugging
|
110
|
-
@api_client.config.logger.debug 'Calling API:
|
98
|
+
@api_client.config.logger.debug 'Calling API: DevCycle::Client.all_features ...'
|
111
99
|
end
|
112
|
-
# verify the required parameter '
|
113
|
-
if @api_client.config.client_side_validation &&
|
114
|
-
fail ArgumentError, "Missing the required parameter '
|
100
|
+
# verify the required parameter 'user' is set
|
101
|
+
if @api_client.config.client_side_validation && user.nil?
|
102
|
+
fail ArgumentError, "Missing the required parameter 'user' when calling DevCycle::Client.all_features"
|
115
103
|
end
|
116
104
|
# resource path
|
117
105
|
local_var_path = '/v1/features'
|
@@ -133,7 +121,7 @@ module DevCycle
|
|
133
121
|
form_params = opts[:form_params] || {}
|
134
122
|
|
135
123
|
# http body (model)
|
136
|
-
post_body = opts[:debug_body] ||
|
124
|
+
post_body = opts[:debug_body] || user.to_json
|
137
125
|
|
138
126
|
# return_type
|
139
127
|
return_type = opts[:debug_return_type] || 'Hash<String, Feature>'
|
@@ -142,7 +130,7 @@ module DevCycle
|
|
142
130
|
auth_names = opts[:debug_auth_names] || ['bearerAuth']
|
143
131
|
|
144
132
|
new_options = opts.merge(
|
145
|
-
:operation => :"
|
133
|
+
:operation => :"Client.all_features",
|
146
134
|
:header_params => header_params,
|
147
135
|
:query_params => query_params,
|
148
136
|
:form_params => form_params,
|
@@ -153,37 +141,37 @@ module DevCycle
|
|
153
141
|
|
154
142
|
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
155
143
|
if @api_client.config.debugging
|
156
|
-
@api_client.config.logger.debug "API called:
|
144
|
+
@api_client.config.logger.debug "API called: DevCycle::Client#all_features\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
157
145
|
end
|
158
146
|
return data, status_code, headers
|
159
147
|
end
|
160
148
|
|
161
149
|
# Get variable value by key for user data
|
162
|
-
# @param
|
150
|
+
# @param user [User]
|
163
151
|
# @param key [String] Variable key
|
164
152
|
# @param default Default value for variable if none is retrieved
|
165
153
|
# @param [Hash] opts the optional parameters
|
166
154
|
# @return variable value which can be: string, number, boolean, or JSON
|
167
|
-
def variable_value(
|
168
|
-
variable_obj = variable(
|
155
|
+
def variable_value(user, key, default, opts = {})
|
156
|
+
variable_obj = variable(user, key, default, opts)
|
169
157
|
variable_obj.value
|
170
158
|
end
|
171
159
|
|
172
160
|
# Get variable by key for user data
|
173
|
-
# @param
|
161
|
+
# @param user [User]
|
174
162
|
# @param key [String] Variable key
|
175
163
|
# @param default Default value for variable if none is retrieved
|
176
164
|
# @param [Hash] opts the optional parameters
|
177
165
|
# @return [Variable]
|
178
|
-
def variable(
|
179
|
-
if !
|
180
|
-
fail ArgumentError, "
|
166
|
+
def variable(user, key, default, opts = {})
|
167
|
+
if !user.is_a?(DevCycle::User)
|
168
|
+
fail ArgumentError, "user param must be an instance of DevCycle::User!"
|
181
169
|
end
|
182
170
|
|
183
|
-
validate_model(
|
171
|
+
validate_model(user)
|
184
172
|
|
185
173
|
if @dvc_options.enable_cloud_bucketing
|
186
|
-
data, _status_code, _headers = variable_with_http_info(key,
|
174
|
+
data, _status_code, _headers = variable_with_http_info(key, user, default, opts)
|
187
175
|
return data
|
188
176
|
end
|
189
177
|
|
@@ -192,7 +180,7 @@ module DevCycle
|
|
192
180
|
defaulted = true
|
193
181
|
if local_bucketing_initialized? && @local_bucketing.has_config
|
194
182
|
type_code = variable_type_code_from_type(type)
|
195
|
-
variable_pb = variable_for_user_pb(
|
183
|
+
variable_pb = variable_for_user_pb(user, key, type_code)
|
196
184
|
unless variable_pb.nil?
|
197
185
|
value = get_variable_value(variable_pb)
|
198
186
|
defaulted = false
|
@@ -238,21 +226,21 @@ module DevCycle
|
|
238
226
|
|
239
227
|
# Get variable by key for user data
|
240
228
|
# @param key [String] Variable key
|
241
|
-
# @param
|
229
|
+
# @param user [User]
|
242
230
|
# @param default Default value for variable if none is retrieved
|
243
231
|
# @param [Hash] opts the optional parameters
|
244
232
|
# @return [Array<(Variable, Integer, Hash)>] Variable data, response status code and response headers
|
245
|
-
def variable_with_http_info(key,
|
233
|
+
def variable_with_http_info(key, user, default, opts = {})
|
246
234
|
if @api_client.config.debugging
|
247
|
-
@api_client.config.logger.debug 'Calling API:
|
235
|
+
@api_client.config.logger.debug 'Calling API: DevCycle::Client.variable ...'
|
248
236
|
end
|
249
237
|
# verify the required parameter 'key' is set
|
250
238
|
if @api_client.config.client_side_validation && key.nil?
|
251
|
-
fail ArgumentError, "Missing the required parameter 'key' when calling
|
239
|
+
fail ArgumentError, "Missing the required parameter 'key' when calling DevCycle::Client.variable"
|
252
240
|
end
|
253
|
-
# verify the required parameter '
|
254
|
-
if @api_client.config.client_side_validation &&
|
255
|
-
fail ArgumentError, "Missing the required parameter '
|
241
|
+
# verify the required parameter 'user' is set
|
242
|
+
if @api_client.config.client_side_validation && user.nil?
|
243
|
+
fail ArgumentError, "Missing the required parameter 'user' when calling DevCycle::Client.variable"
|
256
244
|
end
|
257
245
|
# resource path
|
258
246
|
local_var_path = '/v1/variables/{key}'.sub('{' + 'key' + '}', CGI.escape(key.to_s))
|
@@ -274,7 +262,7 @@ module DevCycle
|
|
274
262
|
form_params = opts[:form_params] || {}
|
275
263
|
|
276
264
|
# http body (model)
|
277
|
-
post_body = opts[:debug_body] ||
|
265
|
+
post_body = opts[:debug_body] || user.to_json
|
278
266
|
|
279
267
|
# return_type
|
280
268
|
return_type = opts[:debug_return_type] || 'Variable'
|
@@ -283,7 +271,7 @@ module DevCycle
|
|
283
271
|
auth_names = opts[:debug_auth_names] || ['bearerAuth']
|
284
272
|
|
285
273
|
new_options = opts.merge(
|
286
|
-
:operation => :"
|
274
|
+
:operation => :"Client.variable",
|
287
275
|
:header_params => header_params,
|
288
276
|
:query_params => query_params,
|
289
277
|
:form_params => form_params,
|
@@ -295,7 +283,7 @@ module DevCycle
|
|
295
283
|
begin
|
296
284
|
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
297
285
|
if @api_client.config.debugging
|
298
|
-
@api_client.config.logger.debug "API called:
|
286
|
+
@api_client.config.logger.debug "API called: DevCycle::Client#variable\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
299
287
|
end
|
300
288
|
return data
|
301
289
|
rescue ApiError => error
|
@@ -308,23 +296,23 @@ module DevCycle
|
|
308
296
|
end
|
309
297
|
|
310
298
|
# Get all variables by key for user data
|
311
|
-
# @param
|
299
|
+
# @param user [User]
|
312
300
|
# @param [Hash] opts the optional parameters
|
313
301
|
# @return [Hash<String, Variable>]
|
314
|
-
def all_variables(
|
315
|
-
if !
|
316
|
-
fail ArgumentError, "
|
302
|
+
def all_variables(user, opts = {})
|
303
|
+
if !user.is_a?(DevCycle::User)
|
304
|
+
fail ArgumentError, "user param must be an instance of DevCycle::User!"
|
317
305
|
end
|
318
306
|
|
319
|
-
validate_model(
|
307
|
+
validate_model(user)
|
320
308
|
|
321
309
|
if @dvc_options.enable_cloud_bucketing
|
322
|
-
data, _status_code, _headers = all_variables_with_http_info(
|
310
|
+
data, _status_code, _headers = all_variables_with_http_info(user, opts)
|
323
311
|
return data
|
324
312
|
end
|
325
313
|
|
326
314
|
if local_bucketing_initialized? && @local_bucketing.has_config
|
327
|
-
bucketed_config = @local_bucketing.generate_bucketed_config(
|
315
|
+
bucketed_config = @local_bucketing.generate_bucketed_config(user)
|
328
316
|
bucketed_config.variables
|
329
317
|
else
|
330
318
|
{}
|
@@ -332,16 +320,16 @@ module DevCycle
|
|
332
320
|
end
|
333
321
|
|
334
322
|
# Get all variables by key for user data
|
335
|
-
# @param
|
323
|
+
# @param user [User]
|
336
324
|
# @param [Hash] opts the optional parameters
|
337
325
|
# @return [Array<(Hash<String, Variable>, Integer, Hash)>] Hash<String, Variable> data, response status code and response headers
|
338
|
-
def all_variables_with_http_info(
|
326
|
+
def all_variables_with_http_info(user, opts = {})
|
339
327
|
if @api_client.config.debugging
|
340
|
-
@api_client.config.logger.debug 'Calling API:
|
328
|
+
@api_client.config.logger.debug 'Calling API: DevCycle::Client.all_variables ...'
|
341
329
|
end
|
342
|
-
# verify the required parameter '
|
343
|
-
if @api_client.config.client_side_validation &&
|
344
|
-
fail ArgumentError, "Missing the required parameter '
|
330
|
+
# verify the required parameter 'user' is set
|
331
|
+
if @api_client.config.client_side_validation && user.nil?
|
332
|
+
fail ArgumentError, "Missing the required parameter 'user' when calling DevCycle::Client.all_variables"
|
345
333
|
end
|
346
334
|
# resource path
|
347
335
|
local_var_path = '/v1/variables'
|
@@ -363,7 +351,7 @@ module DevCycle
|
|
363
351
|
form_params = opts[:form_params] || {}
|
364
352
|
|
365
353
|
# http body (model)
|
366
|
-
post_body = opts[:debug_body] ||
|
354
|
+
post_body = opts[:debug_body] || user.to_json
|
367
355
|
|
368
356
|
# return_type
|
369
357
|
return_type = opts[:debug_return_type] || 'Hash<String, Variable>'
|
@@ -372,7 +360,7 @@ module DevCycle
|
|
372
360
|
auth_names = opts[:debug_auth_names] || ['bearerAuth']
|
373
361
|
|
374
362
|
new_options = opts.merge(
|
375
|
-
:operation => :"
|
363
|
+
:operation => :"Client.all_variables",
|
376
364
|
:header_params => header_params,
|
377
365
|
:query_params => query_params,
|
378
366
|
:form_params => form_params,
|
@@ -383,57 +371,57 @@ module DevCycle
|
|
383
371
|
|
384
372
|
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
385
373
|
if @api_client.config.debugging
|
386
|
-
@api_client.config.logger.debug "API called:
|
374
|
+
@api_client.config.logger.debug "API called: DevCycle::Client#all_variables\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
387
375
|
end
|
388
376
|
return data, status_code, headers
|
389
377
|
end
|
390
378
|
|
391
379
|
# Post events to DevCycle for user
|
392
|
-
# @param
|
380
|
+
# @param user [User]
|
393
381
|
# @param event_data [Event]
|
394
382
|
# @param [Hash] opts the optional parameters
|
395
383
|
# @return [InlineResponse201]
|
396
|
-
def track(
|
397
|
-
if !
|
398
|
-
fail ArgumentError, "
|
384
|
+
def track(user, event_data, opts = {})
|
385
|
+
if !user.is_a?(DevCycle::User)
|
386
|
+
fail ArgumentError, "user param must be an instance of DevCycle::User!"
|
399
387
|
end
|
400
388
|
|
401
|
-
validate_model(
|
389
|
+
validate_model(user)
|
402
390
|
|
403
391
|
if !event_data.is_a?(DevCycle::Event)
|
404
|
-
fail ArgumentError, "event_data param must be an instance of Event!"
|
392
|
+
fail ArgumentError, "event_data param must be an instance of DevCycle::Event!"
|
405
393
|
end
|
406
394
|
|
407
395
|
validate_model(event_data)
|
408
396
|
|
409
397
|
if @dvc_options.enable_cloud_bucketing
|
410
|
-
track_with_http_info(
|
398
|
+
track_with_http_info(user, event_data, opts)
|
411
399
|
return
|
412
400
|
end
|
413
401
|
|
414
402
|
if local_bucketing_initialized?
|
415
|
-
@event_queue.queue_event(
|
403
|
+
@event_queue.queue_event(user, event_data)
|
416
404
|
else
|
417
|
-
@logger.warn('track called before
|
405
|
+
@logger.warn('track called before DevCycle::Client initialized, event will not be tracked')
|
418
406
|
end
|
419
407
|
end
|
420
408
|
|
421
409
|
# Post events to DevCycle for user
|
422
|
-
# @param
|
410
|
+
# @param user [User]
|
423
411
|
# @param event_data [Event]
|
424
412
|
# @param [Hash] opts the optional parameters
|
425
413
|
# @return [Array<(InlineResponse201, Integer, Hash)>] InlineResponse201 data, response status code and response headers
|
426
|
-
def track_with_http_info(
|
414
|
+
def track_with_http_info(user, event_data, opts = {})
|
427
415
|
if @api_client.config.debugging
|
428
|
-
@api_client.config.logger.debug 'Calling API:
|
416
|
+
@api_client.config.logger.debug 'Calling API: DevCycle::Client.post_events ...'
|
429
417
|
end
|
430
418
|
# verify the required parameter 'user_data_and_events_body' is set
|
431
|
-
if @api_client.config.client_side_validation && (
|
432
|
-
fail ArgumentError, "Missing the required parameter 'user_data_and_events_body' when calling
|
419
|
+
if @api_client.config.client_side_validation && (user.nil? || event_data.nil?)
|
420
|
+
fail ArgumentError, "Missing the required parameter 'user_data_and_events_body' when calling DevCycle::Client.post_events"
|
433
421
|
end
|
434
422
|
|
435
423
|
user_data_and_events_body = DevCycle::UserDataAndEventsBody.new({
|
436
|
-
user:
|
424
|
+
user: user,
|
437
425
|
events: [event_data]
|
438
426
|
})
|
439
427
|
|
@@ -469,7 +457,7 @@ module DevCycle
|
|
469
457
|
auth_names = opts[:debug_auth_names] || ['bearerAuth']
|
470
458
|
|
471
459
|
new_options = opts.merge(
|
472
|
-
:operation => :"
|
460
|
+
:operation => :"Client.post_events",
|
473
461
|
:header_params => header_params,
|
474
462
|
:query_params => query_params,
|
475
463
|
:form_params => form_params,
|
@@ -480,7 +468,7 @@ module DevCycle
|
|
480
468
|
|
481
469
|
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
482
470
|
if @api_client.config.debugging
|
483
|
-
@api_client.config.logger.debug "API called:
|
471
|
+
@api_client.config.logger.debug "API called: DevCycle::Client#post_events\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
484
472
|
end
|
485
473
|
return data, status_code, headers
|
486
474
|
end
|
@@ -537,4 +525,7 @@ module DevCycle
|
|
537
525
|
end
|
538
526
|
end
|
539
527
|
end
|
528
|
+
|
529
|
+
# @deprecated Use `DevCycle::Client` instead.
|
530
|
+
DVCClient = Client
|
540
531
|
end
|
@@ -38,7 +38,7 @@ module DevCycle
|
|
38
38
|
fetch_config
|
39
39
|
@config_poller.execute if @polling_enabled
|
40
40
|
rescue => e
|
41
|
-
@logger.error("
|
41
|
+
@logger.error("DevCycle: Error Initializing Config: #{e.message}")
|
42
42
|
ensure
|
43
43
|
@local_bucketing.initialized = true
|
44
44
|
end
|
@@ -38,7 +38,7 @@ module DevCycle
|
|
38
38
|
return
|
39
39
|
end
|
40
40
|
eventCount = payloads.reduce(0) { |sum, payload| sum + payload.eventCount }
|
41
|
-
@logger.debug("
|
41
|
+
@logger.debug("DevCycle: Flushing #{eventCount} event(s) for #{payloads.length} user(s)")
|
42
42
|
|
43
43
|
payloads.each do |payload|
|
44
44
|
begin
|
@@ -51,11 +51,11 @@ module DevCycle
|
|
51
51
|
@logger.error("Error publishing events, status: #{response.code}, body: #{response.return_message}")
|
52
52
|
@local_bucketing.on_payload_failure(payload.payloadId, response.code >= 500)
|
53
53
|
else
|
54
|
-
@logger.debug("
|
54
|
+
@logger.debug("DevCycle: Flushed #{eventCount} event(s), for #{payload.records.length} user(s)")
|
55
55
|
@local_bucketing.on_payload_success(payload.payloadId)
|
56
56
|
end
|
57
57
|
rescue => e
|
58
|
-
@logger.error("
|
58
|
+
@logger.error("DevCycle: Error Flushing Events response message: #{e.message}")
|
59
59
|
@local_bucketing.on_payload_failure(payload.payloadId, false)
|
60
60
|
end
|
61
61
|
end
|
@@ -64,7 +64,7 @@ module DevCycle
|
|
64
64
|
end
|
65
65
|
|
66
66
|
# Todo: implement PopulatedUser
|
67
|
-
sig { params(user:
|
67
|
+
sig { params(user: User, event: Event).returns(NilClass) }
|
68
68
|
def queue_event(user, event)
|
69
69
|
if max_event_queue_size_reached?
|
70
70
|
@logger.warn("Max event queue size reached, dropping event: #{event}")
|
@@ -3,7 +3,7 @@ require 'date'
|
|
3
3
|
require 'bigdecimal'
|
4
4
|
require 'sorbet-runtime'
|
5
5
|
|
6
|
-
require_relative '
|
6
|
+
require_relative 'options'
|
7
7
|
require_relative 'platform_data'
|
8
8
|
require_relative 'events_payload'
|
9
9
|
require_relative 'config_manager'
|
@@ -90,7 +90,7 @@ module DevCycle
|
|
90
90
|
|
91
91
|
sig { params(
|
92
92
|
sdkkey: String,
|
93
|
-
options:
|
93
|
+
options: Options,
|
94
94
|
wait_for_init: T::Boolean
|
95
95
|
).void }
|
96
96
|
def initialize(sdkkey, options, wait_for_init)
|
@@ -119,7 +119,7 @@ module DevCycle
|
|
119
119
|
@config_manager = nil
|
120
120
|
end
|
121
121
|
|
122
|
-
sig { params(user:
|
122
|
+
sig { params(user: User).returns(BucketedUserConfig) }
|
123
123
|
def generate_bucketed_config(user)
|
124
124
|
@wasm_mutex.synchronize do
|
125
125
|
user_addr = malloc_asc_byte_array(user.to_json)
|
@@ -138,7 +138,7 @@ module DevCycle
|
|
138
138
|
end
|
139
139
|
end
|
140
140
|
|
141
|
-
sig { params(user:
|
141
|
+
sig { params(user: User, key: String, variable_type: Integer).returns(T.nilable(String)) }
|
142
142
|
def variable_for_user(user, key, variable_type)
|
143
143
|
@wasm_mutex.synchronize do
|
144
144
|
user_addr = malloc_asc_string(user.to_json)
|
@@ -200,7 +200,7 @@ module DevCycle
|
|
200
200
|
end
|
201
201
|
end
|
202
202
|
|
203
|
-
sig { params(user:
|
203
|
+
sig { params(user: User, event: Event).returns(NilClass) }
|
204
204
|
def queue_event(user, event)
|
205
205
|
@wasm_mutex.synchronize do
|
206
206
|
begin
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module DevCycle
|
2
|
-
class
|
2
|
+
class Options
|
3
3
|
attr_reader :config_polling_interval_ms
|
4
4
|
attr_reader :enable_edge_db
|
5
5
|
attr_reader :enable_cloud_bucketing
|
@@ -120,4 +120,7 @@ module DevCycle
|
|
120
120
|
@logger = logger
|
121
121
|
end
|
122
122
|
end
|
123
|
+
|
124
|
+
# @deprecated Use `DevCycle::Options` instead.
|
125
|
+
DVCOptions = Options
|
123
126
|
end
|
@@ -15,7 +15,7 @@ require 'time'
|
|
15
15
|
require 'oj'
|
16
16
|
|
17
17
|
module DevCycle
|
18
|
-
class
|
18
|
+
class User
|
19
19
|
|
20
20
|
# Unique id to identify the user
|
21
21
|
attr_accessor :user_id
|
@@ -147,13 +147,13 @@ module DevCycle
|
|
147
147
|
# @param [Hash] attributes Model attributes in the form of hash
|
148
148
|
def initialize(attributes = {})
|
149
149
|
if (!attributes.is_a?(Hash))
|
150
|
-
fail ArgumentError, "The input argument (attributes) must be a hash in `DevCycle::
|
150
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `DevCycle::User` initialize method"
|
151
151
|
end
|
152
152
|
|
153
153
|
# check to see if the attribute exists and convert string to symbol for hash key
|
154
154
|
attributes = attributes.each_with_object({}) { |(k, v), h|
|
155
155
|
if (!self.class.attribute_map.key?(k.to_sym))
|
156
|
-
fail ArgumentError, "`#{k}` is not a valid attribute in `DevCycle::
|
156
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `DevCycle::User`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
|
157
157
|
end
|
158
158
|
h[k.to_sym] = v
|
159
159
|
}
|
@@ -436,4 +436,7 @@ module DevCycle
|
|
436
436
|
pb_user
|
437
437
|
end
|
438
438
|
end
|
439
|
+
|
440
|
+
# @deprecated Use `DevCycle::User` instead.
|
441
|
+
UserData = User
|
439
442
|
end
|
@@ -21,14 +21,14 @@ require 'devcycle-ruby-server-sdk/models/error_response'
|
|
21
21
|
require 'devcycle-ruby-server-sdk/models/event'
|
22
22
|
require 'devcycle-ruby-server-sdk/models/feature'
|
23
23
|
require 'devcycle-ruby-server-sdk/models/inline_response201'
|
24
|
-
require 'devcycle-ruby-server-sdk/models/
|
24
|
+
require 'devcycle-ruby-server-sdk/models/user'
|
25
25
|
require 'devcycle-ruby-server-sdk/models/user_data_and_events_body'
|
26
26
|
require 'devcycle-ruby-server-sdk/models/variable'
|
27
27
|
|
28
28
|
# APIs
|
29
|
-
require 'devcycle-ruby-server-sdk/api/
|
29
|
+
require 'devcycle-ruby-server-sdk/api/client'
|
30
30
|
|
31
|
-
require 'devcycle-ruby-server-sdk/localbucketing/
|
31
|
+
require 'devcycle-ruby-server-sdk/localbucketing/options'
|
32
32
|
require 'devcycle-ruby-server-sdk/localbucketing/local_bucketing'
|
33
33
|
require 'devcycle-ruby-server-sdk/localbucketing/platform_data'
|
34
34
|
require 'devcycle-ruby-server-sdk/localbucketing/bucketed_user_config'
|
@@ -13,16 +13,16 @@ OpenAPI Generator version: 5.3.0
|
|
13
13
|
require 'spec_helper'
|
14
14
|
require 'json'
|
15
15
|
|
16
|
-
# Unit tests for DevCycle::
|
16
|
+
# Unit tests for DevCycle::Client
|
17
17
|
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
18
18
|
# Please update as you see appropriate
|
19
|
-
describe '
|
19
|
+
describe 'DevCycle::Client' do
|
20
20
|
before(:all) do
|
21
21
|
# run before each test
|
22
|
-
options = DevCycle::
|
23
|
-
@api_instance = DevCycle::
|
22
|
+
options = DevCycle::Options.new(enable_cloud_bucketing: true)
|
23
|
+
@api_instance = DevCycle::Client.new("dvc_server_token_hash", options)
|
24
24
|
|
25
|
-
@
|
25
|
+
@user = DevCycle::User.new({
|
26
26
|
user_id: 'test-user',
|
27
27
|
appVersion: '1.2.3'
|
28
28
|
})
|
@@ -34,18 +34,18 @@ describe 'DVCClient' do
|
|
34
34
|
|
35
35
|
describe 'test an instance of DevcycleApi' do
|
36
36
|
it 'should create an instance of DevcycleApi' do
|
37
|
-
expect(@api_instance).to be_instance_of(DevCycle::
|
37
|
+
expect(@api_instance).to be_instance_of(DevCycle::Client)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
41
|
# unit tests for get_features
|
42
42
|
# Get all features by key for user data
|
43
|
-
# @param
|
43
|
+
# @param user
|
44
44
|
# @param [Hash] opts the optional parameters
|
45
45
|
# @return [Hash<String, Feature>]
|
46
46
|
describe 'get_features test' do
|
47
47
|
it 'should work' do # but it don't
|
48
|
-
#result = @api_instance.all_features(@
|
48
|
+
#result = @api_instance.all_features(@user)
|
49
49
|
|
50
50
|
#expect(result.length).to eq 1
|
51
51
|
end
|
@@ -54,15 +54,15 @@ describe 'DVCClient' do
|
|
54
54
|
# unit tests for get_variable_by_key
|
55
55
|
# Get variable by key for user data
|
56
56
|
# @param key Variable key
|
57
|
-
# @param
|
57
|
+
# @param user
|
58
58
|
# @param [Hash] opts the optional parameters
|
59
59
|
# @return [Variable]
|
60
60
|
describe 'get_variable_by_key activate-flag' do
|
61
61
|
it 'should work' do
|
62
|
-
result = @api_instance.variable(@
|
62
|
+
result = @api_instance.variable(@user, "activate-flag", false)
|
63
63
|
expect(result.isDefaulted).to eq true
|
64
64
|
|
65
|
-
result = @api_instance.variable_value(@
|
65
|
+
result = @api_instance.variable_value(@user, "activate-flag", true)
|
66
66
|
expect(result).to eq true
|
67
67
|
end
|
68
68
|
end
|
@@ -70,28 +70,28 @@ describe 'DVCClient' do
|
|
70
70
|
# unit tests for get_variable_by_key
|
71
71
|
# Get variable by key for user data
|
72
72
|
# @param key Variable key
|
73
|
-
# @param
|
73
|
+
# @param user
|
74
74
|
# @param [Hash] opts the optional parameters
|
75
75
|
# @return [Variable]
|
76
76
|
describe 'get_variable_by_key test' do
|
77
77
|
it 'should work' do
|
78
|
-
result = @api_instance.variable(@
|
78
|
+
result = @api_instance.variable(@user, "test", false)
|
79
79
|
expect(result.isDefaulted).to eq false
|
80
80
|
expect(result.value).to eq true
|
81
81
|
|
82
|
-
result = @api_instance.variable_value(@
|
82
|
+
result = @api_instance.variable_value(@user, "test", true)
|
83
83
|
expect(result).to eq true
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
87
|
# unit tests for get_variables
|
88
88
|
# Get all variables by key for user data
|
89
|
-
# @param
|
89
|
+
# @param user
|
90
90
|
# @param [Hash] opts the optional parameters
|
91
91
|
# @return [Hash<String, Variable>]
|
92
92
|
describe 'get_variables test' do
|
93
93
|
it 'should work' do
|
94
|
-
result = @api_instance.all_variables(@
|
94
|
+
result = @api_instance.all_variables(@user)
|
95
95
|
|
96
96
|
expect(result.length).to eq 1
|
97
97
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devcycle-ruby-server-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DevCycleHQ
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: typhoeus
|
@@ -133,18 +133,18 @@ files:
|
|
133
133
|
- README.md
|
134
134
|
- devcycle-ruby-server-sdk.gemspec
|
135
135
|
- lib/devcycle-ruby-server-sdk.rb
|
136
|
-
- lib/devcycle-ruby-server-sdk/api/
|
136
|
+
- lib/devcycle-ruby-server-sdk/api/client.rb
|
137
137
|
- lib/devcycle-ruby-server-sdk/api_client.rb
|
138
138
|
- lib/devcycle-ruby-server-sdk/api_error.rb
|
139
139
|
- lib/devcycle-ruby-server-sdk/configuration.rb
|
140
140
|
- lib/devcycle-ruby-server-sdk/localbucketing/bucketed_user_config.rb
|
141
141
|
- lib/devcycle-ruby-server-sdk/localbucketing/bucketing-lib.release.wasm
|
142
142
|
- lib/devcycle-ruby-server-sdk/localbucketing/config_manager.rb
|
143
|
-
- lib/devcycle-ruby-server-sdk/localbucketing/dvc_options.rb
|
144
143
|
- lib/devcycle-ruby-server-sdk/localbucketing/event_queue.rb
|
145
144
|
- lib/devcycle-ruby-server-sdk/localbucketing/event_types.rb
|
146
145
|
- lib/devcycle-ruby-server-sdk/localbucketing/events_payload.rb
|
147
146
|
- lib/devcycle-ruby-server-sdk/localbucketing/local_bucketing.rb
|
147
|
+
- lib/devcycle-ruby-server-sdk/localbucketing/options.rb
|
148
148
|
- lib/devcycle-ruby-server-sdk/localbucketing/platform_data.rb
|
149
149
|
- lib/devcycle-ruby-server-sdk/localbucketing/proto/helpers.rb
|
150
150
|
- lib/devcycle-ruby-server-sdk/localbucketing/proto/variableForUserParams.proto
|
@@ -153,7 +153,7 @@ files:
|
|
153
153
|
- lib/devcycle-ruby-server-sdk/models/event.rb
|
154
154
|
- lib/devcycle-ruby-server-sdk/models/feature.rb
|
155
155
|
- lib/devcycle-ruby-server-sdk/models/inline_response201.rb
|
156
|
-
- lib/devcycle-ruby-server-sdk/models/
|
156
|
+
- lib/devcycle-ruby-server-sdk/models/user.rb
|
157
157
|
- lib/devcycle-ruby-server-sdk/models/user_data_and_events_body.rb
|
158
158
|
- lib/devcycle-ruby-server-sdk/models/variable.rb
|
159
159
|
- lib/devcycle-ruby-server-sdk/version.rb
|