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): voidLanç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): stringsubstituir_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): voidservicos 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): voidsegredo_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