Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e16ab5b22f | |||
| f65b3d5e72 | |||
| fc325be4c7 | |||
| 87a424a6b7 | |||
| 331cff0550 | |||
| 714edfa147 | |||
| ab701005ec | |||
| 72d7616c16 | |||
| 0e3ce6a58a | |||
| 51a2acd8c3 | |||
| fb218bcbe1 | |||
| 4c508008b2 | |||
| 6371315b71 | |||
| 9ba65ee60a | |||
| d102adcebc | |||
| caa38f92e4 | |||
| 550018ed81 | |||
| e81dfba70a | |||
| 845dad288e | |||
| 84e10c529b | |||
| 85c8f8cc9f | |||
| 99387d1b3b | |||
| 8b2b1d2b13 | |||
| 59bfd58fba | |||
| 8c4dfeaa77 | |||
| e4338c80e7 |
@@ -5,13 +5,13 @@
|
|||||||
## インストール
|
## インストール
|
||||||
```bash
|
```bash
|
||||||
# npm
|
# npm
|
||||||
npm install git+https://gitea.last2014.com/last2014/better-uwuzu-sdk.git#1.0.1
|
npm install git+https://gitea.last2014.com/last2014/better-uwuzu-sdk.git#1.1.4
|
||||||
|
|
||||||
# yarn
|
# yarn
|
||||||
yarn add git+https://gitea.last2014.com/last2014/better-uwuzu-sdk.git#1.0.1
|
yarn add git+https://gitea.last2014.com/last2014/better-uwuzu-sdk.git#1.1.4
|
||||||
|
|
||||||
# pnpm
|
# pnpm
|
||||||
pnpm add git+https://gitea.last2014.com/last2014/better-uwuzu-sdk.git#1.0.1
|
pnpm add git+https://gitea.last2014.com/last2014/better-uwuzu-sdk.git#1.1.4
|
||||||
```
|
```
|
||||||
> **NOTE**
|
> **NOTE**
|
||||||
> このSDKはnpmリポジトリがありません。Gitリポジトリを使用しています。
|
> このSDKはnpmリポジトリがありません。Gitリポジトリを使用しています。
|
||||||
@@ -22,10 +22,12 @@ pnpm add git+https://gitea.last2014.com/last2014/better-uwuzu-sdk.git#1.0.1
|
|||||||
## 初期化
|
## 初期化
|
||||||
```ts
|
```ts
|
||||||
import uwuzu from "better-uwuzu-sdk";
|
import uwuzu from "better-uwuzu-sdk";
|
||||||
import type ApiMap from "better-uwuzu-sdk/1.6.11/map";
|
import type ApiMap from "better-uwuzu-sdk/1.6.8/map";
|
||||||
|
import Parser from "better-uwuzu-sdk/1.6.8/parser";
|
||||||
|
|
||||||
const client = new uwuzu<ApiMap>({
|
const client = new uwuzu<ApiMap>({
|
||||||
origin: "https://uwuzu.net",
|
origin: "https://uwuzu.net",
|
||||||
|
parser: Parser,
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -39,10 +41,12 @@ try {
|
|||||||
## APIリクエスト
|
## APIリクエスト
|
||||||
```ts
|
```ts
|
||||||
import uwuzu from "better-uwuzu-sdk";
|
import uwuzu from "better-uwuzu-sdk";
|
||||||
import type ApiMap from "better-uwuzu-sdk/1.6.11/map";
|
import type ApiMap from "better-uwuzu-sdk/1.6.8/map";
|
||||||
|
import Parser from "better-uwuzu-sdk/1.6.8/parser";
|
||||||
|
|
||||||
const client = new uwuzu<ApiMap>({
|
const client = new uwuzu<ApiMap>({
|
||||||
origin: "https://uwuzu.net",
|
origin: "https://uwuzu.net",
|
||||||
|
parser: Parser,
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
+5
-5
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "better-uwuzu-sdk",
|
"name": "better-uwuzu-sdk",
|
||||||
"version": "1.0.1",
|
"version": "1.1.4",
|
||||||
"description": "A better uwuzu SDK.",
|
"description": "A better uwuzu SDK.",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"types": "dist/types/index.d.ts",
|
"types": "dist/types/index.d.ts",
|
||||||
@@ -33,19 +33,19 @@
|
|||||||
"types": "./dist/types/*.d.ts"
|
"types": "./dist/types/*.d.ts"
|
||||||
},
|
},
|
||||||
"./*/*": {
|
"./*/*": {
|
||||||
"import": "./dist/types/*/*.js",
|
"import": "./dist/*/*.js",
|
||||||
"types": "./dist/types/*/*.d.ts"
|
"types": "./dist/types/*/*.d.ts"
|
||||||
},
|
},
|
||||||
"./*/*/*": {
|
"./*/*/*": {
|
||||||
"import": "./dist/types/*/*/*.js",
|
"import": "./dist/*/*/*.js",
|
||||||
"types": "./dist/types/*/*/*.d.ts"
|
"types": "./dist/types/*/*/*.d.ts"
|
||||||
},
|
},
|
||||||
"./*/*/*/*": {
|
"./*/*/*/*": {
|
||||||
"import": "./dist/types/*/*/*/*.js",
|
"import": "./dist/*/*/*/*.js",
|
||||||
"types": "./dist/types/*/*/*/*.d.ts"
|
"types": "./dist/types/*/*/*/*.d.ts"
|
||||||
},
|
},
|
||||||
"./*/*/*/*/*": {
|
"./*/*/*/*/*": {
|
||||||
"import": "./dist/types/*/*/*/*/*.js",
|
"import": "./dist/*/*/*/*/*.js",
|
||||||
"types": "./dist/types/*/*/*/*/*.d.ts"
|
"types": "./dist/types/*/*/*/*/*.d.ts"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
import type { parserType } from "../index";
|
||||||
|
|
||||||
|
const mediaToObj = (ueuse: any) => {
|
||||||
|
const media = {
|
||||||
|
photo: [] as string[],
|
||||||
|
video: [] as string[],
|
||||||
|
};
|
||||||
|
|
||||||
|
if (ueuse.photo1 !== "" || ueuse.video1 !== "") {
|
||||||
|
if (ueuse.photo1 !== "") {
|
||||||
|
media.photo.push(ueuse.photo1);
|
||||||
|
delete ueuse.photo1;
|
||||||
|
}
|
||||||
|
if (ueuse.photo2 !== "") {
|
||||||
|
media.photo.push(ueuse.photo2);
|
||||||
|
delete ueuse.photo2;
|
||||||
|
}
|
||||||
|
if (ueuse.photo3 !== "") {
|
||||||
|
media.photo.push(ueuse.photo3);
|
||||||
|
delete ueuse.photo3;
|
||||||
|
}
|
||||||
|
if (ueuse.photo4 !== "") {
|
||||||
|
media.photo.push(ueuse.photo4);
|
||||||
|
delete ueuse.photo4;
|
||||||
|
}
|
||||||
|
if (ueuse.video1 !== "") {
|
||||||
|
media.video.push(ueuse.video1);
|
||||||
|
delete ueuse.video1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ueuse.media = media;
|
||||||
|
|
||||||
|
return ueuse;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Parser: parserType = (data, type, endpoint) => {
|
||||||
|
let result = data;
|
||||||
|
|
||||||
|
if (type === "request") {
|
||||||
|
if (result.media && result.text && endpoint === "ueuse/create") {
|
||||||
|
for (let i = 0; i < result.media.photo.length; i++) {
|
||||||
|
result[`photo${i + 1}`] = result.media.photo[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < result.media.video.length; i++) {
|
||||||
|
result[`video${i + 1}`] = result.media.video[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
} else {
|
||||||
|
if (result["0"] !== undefined && result.success === true) {
|
||||||
|
delete result.success;
|
||||||
|
|
||||||
|
const objData: any[] = Object.values(result);
|
||||||
|
|
||||||
|
for (let i = 0; i < objData.length; i++) {
|
||||||
|
if (endpoint.indexOf("ueuse") !== -1) {
|
||||||
|
objData[i] = mediaToObj(objData[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
success: true,
|
||||||
|
data: objData,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result.favorite_list !== undefined && result.success === true) {
|
||||||
|
delete result.success;
|
||||||
|
|
||||||
|
const list = result.favorite_list.split(",");
|
||||||
|
|
||||||
|
return {
|
||||||
|
success: true,
|
||||||
|
favorite_list: list,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Parser;
|
||||||
Vendored
+29
-1
@@ -6,6 +6,20 @@ import MeNotification from "./me/notification";
|
|||||||
import MeNotificationRead from "./me/notification/read";
|
import MeNotificationRead from "./me/notification/read";
|
||||||
import MeSettings from "./me/settings";
|
import MeSettings from "./me/settings";
|
||||||
import Ueuse from "./ueuse";
|
import Ueuse from "./ueuse";
|
||||||
|
import UeuseGet from "./ueuse/get";
|
||||||
|
import UeuseReplies from "./ueuse/replies";
|
||||||
|
import UeuseMentions from "./ueuse/mentions";
|
||||||
|
import UeuseSearch from "./ueuse/search";
|
||||||
|
import UeuseCreate from "./ueuse/create";
|
||||||
|
import UeuseDelete from "./ueuse/delete";
|
||||||
|
import UeuseBookmark from "./ueuse/bookmark";
|
||||||
|
import FavoriteChange from "./favorite/change";
|
||||||
|
import FavoriteGet from "./favorite/get";
|
||||||
|
import TokenGet from "./token/get";
|
||||||
|
import AdminUsers from "./admin/users";
|
||||||
|
import AdminUsersSanction from "./admin/users/sanction";
|
||||||
|
import AdminReports from "./admin/reports";
|
||||||
|
import AdminReportsResolve from "./admin/reports/resolve";
|
||||||
|
|
||||||
export type ApiMap =
|
export type ApiMap =
|
||||||
& ServerInfo
|
& ServerInfo
|
||||||
@@ -15,4 +29,18 @@ export type ApiMap =
|
|||||||
& MeSettings
|
& MeSettings
|
||||||
& Users
|
& Users
|
||||||
& UsersFollow
|
& UsersFollow
|
||||||
& Ueuse;
|
& Ueuse
|
||||||
|
& UeuseGet
|
||||||
|
& UeuseReplies
|
||||||
|
& UeuseMentions
|
||||||
|
& UeuseSearch
|
||||||
|
& UeuseCreate
|
||||||
|
& UeuseDelete<string>
|
||||||
|
& UeuseBookmark
|
||||||
|
& FavoriteChange
|
||||||
|
& FavoriteGet
|
||||||
|
& TokenGet
|
||||||
|
& AdminUsers
|
||||||
|
& AdminUsersSanction<string>
|
||||||
|
& AdminReports
|
||||||
|
& AdminReportsResolve;
|
||||||
Vendored
+1
-1
@@ -2,7 +2,7 @@ import InputError from "../../modules/error/input";
|
|||||||
import { UserDataNotFound } from "../../modules/error/critical";
|
import { UserDataNotFound } from "../../modules/error/critical";
|
||||||
|
|
||||||
export default interface TokenGet {
|
export default interface TokenGet {
|
||||||
"ueuse/get": {
|
"token/get": {
|
||||||
body: {
|
body: {
|
||||||
/** api/authで使用したセッション */
|
/** api/authで使用したセッション */
|
||||||
session: string;
|
session: string;
|
||||||
|
|||||||
+3
-1
@@ -3,10 +3,12 @@ import AuthError from "../../modules/error/auth";
|
|||||||
import { Media } from "../../modules/ueuse";
|
import { Media } from "../../modules/ueuse";
|
||||||
|
|
||||||
export default interface UeuseCreate {
|
export default interface UeuseCreate {
|
||||||
"ueuse/get": {
|
"ueuse/create": {
|
||||||
body: {
|
body: {
|
||||||
/** 本文 */
|
/** 本文 */
|
||||||
text: string;
|
text: string;
|
||||||
|
/** メディア */
|
||||||
|
media: Media;
|
||||||
/** NSFWにするかどうか */
|
/** NSFWにするかどうか */
|
||||||
nsfw?: boolean;
|
nsfw?: boolean;
|
||||||
/** 返信先ユーズのユニークID */
|
/** 返信先ユーズのユニークID */
|
||||||
|
|||||||
Vendored
+35
-177
@@ -1,111 +1,23 @@
|
|||||||
type Abi = {
|
export interface Media {
|
||||||
/**
|
/** 画像URL */
|
||||||
* 追記
|
photo: string[];
|
||||||
* 追記がない場合は空文字列です。
|
|
||||||
*/
|
|
||||||
abi: string;
|
|
||||||
/** 追記時刻 */
|
|
||||||
abidatetime: string;
|
|
||||||
} | {
|
|
||||||
/**
|
|
||||||
* 追記
|
|
||||||
* 追記が入力できないため常に空文字列です。
|
|
||||||
*/
|
|
||||||
abi: "";
|
|
||||||
/**
|
|
||||||
* 追記時刻
|
|
||||||
* 追記が入力できないため常に0000-00-00 00:00:00です。
|
|
||||||
*/
|
|
||||||
abidatetime: "0000-00-00 00:00:00";
|
|
||||||
}
|
|
||||||
|
|
||||||
export type Media =
|
|
||||||
| {
|
|
||||||
/**
|
|
||||||
* 画像1URL
|
|
||||||
* 画像1がないため常に空文字列です。
|
|
||||||
*/
|
|
||||||
photo1?: undefined;
|
|
||||||
/**
|
|
||||||
* 画像2URL
|
|
||||||
* 画像2がないため常に空文字列です。
|
|
||||||
* 画像2は画像1が入力されていることの内包条件です。
|
|
||||||
*/
|
|
||||||
photo2?: undefined;
|
|
||||||
/**
|
|
||||||
* 画像3URL
|
|
||||||
* 画像3がないため常に空文字列です。
|
|
||||||
* 画像3は画像2が入力されていることの内包条件です。
|
|
||||||
*/
|
|
||||||
photo3?: undefined;
|
|
||||||
/**
|
|
||||||
* 画像4URL
|
|
||||||
* 画像4がないため常に空文字列です。
|
|
||||||
* 画像4は画像3が入力されていることの内包条件です。
|
|
||||||
*/
|
|
||||||
photo4?: undefined;
|
|
||||||
/**
|
|
||||||
* 動画URL
|
|
||||||
* 動画がないため常に空文字列です。
|
|
||||||
*/
|
|
||||||
video1?: undefined;
|
|
||||||
} | {
|
|
||||||
/** 画像1URL */
|
|
||||||
photo1: string;
|
|
||||||
/**
|
|
||||||
* 画像2URL
|
|
||||||
* 画像2がない場合は空文字列です。
|
|
||||||
* 画像2は画像1が入力されていることの内包条件です。
|
|
||||||
*/
|
|
||||||
photo2?: string;
|
|
||||||
/**
|
|
||||||
* 画像3URL
|
|
||||||
* 画像3がない場合は空文字列です。
|
|
||||||
* 画像3は画像2が入力されていることの内包条件です。
|
|
||||||
*/
|
|
||||||
photo3?: string;
|
|
||||||
/**
|
|
||||||
* 画像4URL
|
|
||||||
* 画像4がない場合は空文字列です。
|
|
||||||
* 画像4は画像3が入力されていることの内包条件です。
|
|
||||||
*/
|
|
||||||
photo4?: string;
|
|
||||||
/**
|
|
||||||
* 動画URL
|
|
||||||
* 動画がないため常に空文字列です。
|
|
||||||
*/
|
|
||||||
video1?: undefined;
|
|
||||||
} | {
|
|
||||||
/** 動画URL */
|
/** 動画URL */
|
||||||
video1: string;
|
video: string[];
|
||||||
/**
|
};
|
||||||
* 画像1URL
|
|
||||||
* 画像1がないため常に空文字列です。
|
|
||||||
*/
|
|
||||||
photo1?: undefined;
|
|
||||||
/**
|
|
||||||
* 画像2URL
|
|
||||||
* 画像2がないため常に空文字列です。
|
|
||||||
* 画像2は画像1が入力されていることの内包条件です。
|
|
||||||
*/
|
|
||||||
photo2?: undefined;
|
|
||||||
/**
|
|
||||||
* 画像3URL
|
|
||||||
* 画像3がないため常に空文字列です。
|
|
||||||
* 画像3は画像1が入力されていることの内包条件です。
|
|
||||||
*/
|
|
||||||
photo3?: undefined;
|
|
||||||
/**
|
|
||||||
* 画像4URL
|
|
||||||
* 画像4がないため常に空文字列です。
|
|
||||||
* 画像4は画像1が入力されていることの内包条件です。
|
|
||||||
*/
|
|
||||||
photo4?: undefined;
|
|
||||||
};
|
|
||||||
|
|
||||||
interface ueuseBase {
|
export default interface ueuseModule {
|
||||||
/** ユニークID */
|
/** ユニークID */
|
||||||
uniqid: string;
|
uniqid: string;
|
||||||
|
/**
|
||||||
|
* 返信先ID
|
||||||
|
* 返信でない場合は空文字列です。
|
||||||
|
*/
|
||||||
|
replyid: string | "";
|
||||||
|
/**
|
||||||
|
* リユーズ/引用元ID
|
||||||
|
* リユーズ/引用でない場合は空文字列です。
|
||||||
|
*/
|
||||||
|
reuseid: string | "";
|
||||||
/** 送信者 */
|
/** 送信者 */
|
||||||
account: {
|
account: {
|
||||||
/** ユーザー名 */
|
/** ユーザー名 */
|
||||||
@@ -119,88 +31,34 @@ interface ueuseBase {
|
|||||||
/** Botフラグ(自主設定)かどうか */
|
/** Botフラグ(自主設定)かどうか */
|
||||||
is_bot: boolean;
|
is_bot: boolean;
|
||||||
};
|
};
|
||||||
|
/** 本文 */
|
||||||
|
text: string;
|
||||||
/** いいねしたユーザーID */
|
/** いいねしたユーザーID */
|
||||||
favorite: string[];
|
favorite: string[];
|
||||||
|
/** メディア */
|
||||||
|
media: Media;
|
||||||
/** いいね数 */
|
/** いいね数 */
|
||||||
favorite_cnt: number;
|
favorite_cnt: number;
|
||||||
/** 返信数 */
|
/** 返信数 */
|
||||||
reply_cnt: number;
|
reply_cnt: number;
|
||||||
/** リユーズ+引用数 */
|
/** リユーズ+引用数 */
|
||||||
reuse_cnt: number;
|
reuse_cnt: number;
|
||||||
/** 送信時刻 */
|
/**
|
||||||
|
* 送信時刻
|
||||||
|
* YYYY-MM-DD HH:MM:SS形式です。
|
||||||
|
*/
|
||||||
datetime: string;
|
datetime: string;
|
||||||
|
/**
|
||||||
|
* 追記
|
||||||
|
* 追記がない場合は空文字列です。
|
||||||
|
*/
|
||||||
|
abi: string | "";
|
||||||
|
/**
|
||||||
|
* 追記時刻
|
||||||
|
* 追記がない場合は0000-00-00 00:00:00です。
|
||||||
|
* YYYY-MM-DD HH:MM:SS形式です。
|
||||||
|
*/
|
||||||
|
abidatetime: string | "0000-00-00 00:00:00";
|
||||||
/** NSFW(自主設定)かどうか */
|
/** NSFW(自主設定)かどうか */
|
||||||
nsfw: boolean;
|
nsfw: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface NormalUeuse extends ueuseBase {
|
|
||||||
/** 本文 */
|
|
||||||
text: string;
|
|
||||||
/**
|
|
||||||
* 返信先ID
|
|
||||||
* 返信でないため空文字列です。
|
|
||||||
*/
|
|
||||||
replyid: "";
|
|
||||||
/**
|
|
||||||
* リユーズ/引用元ID
|
|
||||||
* リユーズ/引用でないため空文字列です。
|
|
||||||
*/
|
|
||||||
reuseid: "";
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ReplyUeuse extends ueuseBase {
|
|
||||||
/** 本文 */
|
|
||||||
text: string;
|
|
||||||
/** 返信先ID */
|
|
||||||
replyid: string;
|
|
||||||
/**
|
|
||||||
* リユーズ/引用元ID
|
|
||||||
* リユーズ/引用でないため空文字列です。
|
|
||||||
*/
|
|
||||||
reuseid: "";
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Reuse extends ueuseBase {
|
|
||||||
/**
|
|
||||||
* 本文
|
|
||||||
* リユーズであるため常に空文字列です。
|
|
||||||
*/
|
|
||||||
text: "";
|
|
||||||
/**
|
|
||||||
* 返信先ID
|
|
||||||
* 返信でないため空文字列です。
|
|
||||||
*/
|
|
||||||
replyid: "";
|
|
||||||
/** リユーズ/引用元ID */
|
|
||||||
reuseid: string;
|
|
||||||
/**
|
|
||||||
* 追記
|
|
||||||
* リユーズであるため常に空文字列です。
|
|
||||||
*/
|
|
||||||
abi: "";
|
|
||||||
/**
|
|
||||||
* 追記時刻
|
|
||||||
* リユーズであるため常に0000-00-00 00:00:00です。
|
|
||||||
*/
|
|
||||||
abidatetime: "0000-00-00 00:00:00";
|
|
||||||
}
|
|
||||||
|
|
||||||
interface QuoteReuse extends ueuseBase {
|
|
||||||
/** 本文 */
|
|
||||||
text: string;
|
|
||||||
/**
|
|
||||||
* 返信先ID
|
|
||||||
* 返信でないため空文字列です。
|
|
||||||
*/
|
|
||||||
replyid: "";
|
|
||||||
/** 引用元ID */
|
|
||||||
reuseid: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
type Ext = Abi & Media;
|
|
||||||
|
|
||||||
export type ueuseModule =
|
|
||||||
| (NormalUeuse & Ext)
|
|
||||||
| (ReplyUeuse & Ext)
|
|
||||||
| (QuoteReuse & Ext)
|
|
||||||
| Reuse;
|
|
||||||
+21
-27
@@ -1,9 +1,19 @@
|
|||||||
import uwuzuError from "./lib/error";
|
import uwuzuError from "./lib/error";
|
||||||
import uwuzuFetch from "./lib/fetch";
|
import uwuzuFetch from "./lib/fetch";
|
||||||
|
|
||||||
|
export type parserType = (
|
||||||
|
data: any,
|
||||||
|
type: "request" | "response",
|
||||||
|
endpoint: string,
|
||||||
|
) => any;
|
||||||
|
|
||||||
interface sdkOptions {
|
interface sdkOptions {
|
||||||
/** uwuzuサーバーのorigin */
|
/** uwuzuサーバーのorigin */
|
||||||
origin: string;
|
origin: string;
|
||||||
|
/**
|
||||||
|
* リクエスト/レスポンスのパーサー
|
||||||
|
*/
|
||||||
|
parser: parserType;
|
||||||
/**
|
/**
|
||||||
* 通信に失敗した際の再試行回数です。
|
* 通信に失敗した際の再試行回数です。
|
||||||
* 全て失敗した場合はエラーを発生します。
|
* 全て失敗した場合はエラーを発生します。
|
||||||
@@ -29,15 +39,18 @@ export default class uwuzu<
|
|||||||
M extends { [K in keyof M]: { body?: any; response: any } }
|
M extends { [K in keyof M]: { body?: any; response: any } }
|
||||||
> {
|
> {
|
||||||
readonly origin: string;
|
readonly origin: string;
|
||||||
|
readonly parser: parserType;
|
||||||
readonly retry: number;
|
readonly retry: number;
|
||||||
readonly waiting: number;
|
readonly waiting: number;
|
||||||
private _token: string | null = null;
|
private _token: string | null = null;
|
||||||
|
|
||||||
constructor(options: sdkOptions) {
|
constructor(options: sdkOptions) {
|
||||||
this.origin = options.origin;
|
this.origin = options.origin;
|
||||||
|
this.parser = options.parser;
|
||||||
this.retry = options.retry ?? 5;
|
this.retry = options.retry ?? 5;
|
||||||
this.waiting = options.waiting ?? 500;
|
this.waiting = options.waiting ?? 500;
|
||||||
|
|
||||||
|
if (!this.parser) throw new uwuzuError("Invalid parser.");
|
||||||
if (this.retry < 1) throw new uwuzuError("Invalid retry count.");
|
if (this.retry < 1) throw new uwuzuError("Invalid retry count.");
|
||||||
if (this.waiting < 1) throw new uwuzuError("Invalid base waiting time.");
|
if (this.waiting < 1) throw new uwuzuError("Invalid base waiting time.");
|
||||||
if (options.origin !== new URL(options.origin).origin)
|
if (options.origin !== new URL(options.origin).origin)
|
||||||
@@ -73,10 +86,16 @@ export default class uwuzu<
|
|||||||
let bodyParsed: any = args[0] ?? {};
|
let bodyParsed: any = args[0] ?? {};
|
||||||
|
|
||||||
if (typeof bodyParsed === "object") {
|
if (typeof bodyParsed === "object") {
|
||||||
|
bodyParsed = this.parser(bodyParsed, "request", endpoint);
|
||||||
|
|
||||||
bodyParsed = {
|
bodyParsed = {
|
||||||
...bodyParsed,
|
...bodyParsed,
|
||||||
token: this._token,
|
token: this._token ?? "",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (bodyParsed.token === "")
|
||||||
|
delete bodyParsed.token;
|
||||||
|
|
||||||
bodyParsed = JSON.stringify(bodyParsed);
|
bodyParsed = JSON.stringify(bodyParsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,37 +107,12 @@ export default class uwuzu<
|
|||||||
endpoint as string,
|
endpoint as string,
|
||||||
{
|
{
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
cache: "no-store",
|
cache: "no-store",
|
||||||
body: bodyParsed,
|
body: bodyParsed,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
let res = await req.json();
|
const res = this.parser(await req.json(), "response", endpoint);
|
||||||
|
|
||||||
if (res["0"] !== undefined && res.success === true) {
|
|
||||||
res.success = undefined;
|
|
||||||
|
|
||||||
const data = Object.values(res).filter(Boolean);
|
|
||||||
|
|
||||||
return {
|
|
||||||
success: true,
|
|
||||||
data,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (res.favorite_list !== undefined && res.success === true) {
|
|
||||||
res.success = undefined;
|
|
||||||
|
|
||||||
const list = res.favorite_list.split(",");
|
|
||||||
|
|
||||||
return {
|
|
||||||
success: true,
|
|
||||||
favorite_list: list,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user