Class: Smplkit::ManagementClient::FlagsNamespace

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

Instance Method Summary collapse

Constructor Details

#initialize(api_client) ⇒ FlagsNamespace

Returns a new instance of FlagsNamespace.



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

def initialize(api_client)
  @api = SmplkitGeneratedClient::Flags::FlagsApi.new(api_client)
  @buffer = Management::FlagRegistrationBuffer.new
end

Instance Method Details

#_create_flag(flag) ⇒ Object



604
605
606
607
# File 'lib/smplkit/management/client.rb', line 604

def _create_flag(flag)
  response = ErrorMapping.call { @api.create_flag(flag_body(flag)) }
  flag_from_resource(ResourceShim.from_model(response.data))
end

#_update_flag(flag) ⇒ Object



609
610
611
612
# File 'lib/smplkit/management/client.rb', line 609

def _update_flag(flag)
  response = ErrorMapping.call { @api.update_flag(flag.id, flag_body(flag)) }
  flag_from_resource(ResourceShim.from_model(response.data))
end

#delete(id) ⇒ Object



571
572
573
574
# File 'lib/smplkit/management/client.rb', line 571

def delete(id)
  ErrorMapping.call { @api.delete_flag(id) }
  true
end

#fetch_flag(id) ⇒ Object



614
615
616
617
# File 'lib/smplkit/management/client.rb', line 614

def fetch_flag(id)
  response = ErrorMapping.call { @api.get_flag(id) }
  Smplkit::Flags::Helpers.flag_dict_from_json(ResourceShim.from_model(response.data))
end

#flushObject



545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
# File 'lib/smplkit/management/client.rb', line 545

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

  flag_items = batch.map do |entry|
    SmplkitGeneratedClient::Flags::FlagBulkItem.new(
      id: entry["id"], type: entry["type"], default: entry["default"],
      service: entry["service"], environment: entry["environment"]
    )
  end
  body = SmplkitGeneratedClient::Flags::FlagBulkRequest.new(flags: flag_items)
  ErrorMapping.call { @api.bulk_register_flags(body) }
rescue StandardError => e
  Smplkit.debug("registration", "flag flush failed: #{e.class}: #{e.message}")
end

#get(id) ⇒ Object



566
567
568
569
# File 'lib/smplkit/management/client.rb', line 566

def get(id)
  response = ErrorMapping.call { @api.get_flag(id) }
  flag_from_resource(ResourceShim.from_model(response.data))
end

#listObject



561
562
563
564
# File 'lib/smplkit/management/client.rb', line 561

def list
  response = ErrorMapping.call { @api.list_flags }
  (response.data || []).map { |r| flag_from_resource(ResourceShim.from_model(r)) }
end

#list_flagsObject



619
620
621
622
# File 'lib/smplkit/management/client.rb', line 619

def list_flags
  response = ErrorMapping.call { @api.list_flags }
  (response.data || []).map { |r| Smplkit::Flags::Helpers.flag_dict_from_json(ResourceShim.from_model(r)) }
end

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



576
577
578
579
580
581
# File 'lib/smplkit/management/client.rb', line 576

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



597
598
599
600
601
602
# File 'lib/smplkit/management/client.rb', line 597

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



590
591
592
593
594
595
# File 'lib/smplkit/management/client.rb', line 590

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



583
584
585
586
587
588
# File 'lib/smplkit/management/client.rb', line 583

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



540
541
542
543
# File 'lib/smplkit/management/client.rb', line 540

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