UNPKG

2.85 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 declare type SignerGetSignedUrlResponse = string;
44export declare type GetSignedUrlResponse = [SignerGetSignedUrlResponse];
45export interface GetSignedUrlCallback {
46 (err: Error | null, url?: string): void;
47}
48/**
49 * @const {string}
50 * @private
51 */
52export declare const PATH_STYLED_HOST = "https://storage.googleapis.com";
53export declare class URLSigner {
54 private authClient;
55 private bucket;
56 private file?;
57 constructor(authClient: AuthClient, bucket: BucketI, file?: FileI);
58 getSignedUrl(cfg: SignerGetSignedUrlConfig): Promise<SignerGetSignedUrlResponse>;
59 private getSignedUrlV2;
60 private getSignedUrlV4;
61 /**
62 * Create canonical headers for signing v4 url.
63 *
64 * The canonical headers for v4-signing a request demands header names are
65 * first lowercased, followed by sorting the header names.
66 * Then, construct the canonical headers part of the request:
67 * <lowercasedHeaderName> + ":" + Trim(<value>) + "\n"
68 * ..
69 * <lowercasedHeaderName> + ":" + Trim(<value>) + "\n"
70 *
71 * @param headers
72 * @private
73 */
74 getCanonicalHeaders(headers: http.OutgoingHttpHeaders): string;
75 getCanonicalRequest(method: string, path: string, query: string, headers: string, signedHeaders: string, contentSha256?: string): string;
76 getCanonicalQueryParams(query: Query): string;
77 getResourcePath(cname: boolean, bucket: string, file?: string): string;
78 parseExpires(expires: string | number | Date, current?: Date): number;
79 parseAccessibleAt(accessibleAt?: string | number | Date): number;
80}
81/**
82 * Custom error type for errors related to getting signed errors and policies.
83 *
84 * @private
85 */
86export declare class SigningError extends Error {
87 name: string;
88}
89export {};