Class: LicenseManagerSdk::Client

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

Overview

Cliente para a API de validação do LicenseManager. Encapsula geração de HMAC-SHA256 e os 4 endpoints de validação.

Examples:

Uso básico

client = LicenseManagerSdk::Client.new(
  base_url:   "https://licensemanager-api.enzojb.com.br",
  token:      "seu-token",
  license_id: "guid-da-licenca"
)
 = client.("usuario@empresa.com")
client.heartbeat(.session_id) if .authorized

Constant Summary collapse

MAX_RETRIES =
3

Instance Method Summary collapse

Constructor Details

#initialize(base_url:, token:, license_id:, timeout: 30) ⇒ Client

Returns a new instance of Client.

Raises:

  • (ArgumentError)


16
17
18
19
20
21
22
23
24
25
# File 'lib/licensemanager_sdk/client.rb', line 16

def initialize(base_url:, token:, license_id:, timeout: 30)
  raise ArgumentError, "base_url é obrigatório" if base_url.nil? || base_url.strip.empty?
  raise ArgumentError, "token é obrigatório"    if token.nil?    || token.strip.empty?
  raise ArgumentError, "license_id é obrigatório" if license_id.nil? || license_id.strip.empty?

  @base_url   = base_url.chomp("/")
  @token      = token
  @license_id = license_id
  @timeout    = timeout
end

Instance Method Details

#compute_signature(license_id, timestamp, body_json) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



69
70
71
72
# File 'lib/licensemanager_sdk/client.rb', line 69

def compute_signature(license_id, timestamp, body_json)
  payload = "#{license_id}:#{timestamp}:#{body_json}"
  OpenSSL::HMAC.hexdigest("SHA256", @token, payload)
end

#heartbeat(session_id) ⇒ Object

Envia heartbeat para manter a sessão ativa.

Parameters:

  • session_id (String)


41
42
43
44
45
# File 'lib/licensemanager_sdk/client.rb', line 41

def heartbeat(session_id)
  body = { idLicenca: @license_id, idSessao: session_id }
  post("api/validacao/heartbeat", body)
  nil
end

#login(user_id) ⇒ LoginResult

Valida login de um usuário numa licença.

Parameters:

  • user_id (String)

    identificador único do usuário

Returns:



30
31
32
33
34
35
36
37
# File 'lib/licensemanager_sdk/client.rb', line 30

def (user_id)
  body = { idLicenca: @license_id, identificadorUsuario: user_id }
  data = post("api/validacao/login", body)
  LoginResult.new(
    authorized: data["autorizado"] || false,
    session_id: data["idSessao"]
  )
end

#logout(session_id) ⇒ Object

Encerra a sessão (idempotente).

Parameters:

  • session_id (String)


49
50
51
52
53
# File 'lib/licensemanager_sdk/client.rb', line 49

def logout(session_id)
  body = { idLicenca: @license_id, idSessao: session_id }
  post("api/validacao/logout", body)
  nil
end

#validate_installation(machine_id) ⇒ InstallationResult

Valida ou registra uma instalação da aplicação cliente.

Parameters:

  • machine_id (String)

    identificador único da máquina

Returns:



58
59
60
61
62
63
64
65
66
# File 'lib/licensemanager_sdk/client.rb', line 58

def validate_installation(machine_id)
  body = { idLicenca: @license_id, identificadorMaquina: machine_id }
  data = post("api/validacao/instalacao", body)
  InstallationResult.new(
    authorized:        data["autorizado"]    || false,
    installation_id:   data["idInstalacao"],
    already_registered: data["jaRegistrada"] || false
  )
end