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 |
# 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, , body_json) payload = "#{license_id}:#{}:#{body_json}" OpenSSL::HMAC.hexdigest("SHA256", @token, payload) end |
#heartbeat(session_id) ⇒ Object
Envia heartbeat para manter a sessão ativa.
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.
30 31 32 33 34 35 36 37 |
# File 'lib/licensemanager_sdk/client.rb', line 30 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).
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.
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 |