Class: LicenseManagerSdk::Client
- Inherits:
-
Object
- Object
- LicenseManagerSdk::Client
- 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.
Constant Summary collapse
- MAX_RETRIES =
3
Instance Method Summary collapse
- #compute_signature(license_id, timestamp, body_json) ⇒ Object private
-
#heartbeat(session_id) ⇒ Object
Envia heartbeat para manter a sessão ativa.
-
#initialize(base_url:, token:, license_id:, timeout: 30) ⇒ Client
constructor
A new instance of Client.
-
#login(user_id) ⇒ LoginResult
Valida login de um usuário numa licença.
-
#logout(session_id) ⇒ Object
Encerra a sessão (idempotente).
-
#validate_installation(machine_id) ⇒ InstallationResult
Valida ou registra uma instalação da aplicação cliente.
Constructor Details
#initialize(base_url:, token:, license_id:, timeout: 30) ⇒ Client
Returns a new instance of Client.
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# 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 # Normaliza GUID para lowercase com hífens — igual ao servidor (idLicenca:D) @license_id = license_id.match?(/\A[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\z/i) \ ? license_id.downcase \ : 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.
72 73 74 75 76 77 78 79 |
# File 'lib/licensemanager_sdk/client.rb', line 72 def compute_signature(license_id, , body_json) # Normaliza para lowercase com hífens — igual ao servidor (idLicenca:D) normalized_id = license_id.match?(/\A[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\z/i) \ ? license_id.downcase \ : license_id payload = "#{normalized_id}:#{}:#{body_json}" OpenSSL::HMAC.hexdigest("SHA256", @token, payload) end |
#heartbeat(session_id) ⇒ Object
Envia heartbeat para manter a sessão ativa.
44 45 46 47 48 |
# File 'lib/licensemanager_sdk/client.rb', line 44 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.
33 34 35 36 37 38 39 40 |
# File 'lib/licensemanager_sdk/client.rb', line 33 def login(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).
52 53 54 55 56 |
# File 'lib/licensemanager_sdk/client.rb', line 52 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.
61 62 63 64 65 66 67 68 69 |
# File 'lib/licensemanager_sdk/client.rb', line 61 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 |