Skip to content
This repository was archived by the owner on Dec 9, 2024. It is now read-only.

Commit bb69848

Browse files
committed
Migrated shared and services dirs
1 parent aacc505 commit bb69848

File tree

8 files changed

+203
-189
lines changed

8 files changed

+203
-189
lines changed

src/config.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module.exports = {
1+
export const constants = {
22
bearer: 'Bearer ',
33
functionAppApiPath: '/api/',
44
functionAppDomain: '.azurewebsites.net',
@@ -15,3 +15,5 @@ module.exports = {
1515
scmVfsPath: '/api/vfs/site/wwwroot/',
1616
scmZipApiPath: '/api/zip/site/wwwroot/'
1717
};
18+
19+
export default constants;

src/services/apimService.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,16 @@ import { BaseService } from './baseService';
77
* APIM Service handles deployment and integration with Azure API Management
88
*/
99
export class ApimService extends BaseService {
10+
private resourceId: string;
11+
private resourceClient: ResourceManagementClient;
12+
private apimClient: ApiManagementClient;
13+
private functionAppService: FunctionAppService;
14+
private config: any;
15+
1016
constructor(serverless, options) {
1117
super(serverless, options);
1218
this.resourceId = `/subscriptions/${this.subscriptionId}/resourceGroups/${this.resourceGroup}/providers/Microsoft.Web/sites/${this.serviceName}`;
13-
19+
this.config = this.serverless.service.provider.apim;
1420
this.resourceClient = new ResourceManagementClient(this.credentials, this.subscriptionId);
1521
this.apimClient = new ApiManagementClient(this.credentials, this.subscriptionId);
1622
this.functionAppService = new FunctionAppService(serverless, options);

src/services/baseService.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
import axios from 'axios';
22

3-
export class BaseService {
4-
constructor(serverless, options) {
5-
this.serverless = serverless;
6-
this.options = options;
7-
3+
export abstract class BaseService {
4+
protected baseUrl: string;
5+
protected serviceName: string;
6+
protected credentials: any;
7+
protected subscriptionId: string;
8+
protected resourceGroup: string;
9+
protected deploymentName: string;
10+
11+
constructor(protected serverless, protected options) {
812
this.baseUrl = 'https://management.azure.com';
913
this.serviceName = serverless.service.service;
1014
this.credentials = serverless.variables.azureCredentials;
@@ -13,7 +17,7 @@ export class BaseService {
1317
this.deploymentName = serverless.service.provider.deploymentName || `${this.resourceGroup}-deployment`;
1418
}
1519

16-
async sendApiRequest(method, relativeUrl, options = {}) {
20+
async sendApiRequest(method: string, relativeUrl: string, options: any = {}) {
1721
const defaultHeaders = {
1822
'Authorization': `Bearer ${this.credentials.tokenCache._entries[0].accessToken}`
1923
};
@@ -28,11 +32,11 @@ export class BaseService {
2832
return await axios(relativeUrl, requestOptions);
2933
}
3034

31-
_wait(timeout) {
35+
protected wait(timeout: number) {
3236
return new Promise((resolve) => setTimeout(resolve, timeout));
3337
}
3438

35-
_waitForCondition(predicate, interval = 2000) {
39+
protected waitForCondition(predicate: () => boolean, interval: number = 2000) {
3640
return new Promise((resolve, reject) => {
3741
let retries = 0;
3842
const id = setInterval(async () => {

src/services/functionAppService.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1-
import fs from 'fs';
2-
import path from 'path';
1+
import * as fs from 'fs';
2+
import * as path from 'path';
33
import request from 'request';
44
import jsonpath from 'jsonpath';
55
import _ from 'lodash';
66
import { ResourceManagementClient } from '@azure/arm-resources';
77
import { WebSiteManagementClient } from '@azure/arm-appservice';
88
import { BaseService } from './baseService';
9+
import { Deployment } from '@azure/arm-resources/esm/models';
910

1011
export class FunctionAppService extends BaseService {
12+
private resourceId: string;
13+
private resourceClient: ResourceManagementClient;
14+
private webClient: WebSiteManagementClient;
15+
1116
constructor(serverless, options) {
1217
super(serverless, options);
1318

@@ -17,7 +22,7 @@ export class FunctionAppService extends BaseService {
1722
}
1823

1924
async get() {
20-
const response = await this.webClient.webApps.get(this.resourceGroup, this.serviceName);
25+
const response: any = await this.webClient.webApps.get(this.resourceGroup, this.serviceName);
2126
if (response.error && (response.error.code === 'ResourceNotFound' || response.error.code === 'ResourceGroupNotFound')) {
2227
return null;
2328
}
@@ -111,7 +116,7 @@ export class FunctionAppService extends BaseService {
111116

112117
async deploy() {
113118
this.serverless.cli.log(`Creating function app: ${this.serviceName}`);
114-
let parameters = { functionAppName: { value: this.serviceName } };
119+
let parameters: any = { functionAppName: { value: this.serviceName } };
115120

116121
const gitUrl = this.serverless.service.provider.gitUrl;
117122

@@ -162,7 +167,7 @@ export class FunctionAppService extends BaseService {
162167
});
163168
}
164169

165-
const deploymentParameters = {
170+
const deploymentParameters: Deployment = {
166171
properties: {
167172
mode: 'Incremental',
168173
parameters,

src/services/resourceService.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { ResourceManagementClient } from '@azure/arm-resources';
22
import { BaseService } from './baseService';
33

44
export class ResourceService extends BaseService {
5+
private resourceClient: ResourceManagementClient;
6+
57
constructor(serverless, options) {
68
super(serverless, options);
79

src/shared/getAdminKey.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export const getAdminKey = () => {
1+
export function getAdminKey() {
22
return this.provider.getAdminKey();
33
}

src/shared/parseBindings.ts

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,37 +8,34 @@ const constants = {
88
type: 'type'
99
};
1010

11-
module.exports = {
12-
getBindingsMetaData(serverless) {
11+
export function getBindingsMetaData(serverless) {
12+
const bindingDisplayNames = [];
13+
const bindingTypes = [];
14+
const bindingSettings = [];
15+
const bindingSettingsNames = [];
1316

14-
const bindingDisplayNames = [];
15-
const bindingTypes = [];
16-
const bindingSettings = [];
17-
const bindingSettingsNames = [];
17+
serverless.cli.log('Parsing Azure Functions Bindings.json...');
1818

19-
serverless.cli.log('Parsing Azure Functions Bindings.json...');
19+
for (let bindingsIndex = 0; bindingsIndex < bindingsJson[constants.bindings].length; bindingsIndex++) {
20+
const settingsNames = [];
2021

21-
for (let bindingsIndex = 0; bindingsIndex < bindingsJson[constants.bindings].length; bindingsIndex++) {
22-
const settingsNames = [];
22+
bindingTypes.push(bindingsJson[constants.bindings][bindingsIndex][constants.type]);
23+
bindingDisplayNames.push(bindingsJson[constants.bindings][bindingsIndex][constants.displayName].toLowerCase());
24+
bindingSettings[bindingsIndex] = bindingsJson[constants.bindings][bindingsIndex][constants.settings];
2325

24-
bindingTypes.push(bindingsJson[constants.bindings][bindingsIndex][constants.type]);
25-
bindingDisplayNames.push(bindingsJson[constants.bindings][bindingsIndex][constants.displayName].toLowerCase());
26-
bindingSettings[bindingsIndex] = bindingsJson[constants.bindings][bindingsIndex][constants.settings];
27-
28-
for (let bindingSettingsIndex = 0; bindingSettingsIndex < bindingSettings[bindingsIndex].length; bindingSettingsIndex++) {
29-
settingsNames.push(bindingSettings[bindingsIndex][bindingSettingsIndex][constants.name]);
30-
}
31-
32-
bindingSettingsNames[bindingsIndex] = settingsNames;
26+
for (let bindingSettingsIndex = 0; bindingSettingsIndex < bindingSettings[bindingsIndex].length; bindingSettingsIndex++) {
27+
settingsNames.push(bindingSettings[bindingsIndex][bindingSettingsIndex][constants.name]);
3328
}
3429

35-
const parsedBindings = {
36-
bindingDisplayNames: bindingDisplayNames,
37-
bindingTypes: bindingTypes,
38-
bindingSettings: bindingSettings,
39-
bindingSettingsNames: bindingSettingsNames
40-
};
41-
42-
return parsedBindings;
30+
bindingSettingsNames[bindingsIndex] = settingsNames;
4331
}
44-
};
32+
33+
const parsedBindings = {
34+
bindingDisplayNames: bindingDisplayNames,
35+
bindingTypes: bindingTypes,
36+
bindingSettings: bindingSettings,
37+
bindingSettingsNames: bindingSettingsNames
38+
};
39+
40+
return parsedBindings;
41+
}

0 commit comments

Comments
 (0)