import { whenFunction } from "../../../../commons/coolKids"; import { splitError, stopProccessIfAcumenError } from "../../../../commons/errorHandling"; import { iCoverageOptions } from "../../../../contracts/coverage/request/iCoverageOptions"; import { iDispatchRequestCoverage } from "../../../../contracts/coverage/request/iDispatchRequestCoverage"; import { translateResponse } from "../../../../translation/translate"; import { JsonEnvironment } from "../../../configuration/jsonEnvironment"; import { callEntry } from "../../../processor/processor"; import { Kernel } from "../../kernel"; export class JsonCoverage { public entries: string[] = []; public coverageOptions: iCoverageOptions; public constructor(private kernel: Kernel, private jsonEnvironment: JsonEnvironment) { } public controller() { this.getEntries(); this.getCoverageOptions(); this.update(); } public getEntries() { this.entries = this.kernel.modules.repoManager .getEntries(this.jsonEnvironment.repo); } public getCoverageOptions() { this.coverageOptions = this.kernel.modules.repoManager .getCoverageOptions(this.jsonEnvironment.repo); } public createRequest(entry: string): iDispatchRequestCoverage { const headers = this.kernel.modules.requests.getBaseHeadersForEntry(entry) return { url: "/coverage", userAgent: "@json", body: this.coverageOptions, headers } } public update() { this.entries.forEach(entry => { const messages = []; callEntry(entry, this.createRequest(entry), messages) .then(response => translateResponse(response)) .then((response) => { response.whenCoverage(coverage => { whenFunction(this.jsonEnvironment.whenCoverage)(coverage.body.data); this.kernel.modules.messages.info(this.jsonEnvironment, [ `@json coverage provided for: ${entry}` ]) this.kernel.modules.messages.verbose(this.jsonEnvironment, messages); }) response.whenError(error => { this.kernel.modules.messages.verbose(this.jsonEnvironment, messages); this.kernel.modules.messages.error(this.jsonEnvironment, error.body) }) }).catch((err: Error) => { stopProccessIfAcumenError(err); this.kernel.modules.messages.verbose(this.jsonEnvironment, messages); this.kernel.modules.messages.error(this.jsonEnvironment, splitError(err)) }) }) } }