Compare commits

..

No commits in common. "976dbbda4aaed3de8cd4ce4e35ecbf92ba056190" and "53c95f1a4ec43945be9276f12e5f9d1ac8fe277d" have entirely different histories.

2 changed files with 13 additions and 12 deletions

View file

@ -17,19 +17,19 @@ export abstract class Provider {
public hashFormat: string, public hashFormat: string,
) {} ) {}
abstract get downloadUrl(): Resource; abstract getDownloadUrl(): Promise<Resource>;
} }
export class UrlProvider extends Provider { export class UrlProvider extends Provider {
constructor( constructor(
public hash: string, public hash: string,
public hashFormat: string, public hashFormat: string,
private url: string, public url: string,
) { ) {
super(hash, hashFormat); super(hash, hashFormat);
} }
get downloadUrl(): Resource { async getDownloadUrl(): Promise<Resource> {
return new Resource(this.url); return new Resource(this.url);
} }
} }
@ -71,10 +71,11 @@ export class CurseForgeProvider extends Provider {
super(hash, hashFormat); super(hash, hashFormat);
} }
get downloadUrl(): Resource { async getDownloadUrl(): Promise<Resource> {
return new Resource( // const mod = await CURSE_CLIENT.getMod(this.projectId);
`https://www.curseforge.com/api/v1/mods/${this.projectId}/files/${this.fileId}/download`, // const file = await mod.getFile(this.fileId);
); // return new Resource(await file.getDownloadURL());
return new Resource("https://google.com/search?q=curseforge+sucks"); // TODO: figure this out, i hate curseforge
} }
} }

View file

@ -5,11 +5,11 @@ import * as path from "path";
export default class Resource { export default class Resource {
constructor(public readonly path: string) {} constructor(public readonly path: string) {}
toString(): string { toString() {
return this.path; return this.path;
} }
get isUrl(): boolean { get isUrl() {
try { try {
new URL(this.path); new URL(this.path);
return true; return true;
@ -18,13 +18,13 @@ export default class Resource {
} }
} }
get name(): string { get name() {
return this.isUrl return this.isUrl
? new URL(this.path).pathname.split("/").pop() || "" ? new URL(this.path).pathname.split("/").pop() || ""
: path.basename(this.path); : path.basename(this.path);
} }
get parent(): Resource { get parent() {
if (this.isUrl) { if (this.isUrl) {
const url = new URL(this.path); const url = new URL(this.path);
url.pathname = path.dirname(url.pathname); url.pathname = path.dirname(url.pathname);
@ -33,7 +33,7 @@ export default class Resource {
return new Resource(path.dirname(this.path)); return new Resource(path.dirname(this.path));
} }
get ext(): string { get ext() {
return this.isUrl return this.isUrl
? path.extname(new URL(this.path).pathname) ? path.extname(new URL(this.path).pathname)
: path.extname(this.path); : path.extname(this.path);