apim-developer-portal4
Version:
API management developer portal
72 lines (62 loc) • 2.76 kB
text/typescript
import * as path from "path";
import * as fs from "fs";
import { AzureBlobStorage } from "@paperbits/azure";
import { InversifyInjector } from "@paperbits/common/injection";
import { IPublisher } from "@paperbits/common/publishing";
import { CoreModule } from "@paperbits/core/core.module";
import { CorePublishModule } from "@paperbits/core/core.publish.module";
import { ApimPublishModule } from "../../../../src/apim.publish.module";
import { StyleModule } from "@paperbits/styles/styles.module";
import { ProseMirrorModule } from "@paperbits/prosemirror/prosemirror.module";
import { StaticSettingsProvider } from "../../../../src/components/staticSettingsProvider";
export async function publish(): Promise<void> {
/* Reading settings from configuration file */
const configFile = path.resolve(__dirname, "./config.json");
const configuration = JSON.parse(fs.readFileSync(configFile, "utf8").toString());
const settingsProvider = new StaticSettingsProvider({
managementApiUrl: configuration.managementApiUrl,
managementApiVersion: configuration.managementApiVersion,
managementApiAccessToken: configuration.managementApiAccessToken,
blobStorageContainer: configuration.outputBlobStorageContainer,
blobStorageConnectionString: configuration.outputBlobStorageConnectionString,
environment: "publishing"
});
const outputSettingsProvider = new StaticSettingsProvider({
blobStorageContainer: configuration.outputBlobStorageContainer,
blobStorageConnectionString: configuration.outputBlobStorageConnectionString
});
/* Storage where the website get published */
const outputBlobStorage = new AzureBlobStorage(outputSettingsProvider);
const injector = new InversifyInjector();
injector.bindModule(new CoreModule());
injector.bindModule(new CorePublishModule());
injector.bindModule(new StyleModule());
injector.bindModule(new ProseMirrorModule());
injector.bindModule(new ApimPublishModule());
injector.bindInstance("settingsProvider", settingsProvider);
injector.bindInstance("outputBlobStorage", outputBlobStorage);
injector.resolve("autostart");
const publisher = injector.resolve<IPublisher>("sitePublisher");
await publisher.publish();
}
export async function run(context, req): Promise<void> {
try {
context.log("Publishing website...");
await publish();
context.log("Done.");
context.res = {
status: 200,
body: "Done."
};
}
catch (error) {
context.log.error(error);
context.res = {
status: 500,
body: JSON.stringify(error)
};
}
finally {
context.done();
}
}