Funções da base

Referência das funções feitas à mão que todo serviço usa. Ambiente, credencial, token do aplicativo, endereços e erros.

A base é a parte do SDK escrita à mão (o resto é gerado dos contratos). Tudo daqui é exportado pela raiz: import { ... } from "termo_core" no TypeScript e termo_core::... no Rust.

Ambiente

ambiente_atual

Ambiente fixado pelo código ou lido uma única vez da variável AMBIENTE. Sem ambiente, lança erro (TypeScript) ou encerra o processo (Rust) com uma mensagem clara.

function ambiente_atual(): Ambiente // "LOCALHOST" | "SANDBOX" | "PRODUCTION"

definir_ambiente_atual_pelo_codigo

Fixa o ambiente sem ler a variável. No navegador é o único jeito. Só vale antes da primeira consulta ao ambiente.

function definir_ambiente_atual_pelo_codigo(ambiente: Ambiente | string): void

Lança erro para um nome inválido ou se o ambiente já estiver fixado em outro valor.

interpretar_nome_do_ambiente

Converte um texto (sem diferenciar maiúsculas) no ambiente, ou nada quando não existe.

function interpretar_nome_do_ambiente(nome_do_ambiente: string): Ambiente | undefined
const TODOS_OS_AMBIENTES: readonly Ambiente[]
const NOME_DA_VARIAVEL_DO_AMBIENTE = "AMBIENTE"

Endereços dos serviços

endereco_do_servico_no_ambiente_atual

Endereço da API do serviço no ambiente em que o código está rodando (ou o endereço substituído neste processo).

import { endereco_do_servico_no_ambiente_atual, servicos } from "termo_core";

function endereco_do_servico_no_ambiente_atual(servico: ServicoTermotubos): string

endereco_do_servico_no_ambiente_atual(servicos.TERMO_AUTH); // "https://sandbox-api-auth.termotubos.com.br"

endereco_no_ambiente

Endereço do serviço num ambiente qualquer, sem olhar o ambiente atual.

function endereco_no_ambiente(servico: ServicoTermotubos, ambiente: Ambiente): string

substituir_endereco_do_servico_neste_processo

Troca o endereço de um serviço só neste processo, por cima da tabela por ambiente (ex.: um servidor de teste). O normal é não precisar chamar.

function substituir_endereco_do_servico_neste_processo(servico: ServicoTermotubos, novo_endereco: string): void

servicos e ServicoTermotubos

A tabela de endereços. Uma constante por serviço (TERMO_AUTH, TERMO_BUCKET...) e TODOS_OS_SERVICOS.

interface ServicoTermotubos {
  readonly nome_do_servico: string;          // "TermoAuth"
  readonly nome_do_modulo: string;           // "auth"
  readonly endereco_no_localhost: string | null; // null = usa o sandbox
  readonly endereco_no_sandbox: string;
  readonly endereco_em_production: string;
}

Credencial e token do aplicativo

CredencialDeAcesso.token_do_usuario_logado

Credencial a partir do JWT do usuário, com ou sem Bearer .

class CredencialDeAcesso {
  static token_do_usuario_logado(token_do_usuario: string): CredencialDeAcesso;
  token_bearer(): string;
}

token_do_aplicativo

JWT curto do próprio app, trocado no TermoAuth pelo segredo do app. Em cache, renovado quando falta menos de 60 s para expirar. Só back-end.

function token_do_aplicativo(): Promise<CredencialDeAcesso>

definir_segredo_do_app

Define o segredo do app neste processo (ex.: lido do banco). Tem prioridade sobre a variável SEGREDO_DO_APP_GERADO_NO_TERMO_AUTH; vazio volta a usar a variável. Trocar o segredo descarta o token em cache.

function definir_segredo_do_app(segredo: string | null | undefined): void

segredo_do_app_configurado

true quando há segredo definido pelo código ou pela variável de ambiente.

function segredo_do_app_configurado(): boolean
const VARIAVEL_DO_SEGREDO_DO_APP = "SEGREDO_DO_APP_GERADO_NO_TERMO_AUTH"

identificador_do_aplicativo

Id do próprio app no TermoAuth (o app devolvido por POST /token_de_app), o mesmo id do app em todos os serviços.

function identificador_do_aplicativo(): Promise<string>

Erros

ErroAoChamarServico

O erro de todas as funções de rota. Detalhes e exemplos em Erros.

class ErroAoChamarServico extends Error {
  readonly tipo: TipoDoErroAoChamarServico;
  readonly nome_do_servico: string;
  readonly detalhe: string | undefined;
  readonly status_http: number | undefined;
  readonly mensagem_de_erro: string | undefined;
  readonly corpo_da_resposta: string | undefined;

  status_http_da_resposta(): number | undefined;
  servico_nao_encontrou_o_registro(): boolean;
  vale_tentar_de_novo(): boolean;
}

Requisição

Usadas pelo código gerado. Você só precisa delas para chamar uma rota que ainda não está no contrato.

chamar_servico / RequisicaoAoServico

function chamar_servico<Resposta>(requisicao: RequisicaoAoServico, opcoes_da_chamada?: OpcoesDaChamada): Promise<Resposta>

interface RequisicaoAoServico {
  servico: ServicoTermotubos;
  metodo_http: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
  caminho_da_rota: string;
  credencial_de_acesso?: CredencialDeAcesso;
  parametros_de_consulta?: object;
  cabecalhos?: object;
  corpo_json?: unknown;
  formulario?: FormData;
  formato_da_resposta: "json" | "sem_conteudo" | "bytes";
}

interface OpcoesDaChamada {
  sinal_de_cancelamento?: AbortSignal;
  tempo_limite_em_milissegundos?: number; // padrão 30_000
}

codificar_parametro_de_caminho

Codifica um valor para entrar com segurança num segmento do caminho (/usuario/{id}).

function codificar_parametro_de_caminho(valor: string | number | boolean): string

Nesta página