- @for (column of row.columns; track column) {
+ @for (column of row.columns; track column.id) {
@if (!editMode()) {
diff --git a/projects/aas-portal/src/app/dashboard/dashboard.component.ts b/projects/aas-portal/src/app/dashboard/dashboard.component.ts
index 8fc52450..571b2980 100644
--- a/projects/aas-portal/src/app/dashboard/dashboard.component.ts
+++ b/projects/aas-portal/src/app/dashboard/dashboard.component.ts
@@ -86,7 +86,6 @@ export class DashboardComponent implements OnInit, OnDestroy, AfterViewInit {
private readonly map = new Map
();
private readonly charts = new Map();
private webSocketSubject: WebSocketSubject | null = null;
- // private reset = false;
private selections = new Set();
private selectedSources = new Map();
diff --git a/projects/aas-portal/src/app/main/main.component.html b/projects/aas-portal/src/app/main/main.component.html
index 0067e6ca..b50be0c5 100644
--- a/projects/aas-portal/src/app/main/main.component.html
+++ b/projects/aas-portal/src/app/main/main.component.html
@@ -16,7 +16,7 @@
-
+
@for (link of links(); track link) {
-
{{link.name | translate}}
diff --git a/projects/aas-portal/src/app/main/main.component.ts b/projects/aas-portal/src/app/main/main.component.ts
index 1e4e139f..f5a720f3 100644
--- a/projects/aas-portal/src/app/main/main.component.ts
+++ b/projects/aas-portal/src/app/main/main.component.ts
@@ -6,8 +6,8 @@
*
*****************************************************************************/
-import { ChangeDetectionStrategy, Component, OnInit, TemplateRef, ViewChild, model, signal } from '@angular/core';
-import { Router, RouterLink, RouterOutlet } from '@angular/router';
+import { ChangeDetectionStrategy, Component, OnInit, TemplateRef, ViewChild, signal } from '@angular/core';
+import { ActivatedRoute, Router, RouterLink, RouterOutlet } from '@angular/router';
import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';
import { first } from 'rxjs';
import { AuthComponent, LocalizeComponent, NotifyComponent, WindowService } from 'aas-lib';
@@ -50,6 +50,7 @@ export interface LinkDescriptor {
})
export class MainComponent implements OnInit {
public constructor(
+ public readonly route: ActivatedRoute,
private readonly router: Router,
private readonly window: WindowService,
private readonly api: MainApiService,
@@ -61,8 +62,6 @@ export class MainComponent implements OnInit {
public readonly toolbarTemplate = this.toolbar.toolbarTemplate;
- public readonly activeId = model(LinkId.START);
-
public readonly links = signal([
{
id: LinkId.START,
diff --git a/projects/aas-server/src/app/aas-provider/aas-provider.ts b/projects/aas-server/src/app/aas-provider/aas-provider.ts
index fbc6e935..2f258dc0 100644
--- a/projects/aas-server/src/app/aas-provider/aas-provider.ts
+++ b/projects/aas-server/src/app/aas-provider/aas-provider.ts
@@ -86,7 +86,7 @@ export class AASProvider {
return this.index.getDocuments(cursor);
}
- public async getDocumentCountAsync(filter?: string): Promise {
+ public getDocumentCountAsync(filter?: string): Promise {
return this.index.getCount(filter);
}
diff --git a/projects/aas-server/src/app/controller/documents-controller.ts b/projects/aas-server/src/app/controller/documents-controller.ts
index 00ee6865..36c9e1fb 100644
--- a/projects/aas-server/src/app/controller/documents-controller.ts
+++ b/projects/aas-server/src/app/controller/documents-controller.ts
@@ -58,7 +58,7 @@ export class DocumentsController extends AASController {
@Get('count')
@Security('bearerAuth', ['guest'])
@OperationId('getDocumentCount')
- public async getDocumentCount(@Query() filter?: string): Promise {
+ public async getDocumentCount(@Query() filter?: string): Promise {
try {
this.logger.start('getDocuments');
if (filter) {
diff --git a/projects/aas-server/src/app/packages/aas-server/aas-api-client-v3.ts b/projects/aas-server/src/app/packages/aas-server/aas-api-client-v3.ts
index 1f599c8e..e0629162 100644
--- a/projects/aas-server/src/app/packages/aas-server/aas-api-client-v3.ts
+++ b/projects/aas-server/src/app/packages/aas-server/aas-api-client-v3.ts
@@ -74,21 +74,20 @@ export class AASApiClientV3 extends AASApiClient {
public readonly onlineReady = true;
public async getShellsAsync(): Promise {
- const pagedResult = await this.message.get>(this.resolve('/shells'));
-
- return pagedResult.result.map(shell => shell.id);
+ const result = await this.message.get>(this.resolve('shells'));
+ return result.result.map(shell => shell.id);
}
public async readEnvironmentAsync(id: string): Promise {
const aasId = encodeBase64Url(id);
- const shell = await this.message.get(this.resolve(`/shells/${aasId}`));
+ const shell = await this.message.get(this.resolve(`shells/${aasId}`));
const submodels: aas.Submodel[] = [];
if (shell.submodels) {
for (const reference of shell.submodels) {
const submodelId = encodeBase64Url(reference.keys[0].value);
try {
- submodels.push(await this.message.get(this.resolve(`/submodels/${submodelId}`)));
+ submodels.push(await this.message.get(this.resolve(`submodels/${submodelId}`)));
} catch (error) {
this.logger.error(`Unable to read Submodel "${reference.keys[0].value}": ${error?.message}`);
}
@@ -96,7 +95,7 @@ export class AASApiClientV3 extends AASApiClient {
}
const pagedResult = await this.message.get>(
- this.resolve(`/concept-descriptions`),
+ this.resolve(`concept-descriptions`),
);
const sourceEnv: aas.Environment = {
@@ -109,7 +108,7 @@ export class AASApiClientV3 extends AASApiClient {
}
public override getThumbnailAsync(id: string): Promise {
- return this.message.getResponse(this.resolve(`/shells/${encodeBase64Url(id)}/asset-information/thumbnail`));
+ return this.message.getResponse(this.resolve(`shells/${encodeBase64Url(id)}/asset-information/thumbnail`));
}
public async commitAsync(
@@ -160,7 +159,7 @@ export class AASApiClientV3 extends AASApiClient {
public async openFileAsync(_: aas.AssetAdministrationShell, file: aas.File): Promise {
const smId = encodeBase64Url(file.parent!.keys[0].value);
const path = getIdShortPath(file);
- const url = this.resolve(`/submodels/${smId}/submodel-elements/${path}/attachment`);
+ const url = this.resolve(`submodels/${smId}/submodel-elements/${path}/attachment`);
return await this.message.getResponse(url);
}
@@ -168,28 +167,28 @@ export class AASApiClientV3 extends AASApiClient {
const aasId = encodeBase64Url(shell.id);
const items = nodeId.split('.');
const path = items[1].split('/').slice(1).join('.');
- return this.resolve(`/shells/${aasId}/submodels/${items[0]}/submodel-elements/${path}`).href;
+ return this.resolve(`shells/${aasId}/submodels/${items[0]}/submodel-elements/${path}`).href;
}
public async getPackageAsync(aasIdentifier: string): Promise {
const aasId = encodeBase64Url(aasIdentifier);
- const descriptors: PackageDescriptor[] = await this.message.get(this.resolve(`/packages?aasId=${aasId}`));
+ const descriptors: PackageDescriptor[] = await this.message.get(this.resolve(`packages?aasId=${aasId}`));
const packageId = encodeBase64Url(descriptors[0].packageId);
- return await this.message.getResponse(this.resolve(`/packages/${packageId}`));
+ return await this.message.getResponse(this.resolve(`packages/${packageId}`));
}
public postPackageAsync(file: Express.Multer.File): Promise {
const formData = new FormData();
formData.append('file', createReadStream(file.path));
formData.append('fileName', file.filename);
- return this.message.post(this.resolve(`/packages`), formData);
+ return this.message.post(this.resolve(`packages`), formData);
}
public async deletePackageAsync(aasIdentifier: string): Promise {
const aasId = encodeBase64Url(aasIdentifier);
- const descriptors: PackageDescriptor[] = await this.message.get(this.resolve(`/packages?aasId=${aasId}`));
+ const descriptors: PackageDescriptor[] = await this.message.get(this.resolve(`packages?aasId=${aasId}`));
const packageId = encodeBase64Url(descriptors[0].packageId);
- return await this.message.delete(this.resolve(`/packages/${packageId}`));
+ return await this.message.delete(this.resolve(`packages/${packageId}`));
}
public async invoke(env: aas.Environment, operation: aas.Operation): Promise {
@@ -207,7 +206,7 @@ export class AASApiClientV3 extends AASApiClient {
const result: OperationResult = JSON.parse(
await this.message.post(
- this.resolve(`/shells/${aasId}/submodels/${smId}/submodel-elements/${path}/invoke`),
+ this.resolve(`shells/${aasId}/submodels/${smId}/submodel-elements/${path}/invoke`),
request,
),
);
@@ -229,7 +228,7 @@ export class AASApiClientV3 extends AASApiClient {
idShortPath: string,
): Promise {
const blob = await this.message.get(
- this.resolve(`/submodels/${submodelId}/submodel-elements/${idShortPath}/?extent=WithBlobValue`),
+ this.resolve(`submodels/${submodelId}/submodel-elements/${idShortPath}/?extent=WithBlobValue`),
);
if (!blob) {
@@ -241,26 +240,26 @@ export class AASApiClientV3 extends AASApiClient {
private async putShellAsync(shell: aas.AssetAdministrationShell): Promise {
const aasId = encodeBase64Url(shell.id);
- return await this.message.put(this.resolve(`/shells/${aasId}`), new JsonWriter().convert(shell));
+ return await this.message.put(this.resolve(`shells/${aasId}`), new JsonWriter().convert(shell));
}
private async putSubmodelAsync(aasId: string, submodel: aas.Submodel): Promise {
const smId = encodeBase64Url(submodel.id);
return await this.message.put(
- this.resolve(`/shells/${aasId}/submodels/${smId}`),
+ this.resolve(`shells/${aasId}/submodels/${smId}`),
new JsonWriter().convert(submodel),
);
}
private async postSubmodelAsync(aasId: string, submodel: aas.Submodel): Promise {
return await this.message.post(
- this.resolve(`/submodels?aasIdentifier=${aasId}`),
+ this.resolve(`submodels?aasIdentifier=${aasId}`),
new JsonWriter().convert(submodel),
);
}
private async deleteSubmodelAsync(smId: string): Promise {
- return await this.message.delete(this.resolve(`/submodels/${encodeBase64Url(smId)}`));
+ return await this.message.delete(this.resolve(`submodels/${encodeBase64Url(smId)}`));
}
private async putSubmodelElementAsync(
@@ -270,7 +269,7 @@ export class AASApiClientV3 extends AASApiClient {
const smId = encodeBase64Url(submodel.id);
const path = getIdShortPath(submodelElement);
return await this.message.put(
- this.resolve(`/submodels/${smId}/submodel-elements/${path}`),
+ this.resolve(`submodels/${smId}/submodel-elements/${path}`),
new JsonWriter().convert(submodelElement),
);
}
@@ -282,7 +281,7 @@ export class AASApiClientV3 extends AASApiClient {
const smId = encodeBase64Url(submodel.id);
const path = getIdShortPath(submodelElement);
return await this.message.post(
- this.resolve(`/submodels/${smId}/submodel-elements/${path}`),
+ this.resolve(`submodels/${smId}/submodel-elements/${path}`),
new JsonWriter().convert(submodelElement),
);
}
@@ -293,7 +292,7 @@ export class AASApiClientV3 extends AASApiClient {
): Promise {
const smId = encodeBase64Url(submodel.id);
const path = getIdShortPath(submodelElement);
- return await this.message.delete(this.resolve(`/submodels/${smId}/submodel-elements/${path}`));
+ return await this.message.delete(this.resolve(`submodels/${smId}/submodel-elements/${path}`));
}
private getSubmodel(env: aas.Environment, referable?: aas.Referable): aas.Submodel {
diff --git a/projects/aas-server/src/app/packages/aas-server/aas-api-client.ts b/projects/aas-server/src/app/packages/aas-server/aas-api-client.ts
index 8121c967..f8c8d7b5 100644
--- a/projects/aas-server/src/app/packages/aas-server/aas-api-client.ts
+++ b/projects/aas-server/src/app/packages/aas-server/aas-api-client.ts
@@ -39,11 +39,7 @@ export abstract class AASApiClient extends AASResource {
public async testAsync(): Promise {
if (this.reentry === 0) {
- try {
- await this.openAsync();
- } finally {
- await this.closeAsync();
- }
+ await this.message.checkUrlExist(this.url);
}
}
@@ -59,12 +55,9 @@ export abstract class AASApiClient extends AASResource {
*/
public abstract getThumbnailAsync(id: string): Promise;
- public async openAsync(): Promise {
- if (this.reentry === 0) {
- await this.message.checkUrlExist(this.url);
- }
-
+ public openAsync(): Promise {
++this.reentry;
+ return Promise.resolve();
}
public closeAsync(): Promise {
diff --git a/projects/aas-server/src/app/packages/server-message.ts b/projects/aas-server/src/app/packages/server-message.ts
index b22f590c..eb14ddc1 100644
--- a/projects/aas-server/src/app/packages/server-message.ts
+++ b/projects/aas-server/src/app/packages/server-message.ts
@@ -20,75 +20,6 @@ export class ServerMessage {
* @returns The requested object.
*/
public get(url: URL): Promise {
- return url.protocol === 'http:' ? this.getHttp(url) : this.getHttps(url);
- }
-
- /**
- * Gets the response of the request with the specified URL.
- * @param url The URL of the request.
- * @returns The request.
- */
- public getResponse(url: URL): Promise {
- return url.protocol === 'http:' ? this.getResponseHttp(url) : this.getResponseHttps(url);
- }
-
- /**
- * Updates the specified object.
- * @param url The destination URL.
- * @param obj The object to send.
- */
- public put(url: URL, obj: object): Promise {
- return url.protocol === 'http:' ? this.putHttp(url, obj) : this.putHttps(url, obj);
- }
-
- /**
- * Inserts the specified object.
- * @param url The destination URL.
- * @param obj The object to send.
- */
- public post(url: URL, obj: FormData | object): Promise {
- return obj instanceof FormData ? this.postFormData(url, obj) : this.postObject(url, obj);
- }
-
- /**
- * Deletes an object.
- * @param url The URL of the object to delete.
- */
- public delete(url: URL): Promise {
- return url.protocol === 'http:' ? this.deleteHttp(url) : this.deleteHttps(url);
- }
-
- /**
- * Checks the connection to resource with the specified URL.
- * @param url The current URL.
- */
- public async checkUrlExist(url: string): Promise {
- const temp = parseUrl(url);
- const exist = await new Promise(resolve => {
- const socket = net.createConnection(Number(temp.port), temp.hostname);
- socket.setTimeout(3000);
- socket.on('connect', () => {
- socket.end();
- resolve(true);
- });
-
- socket.on('timeout', () => {
- socket.destroy();
- resolve(false);
- });
-
- socket.on('error', () => {
- socket.destroy();
- resolve(false);
- });
- });
-
- if (!exist) {
- throw new Error(`${url} does not exist.`);
- }
- }
-
- private getHttp(url: URL): Promise {
return new Promise((result, reject) => {
const options: http.RequestOptions = {
host: url.hostname,
@@ -98,7 +29,8 @@ export class ServerMessage {
timeout: 3000,
};
- const request = http.request(options, response => {
+ const requester = url.protocol === 'https:' ? https.request : http.request;
+ const request = requester(options, response => {
let data = '';
response.on('data', (chunk: string) => {
data += chunk;
@@ -123,42 +55,12 @@ export class ServerMessage {
});
}
- private getHttps(url: URL): Promise {
- return new Promise((result, reject) => {
- const options: https.RequestOptions = {
- host: url.hostname,
- port: url.port,
- path: url.pathname + url.search,
- method: 'GET',
- timeout: 3000,
- };
-
- const request = http.request(options, response => {
- let data = '';
- response.on('data', (chunk: string) => {
- data += chunk;
- });
-
- response.on('end', () => {
- try {
- ServerMessage.checkStatusCode(response, data);
- result(JSON.parse(data));
- } catch (error) {
- reject(error);
- }
- });
-
- response.on('error', error => reject(error));
- });
-
- request
- .on('timeout', () => request.destroy())
- .on('error', error => reject(error))
- .end();
- });
- }
-
- private getResponseHttp(url: URL): Promise {
+ /**
+ * Gets the response of the request with the specified URL.
+ * @param url The URL of the request.
+ * @returns The request.
+ */
+ public getResponse(url: URL): Promise {
return new Promise((result, reject) => {
const options: http.RequestOptions = {
host: url.hostname,
@@ -168,7 +70,8 @@ export class ServerMessage {
timeout: 3000,
};
- const request = http.request(options, response => result(response));
+ const requester = url.protocol === 'https:' ? https.request : http.request;
+ const request = requester(options, response => result(response));
request
.on('timeout', () => request.destroy())
.on('error', error => reject(error))
@@ -176,25 +79,12 @@ export class ServerMessage {
});
}
- private getResponseHttps(url: URL): Promise {
- return new Promise((result, reject) => {
- const options: https.RequestOptions = {
- host: url.hostname,
- port: url.port,
- path: url.pathname + url.search,
- method: 'GET',
- timeout: 3000,
- };
-
- const request = https.request(options, response => result(response));
- request
- .on('timeout', () => request.destroy())
- .on('error', error => reject(error))
- .end();
- });
- }
-
- private putHttp(url: URL, obj: object): Promise {
+ /**
+ * Updates the specified object.
+ * @param url The destination URL.
+ * @param obj The object to send.
+ */
+ public put(url: URL, obj: object): Promise {
return new Promise((result, reject) => {
const data = JSON.stringify(obj);
const options: http.RequestOptions = {
@@ -208,171 +98,131 @@ export class ServerMessage {
},
};
- const request = http
- .request(options, response => {
- let responseData = '';
- response.on('data', (chunk: string) => {
- responseData += chunk;
- });
-
- response.on('end', () => {
- try {
- ServerMessage.checkStatusCode(response, responseData);
- result(responseData);
- } catch (error) {
- reject(error);
- }
- });
-
- response.on('error', error => reject(error));
- })
- .on('error', error => reject(error));
-
- request.write(data);
- request.end();
- });
- }
+ const requester = url.protocol === 'https:' ? https.request : http.request;
+ const request = requester(options, response => {
+ let responseData = '';
+ response.on('data', (chunk: string) => {
+ responseData += chunk;
+ });
- private putHttps(url: URL, obj: object): Promise {
- return new Promise((result, reject) => {
- const data = JSON.stringify(obj);
- const options: https.RequestOptions = {
- hostname: url.hostname,
- port: url.port,
- path: url.pathname + url.search,
- method: 'PUT',
- headers: {
- 'Content-Type': 'application/json',
- 'Content-Length': Buffer.byteLength(data),
- },
- };
+ response.on('end', () => {
+ try {
+ ServerMessage.checkStatusCode(response, responseData);
+ result(responseData);
+ } catch (error) {
+ reject(error);
+ }
+ });
- const request = https
- .request(options, response => {
- let responseData = '';
- response.on('data', (chunk: string) => {
- responseData += chunk;
- });
-
- response.on('end', () => {
- try {
- ServerMessage.checkStatusCode(response, responseData);
- result(responseData);
- } catch (error) {
- reject(error);
- }
- });
-
- response.on('error', error => reject(error));
- })
- .on('error', error => reject(error));
+ response.on('error', error => reject(error));
+ }).on('error', error => reject(error));
request.write(data);
request.end();
});
}
- private postObject(url: URL, obj: object): Promise {
- return url.protocol === 'http:' ? this.postObjectHttp(url, obj) : this.postObjectHttps(url, obj);
+ /**
+ * Inserts the specified object.
+ * @param url The destination URL.
+ * @param obj The object to send.
+ */
+ public post(url: URL, obj: FormData | object): Promise {
+ return obj instanceof FormData ? this.postFormData(url, obj) : this.postObject(url, obj);
}
- private postObjectHttp(url: URL, obj: object): Promise {
+ /**
+ * Deletes an object.
+ * @param url The URL of the object to delete.
+ */
+ public delete(url: URL): Promise {
return new Promise((result, reject) => {
- const data = JSON.stringify(obj);
- const options: http.RequestOptions = {
+ const options: https.RequestOptions = {
hostname: url.hostname,
port: url.port,
path: url.pathname + url.search,
- method: 'POST',
+ method: 'DELETE',
headers: {
'Content-Type': 'application/json',
- 'Content-Length': Buffer.byteLength(data),
},
};
- const request = http
- .request(options, response => {
- let responseData = '';
- response.on('data', (chunk: string) => {
- responseData += chunk;
- });
-
- response.on('end', () => {
- try {
- ServerMessage.checkStatusCode(response, responseData);
- result(responseData);
- } catch (error) {
- reject(error);
- }
- });
-
- response.on('error', error => reject(error));
- })
- .on('error', error => reject(error));
+ const requester = url.protocol === 'https:' ? https.request : http.request;
+ requester(options, response => {
+ let responseData = '';
+ response.on('data', (chunk: string) => {
+ responseData += chunk;
+ });
- request.write(data);
- request.end();
+ response.on('end', function () {
+ try {
+ ServerMessage.checkStatusCode(response, responseData);
+ result(responseData);
+ } catch (error) {
+ reject(error);
+ }
+ });
+
+ response.on('error', error => reject(error));
+ })
+ .on('error', error => reject(error))
+ .end();
});
}
- private postObjectHttps(url: URL, obj: object): Promise {
- return new Promise((result, reject) => {
- const data = JSON.stringify(obj);
- const options: https.RequestOptions = {
- hostname: url.hostname,
- port: url.port,
- path: url.pathname + url.search,
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- 'Content-Length': Buffer.byteLength(data),
- },
- };
+ /**
+ * Checks the connection to resource with the specified URL.
+ * @param url The current URL.
+ */
+ public checkUrlExist(url: string): Promise {
+ return new Promise((resolve, reject) => {
+ const temp = parseUrl(url);
+ const port = Number(temp.port ? temp.port : temp.protocol === 'http:' ? 80 : 443);
+ const socket = net.createConnection(port, temp.hostname);
+ socket.setTimeout(3000);
+ socket.on('connect', () => {
+ socket.end();
+ });
- const request = https
- .request(options, response => {
- let responseData = '';
- response.on('data', (chunk: string) => {
- responseData += chunk;
- });
-
- response.on('end', () => {
- try {
- ServerMessage.checkStatusCode(response, responseData);
- result(responseData);
- } catch (error) {
- reject(error);
- }
- });
-
- response.on('error', error => reject(error));
- })
- .on('error', error => reject(error));
+ socket.on('end', () => {
+ socket.destroy();
+ resolve();
+ });
- request.write(data);
- request.end();
+ socket.on('timeout', () => {
+ socket.destroy();
+ reject(new Error(`${url} does not exist.`));
+ });
+
+ socket.on('error', () => {
+ socket.destroy();
+ reject(new Error(`${url} does not exist.`));
+ });
});
}
- private deleteHttp(url: URL): Promise {
+ private postObject(url: URL, obj: object): Promise {
return new Promise((result, reject) => {
+ const data = JSON.stringify(obj);
const options: http.RequestOptions = {
hostname: url.hostname,
port: url.port,
path: url.pathname + url.search,
- method: 'DELETE',
+ method: 'POST',
headers: {
'Content-Type': 'application/json',
+ 'Content-Length': Buffer.byteLength(data),
},
};
- http.request(options, response => {
+ const requester = url.protocol === 'https:' ? https.request : http.request;
+ const request = requester(options, response => {
let responseData = '';
response.on('data', (chunk: string) => {
responseData += chunk;
});
- response.on('end', function () {
+ response.on('end', () => {
try {
ServerMessage.checkStatusCode(response, responseData);
result(responseData);
@@ -382,52 +232,14 @@ export class ServerMessage {
});
response.on('error', error => reject(error));
- })
- .on('error', error => reject(error))
- .end();
- });
- }
+ }).on('error', error => reject(error));
- private deleteHttps(url: URL): Promise {
- return new Promise((result, reject) => {
- const options: https.RequestOptions = {
- hostname: url.hostname,
- port: url.port,
- path: url.pathname + url.search,
- method: 'DELETE',
- headers: {
- 'Content-Type': 'application/json',
- },
- };
-
- https
- .request(options, response => {
- let responseData = '';
- response.on('data', (chunk: string) => {
- responseData += chunk;
- });
-
- response.on('end', function () {
- try {
- ServerMessage.checkStatusCode(response, responseData);
- result(responseData);
- } catch (error) {
- reject(error);
- }
- });
-
- response.on('error', error => reject(error));
- })
- .on('error', error => reject(error))
- .end();
+ request.write(data);
+ request.end();
});
}
private postFormData(url: URL, formData: FormData): Promise {
- return url.protocol === 'http:' ? this.postFormDataHttp(url, formData) : this.postFormDataHttps(url, formData);
- }
-
- private postFormDataHttp(url: URL, formData: FormData): Promise {
return new Promise((result, reject) => {
const options: http.RequestOptions = {
hostname: url.hostname,
@@ -437,59 +249,24 @@ export class ServerMessage {
headers: formData.getHeaders(),
};
- const request = http
- .request(options, response => {
- let responseData = '';
- response.on('data', (chunk: string) => {
- responseData += chunk;
- });
-
- response.on('end', function () {
- try {
- ServerMessage.checkStatusCode(response, responseData);
- result(responseData);
- } catch (error) {
- reject(error);
- }
- });
-
- response.on('error', error => reject(error));
- })
- .on('error', error => reject(error));
-
- formData.pipe(request);
- });
- }
+ const requester = url.protocol === 'https:' ? https.request : http.request;
+ const request = requester(options, response => {
+ let responseData = '';
+ response.on('data', (chunk: string) => {
+ responseData += chunk;
+ });
- private postFormDataHttps(url: URL, formData: FormData): Promise {
- return new Promise((result, reject) => {
- const options: https.RequestOptions = {
- hostname: url.hostname,
- port: url.port,
- path: url.pathname + url.search,
- method: 'POST',
- headers: formData.getHeaders(),
- };
+ response.on('end', function () {
+ try {
+ ServerMessage.checkStatusCode(response, responseData);
+ result(responseData);
+ } catch (error) {
+ reject(error);
+ }
+ });
- const request = https
- .request(options, response => {
- let responseData = '';
- response.on('data', (chunk: string) => {
- responseData += chunk;
- });
-
- response.on('end', function () {
- try {
- ServerMessage.checkStatusCode(response, responseData);
- result(responseData);
- } catch (error) {
- reject(error);
- }
- });
-
- response.on('error', error => reject(error));
- })
- .on('error', error => reject(error));
+ response.on('error', error => reject(error));
+ }).on('error', error => reject(error));
formData.pipe(request);
});