UNPKG

3.15 kBTypeScriptView Raw
1/// <reference types="node" />
2import * as http from 'http';
3interface GetCredentialsResponse {
4 client_email?: string;
5}
6export interface AuthClient {
7 sign(blobToSign: string): Promise<string>;
8 getCredentials(): Promise<GetCredentialsResponse>;
9}
10export interface BucketI {
11 name: string;
12}
13export interface FileI {
14 name: string;
15}
16export interface Query {
17 [key: string]: string;
18}
19export interface GetSignedUrlConfigInternal {
20 expiration: number;
21 accessibleAt?: Date;
22 method: string;
23 extensionHeaders?: http.OutgoingHttpHeaders;
24 queryParams?: Query;
25 cname?: string;
26 contentMd5?: string;
27 contentType?: string;
28 bucket: string;
29 file?: string;
30}
31export interface SignerGetSignedUrlConfig {
32 method: 'GET' | 'PUT' | 'DELETE' | 'POST';
33 expires: string | number | Date;
34 accessibleAt?: string | number | Date;
35 virtualHostedStyle?: boolean;
36 version?: 'v2' | 'v4';
37 cname?: string;
38 extensionHeaders?: http.OutgoingHttpHeaders;
39 queryParams?: Query;
40 contentMd5?: string;
41 contentType?: string;
42}
43export type SignerGetSignedUrlResponse = string;
44export type GetSignedUrlResponse = [SignerGetSignedUrlResponse];
45export interface GetSignedUrlCallback {
46 (err: Error | null, url?: string): void;
47}
48export declare enum SignerExceptionMessages {
49 ACCESSIBLE_DATE_INVALID = "The accessible at date provided was invalid.",
50 EXPIRATION_BEFORE_ACCESSIBLE_DATE = "An expiration date cannot be before accessible date.",
51 X_GOOG_CONTENT_SHA256 = "The header X-Goog-Content-SHA256 must be a hexadecimal string."
52}
53/**
54 * @const {string}
55 * @private
56 */
57export declare const PATH_STYLED_HOST = "https://storage.googleapis.com";
58export declare class URLSigner {
59 private authClient;
60 private bucket;
61 private file?;
62 constructor(authClient: AuthClient, bucket: BucketI, file?: FileI);
63 getSignedUrl(cfg: SignerGetSignedUrlConfig): Promise<SignerGetSignedUrlResponse>;
64 private getSignedUrlV2;
65 private getSignedUrlV4;
66 /**
67 * Create canonical headers for signing v4 url.
68 *
69 * The canonical headers for v4-signing a request demands header names are
70 * first lowercased, followed by sorting the header names.
71 * Then, construct the canonical headers part of the request:
72 * <lowercasedHeaderName> + ":" + Trim(<value>) + "\n"
73 * ..
74 * <lowercasedHeaderName> + ":" + Trim(<value>) + "\n"
75 *
76 * @param headers
77 * @private
78 */
79 getCanonicalHeaders(headers: http.OutgoingHttpHeaders): string;
80 getCanonicalRequest(method: string, path: string, query: string, headers: string, signedHeaders: string, contentSha256?: string): string;
81 getCanonicalQueryParams(query: Query): string;
82 getResourcePath(cname: boolean, bucket: string, file?: string): string;
83 parseExpires(expires: string | number | Date, current?: Date): number;
84 parseAccessibleAt(accessibleAt?: string | number | Date): number;
85}
86/**
87 * Custom error type for errors related to getting signed errors and policies.
88 *
89 * @private
90 */
91export declare class SigningError extends Error {
92 name: string;
93}
94export {};