Skip to content

Commit 1eb33e2

Browse files
committed
refactor(remote-config): extract shared helpers getTemplateInternal, rollbackInternal, and listVersionsInternal
1 parent a40f7b3 commit 1eb33e2

1 file changed

Lines changed: 54 additions & 104 deletions

File tree

src/remote-config/remote-config-api-client-internal.ts

Lines changed: 54 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -68,41 +68,11 @@ export class RemoteConfigApiClient {
6868
}
6969

7070
public getTemplate(): Promise<RemoteConfigTemplate> {
71-
return this.getUrl()
72-
.then((url) => {
73-
const request: HttpRequestConfig = {
74-
method: 'GET',
75-
url: `${url}/remoteConfig`,
76-
headers: FIREBASE_REMOTE_CONFIG_HEADERS
77-
};
78-
return this.httpClient.send(request);
79-
})
80-
.then((resp) => {
81-
return this.toRemoteConfigTemplate(resp);
82-
})
83-
.catch((err) => {
84-
throw this.toFirebaseError(err);
85-
});
71+
return this.getTemplateInternal('remoteConfig');
8672
}
8773

8874
public getTemplateAtVersion(versionNumber: number | string): Promise<RemoteConfigTemplate> {
89-
const data = { versionNumber: this.validateVersionNumber(versionNumber) };
90-
return this.getUrl()
91-
.then((url) => {
92-
const request: HttpRequestConfig = {
93-
method: 'GET',
94-
url: `${url}/remoteConfig`,
95-
headers: FIREBASE_REMOTE_CONFIG_HEADERS,
96-
data
97-
};
98-
return this.httpClient.send(request);
99-
})
100-
.then((resp) => {
101-
return this.toRemoteConfigTemplate(resp);
102-
})
103-
.catch((err) => {
104-
throw this.toFirebaseError(err);
105-
});
75+
return this.getTemplateInternal('remoteConfig', versionNumber);
10676
}
10777

10878
public validateTemplate(template: RemoteConfigTemplate): Promise<RemoteConfigTemplate> {
@@ -120,7 +90,10 @@ export class RemoteConfigApiClient {
12090
});
12191
}
12292

123-
public publishTemplate(template: RemoteConfigTemplate, options?: { force: boolean; }): Promise<RemoteConfigTemplate> {
93+
public publishTemplate(
94+
template: RemoteConfigTemplate,
95+
options?: { force: boolean; }
96+
): Promise<RemoteConfigTemplate> {
12497
template = this.validateInputRemoteConfigTemplate(template);
12598
let ifMatch: string = template.etag;
12699
if (options && options.force === true) {
@@ -138,45 +111,11 @@ export class RemoteConfigApiClient {
138111
}
139112

140113
public rollback(versionNumber: number | string): Promise<RemoteConfigTemplate> {
141-
const data = { versionNumber: this.validateVersionNumber(versionNumber) };
142-
return this.getUrl()
143-
.then((url) => {
144-
const request: HttpRequestConfig = {
145-
method: 'POST',
146-
url: `${url}/remoteConfig:rollback`,
147-
headers: FIREBASE_REMOTE_CONFIG_HEADERS,
148-
data
149-
};
150-
return this.httpClient.send(request);
151-
})
152-
.then((resp) => {
153-
return this.toRemoteConfigTemplate(resp);
154-
})
155-
.catch((err) => {
156-
throw this.toFirebaseError(err);
157-
});
114+
return this.rollbackInternal('remoteConfig:rollback', versionNumber);
158115
}
159116

160117
public listVersions(options?: ListVersionsOptions): Promise<ListVersionsResult> {
161-
if (typeof options !== 'undefined') {
162-
options = this.validateListVersionsOptions(options);
163-
}
164-
return this.getUrl()
165-
.then((url) => {
166-
const request: HttpRequestConfig = {
167-
method: 'GET',
168-
url: `${url}/remoteConfig:listVersions`,
169-
headers: FIREBASE_REMOTE_CONFIG_HEADERS,
170-
data: options
171-
};
172-
return this.httpClient.send(request);
173-
})
174-
.then((resp) => {
175-
return resp.data;
176-
})
177-
.catch((err) => {
178-
throw this.toFirebaseError(err);
179-
});
118+
return this.listVersionsInternal('remoteConfig:listVersions', options);
180119
}
181120

182121
public getServerTemplate(): Promise<ServerTemplateData> {
@@ -198,41 +137,11 @@ export class RemoteConfigApiClient {
198137
}
199138

200139
public getServerConfigTemplate(): Promise<RemoteConfigTemplate> {
201-
return this.getUrl()
202-
.then((url) => {
203-
const request: HttpRequestConfig = {
204-
method: 'GET',
205-
url: `${url}/namespaces/firebase-server/remoteConfig`,
206-
headers: FIREBASE_REMOTE_CONFIG_HEADERS
207-
};
208-
return this.httpClient.send(request);
209-
})
210-
.then((resp) => {
211-
return this.toRemoteConfigTemplate(resp);
212-
})
213-
.catch((err) => {
214-
throw this.toFirebaseError(err);
215-
});
140+
return this.getTemplateInternal('namespaces/firebase-server/remoteConfig');
216141
}
217142

218143
public getServerConfigTemplateAtVersion(versionNumber: number | string): Promise<RemoteConfigTemplate> {
219-
const data = { versionNumber: this.validateVersionNumber(versionNumber) };
220-
return this.getUrl()
221-
.then((url) => {
222-
const request: HttpRequestConfig = {
223-
method: 'GET',
224-
url: `${url}/namespaces/firebase-server/remoteConfig`,
225-
headers: FIREBASE_REMOTE_CONFIG_HEADERS,
226-
data
227-
};
228-
return this.httpClient.send(request);
229-
})
230-
.then((resp) => {
231-
return this.toRemoteConfigTemplate(resp);
232-
})
233-
.catch((err) => {
234-
throw this.toFirebaseError(err);
235-
});
144+
return this.getTemplateInternal('namespaces/firebase-server/remoteConfig', versionNumber);
236145
}
237146

238147
public validateServerConfigTemplate(template: RemoteConfigTemplate): Promise<RemoteConfigTemplate> {
@@ -266,12 +175,50 @@ export class RemoteConfigApiClient {
266175
}
267176

268177
public rollbackServerConfigTemplate(versionNumber: number | string): Promise<RemoteConfigTemplate> {
178+
return this.rollbackInternal('namespaces/firebase-server/remoteConfig:rollback', versionNumber);
179+
}
180+
181+
public listServerConfigVersions(options?: ListVersionsOptions): Promise<ListVersionsResult> {
182+
return this.listVersionsInternal('namespaces/firebase-server/remoteConfig:listVersions', options);
183+
}
184+
185+
private getTemplateInternal(
186+
path: string,
187+
versionNumber?: number | string
188+
): Promise<RemoteConfigTemplate> {
189+
const data = typeof versionNumber !== 'undefined'
190+
? { versionNumber: this.validateVersionNumber(versionNumber) }
191+
: undefined;
192+
return this.getUrl()
193+
.then((url) => {
194+
const request: HttpRequestConfig = {
195+
method: 'GET',
196+
url: `${url}/${path}`,
197+
headers: FIREBASE_REMOTE_CONFIG_HEADERS
198+
};
199+
if (typeof data !== 'undefined') {
200+
request.data = data;
201+
}
202+
return this.httpClient.send(request);
203+
})
204+
.then((resp) => {
205+
return this.toRemoteConfigTemplate(resp);
206+
})
207+
.catch((err) => {
208+
throw this.toFirebaseError(err);
209+
});
210+
}
211+
212+
private rollbackInternal(
213+
path: string,
214+
versionNumber: number | string
215+
): Promise<RemoteConfigTemplate> {
269216
const data = { versionNumber: this.validateVersionNumber(versionNumber) };
270217
return this.getUrl()
271218
.then((url) => {
272219
const request: HttpRequestConfig = {
273220
method: 'POST',
274-
url: `${url}/namespaces/firebase-server/remoteConfig:rollback`,
221+
url: `${url}/${path}`,
275222
headers: FIREBASE_REMOTE_CONFIG_HEADERS,
276223
data
277224
};
@@ -285,15 +232,18 @@ export class RemoteConfigApiClient {
285232
});
286233
}
287234

288-
public listServerConfigVersions(options?: ListVersionsOptions): Promise<ListVersionsResult> {
235+
private listVersionsInternal(
236+
path: string,
237+
options?: ListVersionsOptions
238+
): Promise<ListVersionsResult> {
289239
if (typeof options !== 'undefined') {
290240
options = this.validateListVersionsOptions(options);
291241
}
292242
return this.getUrl()
293243
.then((url) => {
294244
const request: HttpRequestConfig = {
295245
method: 'GET',
296-
url: `${url}/namespaces/firebase-server/remoteConfig:listVersions`,
246+
url: `${url}/${path}`,
297247
headers: FIREBASE_REMOTE_CONFIG_HEADERS,
298248
data: options
299249
};

0 commit comments

Comments
 (0)