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 | resolve(headers);
|
59 | });
|
60 | });
|
61 | }
|
62 | getHeaders.then((headers) => {
|
63 | const metadata = new metadata_1.Metadata();
|
64 | for (const key of Object.keys(headers)) {
|
65 | metadata.add(key, headers[key]);
|
66 | }
|
67 | callback(null, metadata);
|
68 | }, (err) => {
|
69 | callback(err);
|
70 | });
|
71 | });
|
72 | }
|
73 | static createEmpty() {
|
74 | return new EmptyCallCredentials();
|
75 | }
|
76 | }
|
77 | exports.CallCredentials = CallCredentials;
|
78 | class ComposedCallCredentials extends CallCredentials {
|
79 | constructor(creds) {
|
80 | super();
|
81 | this.creds = creds;
|
82 | }
|
83 | async generateMetadata(options) {
|
84 | const base = new metadata_1.Metadata();
|
85 | const generated = await Promise.all(this.creds.map((cred) => cred.generateMetadata(options)));
|
86 | for (const gen of generated) {
|
87 | base.merge(gen);
|
88 | }
|
89 | return base;
|
90 | }
|
91 | compose(other) {
|
92 | return new ComposedCallCredentials(this.creds.concat([other]));
|
93 | }
|
94 | _equals(other) {
|
95 | if (this === other) {
|
96 | return true;
|
97 | }
|
98 | if (other instanceof ComposedCallCredentials) {
|
99 | return this.creds.every((value, index) => value._equals(other.creds[index]));
|
100 | }
|
101 | else {
|
102 | return false;
|
103 | }
|
104 | }
|
105 | }
|
106 | class SingleCallCredentials extends CallCredentials {
|
107 | constructor(metadataGenerator) {
|
108 | super();
|
109 | this.metadataGenerator = metadataGenerator;
|
110 | }
|
111 | generateMetadata(options) {
|
112 | return new Promise((resolve, reject) => {
|
113 | this.metadataGenerator(options, (err, metadata) => {
|
114 | if (metadata !== undefined) {
|
115 | resolve(metadata);
|
116 | }
|
117 | else {
|
118 | reject(err);
|
119 | }
|
120 | });
|
121 | });
|
122 | }
|
123 | compose(other) {
|
124 | return new ComposedCallCredentials([this, other]);
|
125 | }
|
126 | _equals(other) {
|
127 | if (this === other) {
|
128 | return true;
|
129 | }
|
130 | if (other instanceof SingleCallCredentials) {
|
131 | return this.metadataGenerator === other.metadataGenerator;
|
132 | }
|
133 | else {
|
134 | return false;
|
135 | }
|
136 | }
|
137 | }
|
138 | class EmptyCallCredentials extends CallCredentials {
|
139 | generateMetadata(options) {
|
140 | return Promise.resolve(new metadata_1.Metadata());
|
141 | }
|
142 | compose(other) {
|
143 | return other;
|
144 | }
|
145 | _equals(other) {
|
146 | return other instanceof EmptyCallCredentials;
|
147 | }
|
148 | }
|
149 |
|
\ | No newline at end of file |