diff --git a/docs/EN.md b/docs/EN.md index dc342ef..e203876 100644 --- a/docs/EN.md +++ b/docs/EN.md @@ -60,11 +60,12 @@ Main class **Kind**: class -| Param | Type | Default | Description | -| ------------------ | -------- | -------------- | ------------------------------------- | -| options | `Object` | | Object with parameters for the class | -| options.proxy | `string` | | Proxy for requests | -| options.endpoint | `string` | `"namemc.com"` | NameMC Endpoint | +| Param | Type | Default | Description | +| --------------------------- | -------- | -------------- | -------------------------------------------------------------------------- | +| options | `Object` | | Object with parameters for the class | +| options.proxy | `string` | | Proxy for requests | +| options.endpoint | `string` | `"namemc.com"` | NameMC Endpoint | +| options.defaultSkinsModel | `string` | `"unknown"` | Model for skins by default, if an error occurred while trying to parse it. | **Example**: diff --git a/docs/RU.md b/docs/RU.md index 660f406..fad55ea 100644 --- a/docs/RU.md +++ b/docs/RU.md @@ -59,11 +59,12 @@ **Вид**: класс -| Параметры | Тип | По умолчанию | Описание | -| ---------------- | -------- | -------------- | ---------------------------------- | -| options | `Object` | | Объект с параметрами для класса | -| options.proxy | `string` | | Прокси для запросов | -| options.endpoint | `string` | `"namemc.com"` | Конечная точка NameMC для запросов | +| Параметры | Тип | По умолчанию | Описание | +| --------------------------- | -------- | -------------- | -------------------------------------------------------------------------- | +| options | `Object` | | Объект с параметрами для класса | +| options.proxy | `string` | | Прокси для запросов | +| options.endpoint | `string` | `"namemc.com"` | Конечная точка NameMC для запросов | +| options.defaultSkinsModel | `string` | `"unknown"` | Модель для скинов по умолчанию, если при ее парсе произошла ошибка | **Пример**: diff --git a/package-lock.json b/package-lock.json index 2c36842..1e58f15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "namemcwrapper", - "version": "1.8.0", + "version": "1.8.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "namemcwrapper", - "version": "1.8.0", + "version": "1.8.1", "license": "MIT", "dependencies": { "axios": "^0.21.1", diff --git a/package.json b/package.json index d5e7247..5c2bfc9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "namemcwrapper", - "version": "1.8.0", + "version": "1.8.1", "description": "ES6 Promise based wrapper for NameMC.com", "main": "./dist/NameMC.js", "exports": { diff --git a/src/DataParser.ts b/src/DataParser.ts index 702a758..95a6f92 100644 --- a/src/DataParser.ts +++ b/src/DataParser.ts @@ -4,12 +4,18 @@ import { WrapperError } from "./WrapperError"; import { profileSkinsRegExp, escapeColorsClasses, escapeHtml, skinRegExp } from "./utils"; -import { ISkin, IExtendedSkin, INamedSkin, ICape, ICapeResponse, IRender, IGetEndpointOptions, IGetRendersOptions, ISkinResponse, ICapeInfo, IServerPreview, IServer, Hash, BasePlayerInfo, Model } from "./interfaces"; +import { IOptions, ISkin, IExtendedSkin, INamedSkin, ICape, ICapeResponse, IRender, IGetEndpointOptions, IGetRendersOptions, ISkinResponse, ICapeInfo, IServerPreview, IServer, Hash, BasePlayerInfo, Model } from "./interfaces"; import TagElement = cheerio.TagElement; import Root = cheerio.Root; export abstract class DataParser { + options: IOptions; + + protected constructor(options: IOptions) { + this.options = options; + } + abstract getEndpoint(options: IGetEndpointOptions): string; abstract getRenders(options: IGetRendersOptions): IRender; abstract getCapeInfo(hash: Hash): ICapeInfo; @@ -333,7 +339,7 @@ export abstract class DataParser { switch(type) { case "skin": { const name = (response as ISkinResponse).name || null; - const model = (response as ISkinResponse).model || "unknown"; + const model = (response as ISkinResponse).model || (this.options.defaultSkinsModel || "unknown"); const rating = (response as ISkinResponse).rating ?? 0; return { diff --git a/src/NameMC.ts b/src/NameMC.ts index 0dc3e87..3aefad9 100644 --- a/src/NameMC.ts +++ b/src/NameMC.ts @@ -15,7 +15,7 @@ export class NameMC extends DataParser { readonly api: API; constructor(options: IOptions = {}) { - super(); + super(options); this.options = { endpoint: "namemc.com", @@ -153,6 +153,8 @@ export class NameMC extends DataParser { }: IGetRendersOptions): IRender { const endpoint: string = this.getEndpoint({ subdomain: "render" }); + model = this.options.defaultSkinsModel || model; + return { body: { front: `${endpoint}/skin/3d/body.png?skin=${skin}&model=${model}&width=${width}&height=${height}&theta=${theta}&phi=${phi}&time=${time}`, diff --git a/src/interfaces/NameMC/options.ts b/src/interfaces/NameMC/options.ts index 3b0e323..6be9e43 100644 --- a/src/interfaces/NameMC/options.ts +++ b/src/interfaces/NameMC/options.ts @@ -1,4 +1,7 @@ +import { Model } from "./skin"; + export interface IOptions { proxy?: string; endpoint?: string; + defaultSkinsModel?: Exclude; }