Class: Smplkit::ManagementClient::FlagsNamespace

Inherits:
Object
  • Object
show all
Includes:
HttpHelpers
Defined in:
lib/smplkit/management/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(http) ⇒ FlagsNamespace

Returns a new instance of FlagsNamespace.



429
430
431
432
# File 'lib/smplkit/management/client.rb', line 429

def initialize(http)
  @http = http
  @buffer = Management::FlagRegistrationBuffer.new
end

Instance Method Details

#_create_flag(flag) ⇒ Object



491
492
493
494
495
# File 'lib/smplkit/management/client.rb', line 491

def _create_flag(flag)
  body = Smplkit::Flags::Helpers.build_flag_request_body(flag)
  resp = http_post("/api/flags/v1", body)
  flag_from_resource(resp["data"])
end

#_update_flag(flag) ⇒ Object



497
498
499
500
501
# File 'lib/smplkit/management/client.rb', line 497

def _update_flag(flag)
  body = Smplkit::Flags::Helpers.build_flag_request_body(flag)
  resp = http_put("/api/flags/v1/#{flag.id}", body)
  flag_from_resource(resp["data"])
end

#delete(id) ⇒ Object



459
460
461
# File 'lib/smplkit/management/client.rb', line 459

def delete(id)
  http_delete("/api/flags/v1/#{id}")
end

#fetch_flag(id) ⇒ Object



503
504
505
506
# File 'lib/smplkit/management/client.rb', line 503

def fetch_flag(id)
  resp = http_get("/api/flags/v1/#{id}")
  Smplkit::Flags::Helpers.flag_dict_from_json(resp["data"])
end

#flushObject



439
440
441
442
443
444
445
446
447
# File 'lib/smplkit/management/client.rb', line 439

def flush
  batch = @buffer.drain
  return if batch.empty?

  body = { "data" => { "type" => "flag_bulk_register", "attributes" => { "flags" => batch } } }
  http_post("/api/flags/v1/bulk", body)
rescue StandardError => e
  Smplkit.debug("registration", "flag flush failed: #{e.class}: #{e.message}")
end

#get(id) ⇒ Object



454
455
456
457
# File 'lib/smplkit/management/client.rb', line 454

def get(id)
  resp = http_get("/api/flags/v1/#{id}")
  flag_from_resource(resp["data"])
end

#listObject



449
450
451
452
# File 'lib/smplkit/management/client.rb', line 449

def list
  list_resp = http_list("/api/flags/v1")
  list_resp.map { |r| flag_from_resource(r) }
end

#list_flagsObject



508
509
510
511
# File 'lib/smplkit/management/client.rb', line 508

def list_flags
  body = http_list("/api/flags/v1")
  body.map { |r| Smplkit::Flags::Helpers.flag_dict_from_json(r) }
end

#new_boolean_flag(id, default:, name: nil, description: nil, values: nil) ⇒ Object



463
464
465
466
467
468
# File 'lib/smplkit/management/client.rb', line 463

def new_boolean_flag(id, default:, name: nil, description: nil, values: nil)
  Smplkit::Flags::BooleanFlag.new(
    self, id: id, name: name || id, type: "BOOLEAN", default: default,
          description: description, values: values
  )
end

#new_json_flag(id, default:, name: nil, description: nil, values: nil) ⇒ Object



484
485
486
487
488
489
# File 'lib/smplkit/management/client.rb', line 484

def new_json_flag(id, default:, name: nil, description: nil, values: nil)
  Smplkit::Flags::JsonFlag.new(
    self, id: id, name: name || id, type: "JSON", default: default,
          description: description, values: values
  )
end

#new_number_flag(id, default:, name: nil, description: nil, values: nil) ⇒ Object



477
478
479
480
481
482
# File 'lib/smplkit/management/client.rb', line 477

def new_number_flag(id, default:, name: nil, description: nil, values: nil)
  Smplkit::Flags::NumberFlag.new(
    self, id: id, name: name || id, type: "NUMERIC", default: default,
          description: description, values: values
  )
end

#new_string_flag(id, default:, name: nil, description: nil, values: nil) ⇒ Object



470
471
472
473
474
475
# File 'lib/smplkit/management/client.rb', line 470

def new_string_flag(id, default:, name: nil, description: nil, values: nil)
  Smplkit::Flags::StringFlag.new(
    self, id: id, name: name || id, type: "STRING", default: default,
          description: description, values: values
  )
end

#register(declaration) ⇒ Object



434
435
436
437
# File 'lib/smplkit/management/client.rb', line 434

def register(declaration)
  @buffer.add(declaration)
  flush if @buffer.pending_count >= Management::FLAG_BATCH_FLUSH_SIZE
end