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.



474
475
476
477
# File 'lib/smplkit/management/client.rb', line 474

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

Instance Method Details

#_create_flag(flag) ⇒ Object



536
537
538
539
540
# File 'lib/smplkit/management/client.rb', line 536

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

#_update_flag(flag) ⇒ Object



542
543
544
545
546
# File 'lib/smplkit/management/client.rb', line 542

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

#delete(id) ⇒ Object



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

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

#fetch_flag(id) ⇒ Object



548
549
550
551
# File 'lib/smplkit/management/client.rb', line 548

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

#flushObject



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

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

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

#get(id) ⇒ Object



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

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

#listObject



494
495
496
497
# File 'lib/smplkit/management/client.rb', line 494

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

#list_flagsObject



553
554
555
556
# File 'lib/smplkit/management/client.rb', line 553

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

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



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

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



529
530
531
532
533
534
# File 'lib/smplkit/management/client.rb', line 529

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



522
523
524
525
526
527
# File 'lib/smplkit/management/client.rb', line 522

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



515
516
517
518
519
520
# File 'lib/smplkit/management/client.rb', line 515

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



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

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