Added nether mod support
This commit is contained in:
parent
7221e468bd
commit
024cb48107
75
src/api/nether/index.ts
Normal file
75
src/api/nether/index.ts
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
import { Request, Response, Router } from "express";
|
||||||
|
import * as request from "request";
|
||||||
|
import { ReferenceRepo, RepoFileFetcher } from "../../github";
|
||||||
|
|
||||||
|
export class NetherRouter {
|
||||||
|
public router: Router;
|
||||||
|
private referenceRepo: ReferenceRepo;
|
||||||
|
|
||||||
|
constructor(private repoFileFetcher: RepoFileFetcher) {
|
||||||
|
this.router = Router();
|
||||||
|
this.referenceRepo = new ReferenceRepo(repoFileFetcher, {
|
||||||
|
owner: "PilzAdam",
|
||||||
|
repo: "nether",
|
||||||
|
path: "textures",
|
||||||
|
});
|
||||||
|
|
||||||
|
this.referenceRepo.fetch();
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
public init(): void {
|
||||||
|
this.router.get("/:owner/:repo.svg", (req: Request, res: Response) => {
|
||||||
|
const owner = req.params.owner as string;
|
||||||
|
const repo = req.params.repo as string;
|
||||||
|
|
||||||
|
this.fetchDetails(owner, repo).then((result) => {
|
||||||
|
request(`https://img.shields.io/badge/farming%20mod%20completion-${result.percentage}%25-green.svg`).pipe(res);
|
||||||
|
}).catch((error) => {
|
||||||
|
res.status(400).json({ message: `${repo} is not a mod!` });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
this.router.get("/:owner/:repo", (req: Request, res: Response) => {
|
||||||
|
const owner = req.params.owner as string;
|
||||||
|
const repo = req.params.repo as string;
|
||||||
|
|
||||||
|
this.fetchDetails(owner, repo).then((result) => {
|
||||||
|
res.status(200).json(result);
|
||||||
|
}).catch((error) => {
|
||||||
|
res.status(400).json({ message: `${repo} is not a mod!` });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private fetchDetails(owner: string, repo: string, path: string = ""): Promise<ComputationSummary> {
|
||||||
|
return new Promise<ComputationSummary>((resolve, reject) => {
|
||||||
|
this.repoFileFetcher.fetch({
|
||||||
|
owner: owner,
|
||||||
|
repo: repo,
|
||||||
|
path: path,
|
||||||
|
}).then((files) => {
|
||||||
|
this.referenceRepo.fetch().then((fileMap) => {
|
||||||
|
let successfulFiles: number = 0;
|
||||||
|
const missingFiles: string[] = new Array<string>();
|
||||||
|
|
||||||
|
for (const file of fileMap.values()) {
|
||||||
|
if (files.has(file.name)) {
|
||||||
|
successfulFiles++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
missingFiles.push(file.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
resolve({
|
||||||
|
percentage: parseFloat(Math.round((successfulFiles / fileMap.size) * 100).toPrecision(2)),
|
||||||
|
numberTexturesMissing: fileMap.size - successfulFiles,
|
||||||
|
missingFiles: missingFiles,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}).catch((error) => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
import * as logger from "winston";
|
import * as logger from "winston";
|
||||||
import { AwardsRouter } from "./api/awards";
|
import { AwardsRouter } from "./api/awards";
|
||||||
import { FarmingRouter } from "./api/farming";
|
import { FarmingRouter } from "./api/farming";
|
||||||
|
import { NetherRouter } from "./api/nether";
|
||||||
import { TexturePackRouter } from "./api/texture-pack";
|
import { TexturePackRouter } from "./api/texture-pack";
|
||||||
import { ApplicationWrapper } from "./bootstrap/application-wrapper";
|
import { ApplicationWrapper } from "./bootstrap/application-wrapper";
|
||||||
import { DevelopmentConfig, ProductionConfig } from "./config/index";
|
import { DevelopmentConfig, ProductionConfig } from "./config/index";
|
||||||
@ -22,6 +23,7 @@ appWrapper.configure((app) => {
|
|||||||
app.use("/", new TexturePackRouter(repoFileFetcher).router);
|
app.use("/", new TexturePackRouter(repoFileFetcher).router);
|
||||||
app.use("/farming", new FarmingRouter(repoFileFetcher).router);
|
app.use("/farming", new FarmingRouter(repoFileFetcher).router);
|
||||||
app.use("/awards", new AwardsRouter(repoFileFetcher).router);
|
app.use("/awards", new AwardsRouter(repoFileFetcher).router);
|
||||||
|
app.use("/nether", new NetherRouter(repoFileFetcher).router);
|
||||||
});
|
});
|
||||||
|
|
||||||
appWrapper.start();
|
appWrapper.start();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user