1
+ # frozen_string_literal: true
2
+
1
3
#
2
4
# Copyright 2016-2017, Optimizely and contributors
3
5
#
29
31
30
32
module Optimizely
31
33
class Project
32
-
33
34
# Boolean representing if the instance represents a usable Optimizely Project
34
35
attr_reader :is_valid
35
36
@@ -148,9 +149,7 @@ def get_variation(experiment_key, user_id, attributes = nil)
148
149
149
150
unless variation_id . nil?
150
151
variation = @config . get_variation_from_id ( experiment_key , variation_id )
151
- if variation
152
- return variation [ 'key' ]
153
- end
152
+ return variation [ 'key' ] if variation
154
153
end
155
154
nil
156
155
end
@@ -165,7 +164,7 @@ def set_forced_variation(experiment_key, user_id, variation_key)
165
164
#
166
165
# Returns - Boolean - indicates if the set completed successfully.
167
166
168
- @config . set_forced_variation ( experiment_key , user_id , variation_key ) ;
167
+ @config . set_forced_variation ( experiment_key , user_id , variation_key )
169
168
end
170
169
171
170
def get_forced_variation ( experiment_key , user_id )
@@ -177,10 +176,8 @@ def get_forced_variation(experiment_key, user_id)
177
176
# Returns String|nil The forced variation key.
178
177
179
178
forced_variation_key = nil
180
- forced_variation = @config . get_forced_variation ( experiment_key , user_id ) ;
181
- if forced_variation
182
- forced_variation_key = forced_variation [ 'key' ]
183
- end
179
+ forced_variation = @config . get_forced_variation ( experiment_key , user_id )
180
+ forced_variation_key = forced_variation [ 'key' ] if forced_variation
184
181
185
182
forced_variation_key
186
183
end
@@ -199,7 +196,7 @@ def track(event_key, user_id, attributes = nil, event_tags = nil)
199
196
return nil
200
197
end
201
198
202
- if event_tags and event_tags . is_a? Numeric
199
+ if event_tags && event_tags . is_a? ( Numeric )
203
200
event_tags = {
204
201
'revenue' => event_tags
205
202
}
@@ -227,19 +224,18 @@ def track(event_key, user_id, attributes = nil, event_tags = nil)
227
224
conversion_event = @event_builder . create_conversion_event ( event_key , user_id , attributes ,
228
225
event_tags , experiment_variation_map )
229
226
@logger . log ( Logger ::INFO ,
230
- 'Dispatching conversion event to URL %s with params %s.' % [ conversion_event . url ,
231
- conversion_event . params ] )
227
+ "Dispatching conversion event to URL #{ conversion_event . url } with params #{ conversion_event . params } ." )
232
228
begin
233
229
@event_dispatcher . dispatch_event ( conversion_event )
234
230
rescue => e
235
231
@logger . log ( Logger ::ERROR , "Unable to dispatch conversion event. Error: #{ e } " )
236
232
end
237
233
238
234
@notification_center . send_notifications (
239
- NotificationCenter ::NOTIFICATION_TYPES [ :TRACK ] ,
240
- event_key , user_id , attributes , event_tags , conversion_event
235
+ NotificationCenter ::NOTIFICATION_TYPES [ :TRACK ] ,
236
+ event_key , user_id , attributes , event_tags , conversion_event
241
237
)
242
- return nil
238
+ nil
243
239
end
244
240
245
241
def is_feature_enabled ( feature_flag_key , user_id , attributes = nil )
@@ -282,7 +278,7 @@ def is_feature_enabled(feature_flag_key, user_id, attributes = nil)
282
278
end
283
279
284
280
@logger . log ( Logger ::INFO ,
285
- "Feature '#{ feature_flag_key } ' is not enabled for user '#{ user_id } '." )
281
+ "Feature '#{ feature_flag_key } ' is not enabled for user '#{ user_id } '." )
286
282
false
287
283
end
288
284
@@ -300,12 +296,12 @@ def get_feature_variable_string(feature_flag_key, variable_key, user_id, attribu
300
296
variable_value = get_feature_variable_for_type (
301
297
feature_flag_key ,
302
298
variable_key ,
303
- Optimizely ::Helpers ::Constants ::VARIABLE_TYPES [ " STRING" ] ,
299
+ Optimizely ::Helpers ::Constants ::VARIABLE_TYPES [ ' STRING' ] ,
304
300
user_id ,
305
301
attributes
306
302
)
307
303
308
- return variable_value
304
+ variable_value
309
305
end
310
306
311
307
def get_feature_variable_boolean ( feature_flag_key , variable_key , user_id , attributes = nil )
@@ -322,12 +318,12 @@ def get_feature_variable_boolean(feature_flag_key, variable_key, user_id, attrib
322
318
variable_value = get_feature_variable_for_type (
323
319
feature_flag_key ,
324
320
variable_key ,
325
- Optimizely ::Helpers ::Constants ::VARIABLE_TYPES [ " BOOLEAN" ] ,
321
+ Optimizely ::Helpers ::Constants ::VARIABLE_TYPES [ ' BOOLEAN' ] ,
326
322
user_id ,
327
323
attributes
328
324
)
329
325
330
- return variable_value
326
+ variable_value
331
327
end
332
328
333
329
def get_feature_variable_double ( feature_flag_key , variable_key , user_id , attributes = nil )
@@ -344,12 +340,12 @@ def get_feature_variable_double(feature_flag_key, variable_key, user_id, attribu
344
340
variable_value = get_feature_variable_for_type (
345
341
feature_flag_key ,
346
342
variable_key ,
347
- Optimizely ::Helpers ::Constants ::VARIABLE_TYPES [ " DOUBLE" ] ,
343
+ Optimizely ::Helpers ::Constants ::VARIABLE_TYPES [ ' DOUBLE' ] ,
348
344
user_id ,
349
345
attributes
350
346
)
351
347
352
- return variable_value
348
+ variable_value
353
349
end
354
350
355
351
def get_feature_variable_integer ( feature_flag_key , variable_key , user_id , attributes = nil )
@@ -366,12 +362,12 @@ def get_feature_variable_integer(feature_flag_key, variable_key, user_id, attrib
366
362
variable_value = get_feature_variable_for_type (
367
363
feature_flag_key ,
368
364
variable_key ,
369
- Optimizely ::Helpers ::Constants ::VARIABLE_TYPES [ " INTEGER" ] ,
365
+ Optimizely ::Helpers ::Constants ::VARIABLE_TYPES [ ' INTEGER' ] ,
370
366
user_id ,
371
367
attributes
372
368
)
373
369
374
- return variable_value
370
+ variable_value
375
371
end
376
372
377
373
private
@@ -391,17 +387,17 @@ def get_feature_variable_for_type(feature_flag_key, variable_key, variable_type,
391
387
# in case of variable type mismatch
392
388
393
389
unless feature_flag_key
394
- @logger . log ( Logger ::ERROR , " Feature flag key cannot be empty." )
390
+ @logger . log ( Logger ::ERROR , ' Feature flag key cannot be empty.' )
395
391
return nil
396
392
end
397
393
398
394
unless variable_key
399
- @logger . log ( Logger ::ERROR , " Variable key cannot be empty." )
395
+ @logger . log ( Logger ::ERROR , ' Variable key cannot be empty.' )
400
396
return nil
401
397
end
402
398
403
399
unless user_id
404
- @logger . log ( Logger ::ERROR , " User ID cannot be empty." )
400
+ @logger . log ( Logger ::ERROR , ' User ID cannot be empty.' )
405
401
return nil
406
402
end
407
403
@@ -419,7 +415,7 @@ def get_feature_variable_for_type(feature_flag_key, variable_key, variable_type,
419
415
# Returns nil if type differs
420
416
if variable [ 'type' ] != variable_type
421
417
@logger . log ( Logger ::WARN ,
422
- "Requested variable as type '#{ variable_type } ' but variable '#{ variable_key } ' is of type '#{ variable [ 'type' ] } '." )
418
+ "Requested variable as type '#{ variable_type } ' but variable '#{ variable_key } ' is of type '#{ variable [ 'type' ] } '." )
423
419
return nil
424
420
else
425
421
decision = @decision_service . get_variation_for_feature ( feature_flag , user_id , attributes )
@@ -428,17 +424,17 @@ def get_feature_variable_for_type(feature_flag_key, variable_key, variable_type,
428
424
variation = decision [ 'variation' ]
429
425
variation_variable_usages = @config . variation_id_to_variable_usage_map [ variation [ 'id' ] ]
430
426
variable_id = variable [ 'id' ]
431
- if variation_variable_usages and variation_variable_usages . key? ( variable_id )
427
+ if variation_variable_usages & .key? ( variable_id )
432
428
variable_value = variation_variable_usages [ variable_id ] [ 'value' ]
433
429
@logger . log ( Logger ::INFO ,
434
- "Got variable value '#{ variable_value } ' for variable '#{ variable_key } ' of feature flag '#{ feature_flag_key } '." )
430
+ "Got variable value '#{ variable_value } ' for variable '#{ variable_key } ' of feature flag '#{ feature_flag_key } '." )
435
431
else
436
432
@logger . log ( Logger ::DEBUG ,
437
- "Variable '#{ variable_key } ' is not used in variation '#{ variation [ 'key' ] } '. Returning the default variable value '#{ variable_value } '." )
433
+ "Variable '#{ variable_key } ' is not used in variation '#{ variation [ 'key' ] } '. Returning the default variable value '#{ variable_value } '." )
438
434
end
439
435
else
440
436
@logger . log ( Logger ::INFO ,
441
- "User '#{ user_id } ' was not bucketed into any variation for feature flag '#{ feature_flag_key } '. Returning the default variable value '#{ variable_value } '." )
437
+ "User '#{ user_id } ' was not bucketed into any variation for feature flag '#{ feature_flag_key } '. Returning the default variable value '#{ variable_value } '." )
442
438
end
443
439
end
444
440
@@ -483,13 +479,9 @@ def user_inputs_valid?(attributes = nil, event_tags = nil)
483
479
#
484
480
# Returns boolean True if inputs are valid. False otherwise.
485
481
486
- if !attributes . nil? && !attributes_valid? ( attributes )
487
- return false
488
- end
482
+ return false if !attributes . nil? && !attributes_valid? ( attributes )
489
483
490
- if !event_tags . nil? && !event_tags_valid? ( event_tags )
491
- return false
492
- end
484
+ return false if !event_tags . nil? && !event_tags_valid? ( event_tags )
493
485
494
486
true
495
487
end
@@ -514,30 +506,29 @@ def event_tags_valid?(event_tags)
514
506
515
507
def validate_instantiation_options ( datafile , skip_json_validation )
516
508
unless skip_json_validation
517
- raise InvalidInputError . new ( 'datafile' ) unless Helpers ::Validator . datafile_valid? ( datafile )
509
+ raise InvalidInputError , 'datafile' unless Helpers ::Validator . datafile_valid? ( datafile )
518
510
end
519
511
520
- raise InvalidInputError . new ( 'logger' ) unless Helpers ::Validator . logger_valid? ( @logger )
521
- raise InvalidInputError . new ( 'error_handler' ) unless Helpers ::Validator . error_handler_valid? ( @error_handler )
522
- raise InvalidInputError . new ( 'event_dispatcher' ) unless Helpers ::Validator . event_dispatcher_valid? ( @event_dispatcher )
512
+ raise InvalidInputError , 'logger' unless Helpers ::Validator . logger_valid? ( @logger )
513
+ raise InvalidInputError , 'error_handler' unless Helpers ::Validator . error_handler_valid? ( @error_handler )
514
+ raise InvalidInputError , 'event_dispatcher' unless Helpers ::Validator . event_dispatcher_valid? ( @event_dispatcher )
523
515
end
524
516
525
517
def send_impression ( experiment , variation_key , user_id , attributes = nil )
526
518
experiment_key = experiment [ 'key' ]
527
519
variation_id = @config . get_variation_id_from_key ( experiment_key , variation_key )
528
520
impression_event = @event_builder . create_impression_event ( experiment , variation_id , user_id , attributes )
529
521
@logger . log ( Logger ::INFO ,
530
- 'Dispatching impression event to URL %s with params %s.' % [ impression_event . url ,
531
- impression_event . params ] )
522
+ "Dispatching impression event to URL #{ impression_event . url } with params #{ impression_event . params } ." )
532
523
begin
533
524
@event_dispatcher . dispatch_event ( impression_event )
534
525
rescue => e
535
526
@logger . log ( Logger ::ERROR , "Unable to dispatch impression event. Error: #{ e } " )
536
527
end
537
528
variation = @config . get_variation_from_id ( experiment_key , variation_id )
538
529
@notification_center . send_notifications (
539
- NotificationCenter ::NOTIFICATION_TYPES [ :ACTIVATE ] ,
540
- experiment , user_id , attributes , variation , impression_event
530
+ NotificationCenter ::NOTIFICATION_TYPES [ :ACTIVATE ] ,
531
+ experiment , user_id , attributes , variation , impression_event
541
532
)
542
533
end
543
534
end
0 commit comments