import { base64FromArrayBuffer } from "../base64.js"; import { stringToBytes } from "../taler-crypto.js"; import { AccessToken, TalerAuthentication } from "./types.js"; /** * Helper function to generate the "Authorization" HTTP header. */ export function makeBasicAuthHeader(username: string, password: string): string { const auth = `${username}:${password}`; const authEncoded: string = base64FromArrayBuffer(stringToBytes(auth)); return `Basic ${authEncoded}`; } /** * rfc8959 * @param token * @returns */ export function makeBearerTokenAuthHeader(token: AccessToken): string { return `Bearer secret-token:${token}`; } /** * https://bugs.gnunet.org/view.php?id=7949 */ export function addPaginationParams(url: URL, pagination?: PaginationParams) { if (!pagination) return; if (pagination.timoutMs) { url.searchParams.set("long_poll_ms", String(pagination.timoutMs)) } if (pagination.offset) { url.searchParams.set("start", pagination.offset) } if (pagination.limit) { url.searchParams.set("delta", String(pagination.limit)) } } export type UserAndPassword = { username: string, password: string, } export type UserAndToken = { username: string, token: AccessToken, } export type PaginationParams = { /** * row identifier as the starting point of the query */ offset?: string, /** * max number of element in the result response */ limit?: number, /** * milliseconds the server should wait for at least one result to be shown */ timoutMs?: number, }