1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | Object.defineProperty(exports, "__esModule", { value: true });
|
19 | exports.CallCredentials = void 0;
|
20 | const metadata_1 = require("./metadata");
|
21 | function isCurrentOauth2Client(client) {
|
22 | return ('getRequestHeaders' in client &&
|
23 | typeof client.getRequestHeaders === 'function');
|
24 | }
|
25 |
|
26 |
|
27 |
|
28 |
|
29 | class CallCredentials {
|
30 | |
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 | static createFromMetadataGenerator(metadataGenerator) {
|
38 | return new SingleCallCredentials(metadataGenerator);
|
39 | }
|
40 | |
41 |
|
42 |
|
43 |
|
44 |
|
45 | static createFromGoogleCredential(googleCredentials) {
|
46 | return CallCredentials.createFromMetadataGenerator((options, callback) => {
|
47 | let getHeaders;
|
48 | if (isCurrentOauth2Client(googleCredentials)) {
|
49 | getHeaders = googleCredentials.getRequestHeaders(options.service_url);
|
50 | }
|
51 | else {
|
52 | getHeaders = new Promise((resolve, reject) => {
|
53 | googleCredentials.getRequestMetadata(options.service_url, (err, headers) => {
|
54 | if (err) {
|
55 | reject(err);
|
56 | return;
|
57 | }
|
58 | if (!headers) {
|
59 | reject(new Error('Headers not set by metadata plugin'));
|
60 | return;
|
61 | }
|
62 | resolve(headers);
|
63 | });
|
64 | });
|
65 | }
|
66 | getHeaders.then((headers) => {
|
67 | const metadata = new metadata_1.Metadata();
|
68 | for (const key of Object.keys(headers)) {
|
69 | metadata.add(key, headers[key]);
|
70 | }
|
71 | callback(null, metadata);
|
72 | }, (err) => {
|
73 | callback(err);
|
74 | });
|
75 | });
|
76 | }
|
77 | static createEmpty() {
|
78 | return new EmptyCallCredentials();
|
79 | }
|
80 | }
|
81 | exports.CallCredentials = CallCredentials;
|
82 | class ComposedCallCredentials extends CallCredentials {
|
83 | constructor(creds) {
|
84 | super();
|
85 | this.creds = creds;
|
86 | }
|
87 | async generateMetadata(options) {
|
88 | const base = new metadata_1.Metadata();
|
89 | const generated = await Promise.all(this.creds.map((cred) => cred.generateMetadata(options)));
|
90 | for (const gen of generated) {
|
91 | base.merge(gen);
|
92 | }
|
93 | return base;
|
94 | }
|
95 | compose(other) {
|
96 | return new ComposedCallCredentials(this.creds.concat([other]));
|
97 | }
|
98 | _equals(other) {
|
99 | if (this === other) {
|
100 | return true;
|
101 | }
|
102 | if (other instanceof ComposedCallCredentials) {
|
103 | return this.creds.every((value, index) => value._equals(other.creds[index]));
|
104 | }
|
105 | else {
|
106 | return false;
|
107 | }
|
108 | }
|
109 | }
|
110 | class SingleCallCredentials extends CallCredentials {
|
111 | constructor(metadataGenerator) {
|
112 | super();
|
113 | this.metadataGenerator = metadataGenerator;
|
114 | }
|
115 | generateMetadata(options) {
|
116 | return new Promise((resolve, reject) => {
|
117 | this.metadataGenerator(options, (err, metadata) => {
|
118 | if (metadata !== undefined) {
|
119 | resolve(metadata);
|
120 | }
|
121 | else {
|
122 | reject(err);
|
123 | }
|
124 | });
|
125 | });
|
126 | }
|
127 | compose(other) {
|
128 | return new ComposedCallCredentials([this, other]);
|
129 | }
|
130 | _equals(other) {
|
131 | if (this === other) {
|
132 | return true;
|
133 | }
|
134 | if (other instanceof SingleCallCredentials) {
|
135 | return this.metadataGenerator === other.metadataGenerator;
|
136 | }
|
137 | else {
|
138 | return false;
|
139 | }
|
140 | }
|
141 | }
|
142 | class EmptyCallCredentials extends CallCredentials {
|
143 | generateMetadata(options) {
|
144 | return Promise.resolve(new metadata_1.Metadata());
|
145 | }
|
146 | compose(other) {
|
147 | return other;
|
148 | }
|
149 | _equals(other) {
|
150 | return other instanceof EmptyCallCredentials;
|
151 | }
|
152 | }
|
153 |
|
\ | No newline at end of file |