Class: KnoxCall::Resources::Clients

Inherits:
Object
  • Object
show all
Includes:
UnwrapsEnvelope
Defined in:
lib/knoxcall/resources/clients.rb

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Clients

Returns a new instance of Clients.



6
# File 'lib/knoxcall/resources/clients.rb', line 6

def initialize(client) = @client = client

Instance Method Details

#create(**input) ⇒ Object



20
# File 'lib/knoxcall/resources/clients.rb', line 20

def create(**input) = unwrap(@client.request("POST", "/v1/clients", body: input))

#create_credential(client_id, kind:, label:, data: nil) ⇒ Object

For mtls "issue" mode the response carries a ONE-SHOT "reveal" (private_key_pem, ca_chain_pem) — store it now.



29
30
31
32
33
# File 'lib/knoxcall/resources/clients.rb', line 29

def create_credential(client_id, kind:, label:, data: nil)
  body = { kind: kind, label: label }
  body[:data] = data if data
  unwrap(@client.request("POST", "/v1/clients/#{encode(client_id)}/credentials", body: body))
end

#delete(client_id) ⇒ Object

Returns => true.



23
# File 'lib/knoxcall/resources/clients.rb', line 23

def delete(client_id) = unwrap(@client.request("DELETE", "/v1/clients/#{encode(client_id)}"))

#delete_credential(client_id, credential_id) ⇒ Object

Returns => true.



36
# File 'lib/knoxcall/resources/clients.rb', line 36

def delete_credential(client_id, credential_id) = unwrap(@client.request("DELETE", "/v1/clients/#{encode(client_id)}/credentials/#{encode(credential_id)}"))

#each(**params, &block) ⇒ Object

Yield every calling client, walking pages transparently. Returns a lazy Enumerator when no block is given.



14
15
16
17
# File 'lib/knoxcall/resources/clients.rb', line 14

def each(**params, &block)
  enum = paginate(params) { |p| list(**p) }
  block ? enum.each(&block) : enum
end

#get(client_id) ⇒ Object



19
# File 'lib/knoxcall/resources/clients.rb', line 19

def get(client_id) = unwrap(@client.request("GET", "/v1/clients/#{encode(client_id)}"))

#list(**params) ⇒ Object

Paginated. Params: page (default 1), per_page (default 20, max 100). Returns the meta envelope.



10
# File 'lib/knoxcall/resources/clients.rb', line 10

def list(**params) = @client.request("GET", "/v1/clients", query: params.empty? ? nil : params)

#list_credentials(client_id) ⇒ Object

Bare array — no pagination. Secret material is redacted server-side.



26
27
28
# File 'lib/knoxcall/resources/clients.rb', line 26

def list_credentials(client_id) = unwrap(@client.request("GET", "/v1/clients/#{encode(client_id)}/credentials"))
# For mtls "issue" mode the response carries a ONE-SHOT "reveal"
# ({certificate_pem, private_key_pem, ca_chain_pem}) — store it now.

#update(client_id, **input) ⇒ Object



21
22
# File 'lib/knoxcall/resources/clients.rb', line 21

def update(client_id, **input) = unwrap(@client.request("PATCH", "/v1/clients/#{encode(client_id)}", body: input))
# Returns {"deleted" => true}.

#update_credential(client_id, credential_id, **input) ⇒ Object



34
35
# File 'lib/knoxcall/resources/clients.rb', line 34

def update_credential(client_id, credential_id, **input) = unwrap(@client.request("PATCH", "/v1/clients/#{encode(client_id)}/credentials/#{encode(credential_id)}", body: input))
# Returns {"deleted" => true}.