e621 1.0.9 → 2.0.0-dev.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.node-version +1 -0
- package/README.md +116 -187
- package/build/package.json +14 -11
- package/build/src/index.d.ts +28 -295
- package/build/src/index.js +83 -442
- package/build/src/modules/Pools.d.ts +120 -0
- package/build/src/modules/Pools.js +247 -0
- package/build/src/modules/PostSets.d.ts +88 -0
- package/build/src/modules/PostSets.js +182 -0
- package/build/src/modules/Posts.d.ts +124 -0
- package/build/src/modules/Posts.js +323 -0
- package/build/src/modules/UserFeedback.d.ts +66 -0
- package/build/src/modules/UserFeedback.js +134 -0
- package/build/src/modules/Users.d.ts +110 -0
- package/build/src/modules/Users.js +248 -0
- package/build/src/modules/WikiPages.d.ts +99 -0
- package/build/src/modules/WikiPages.js +208 -0
- package/build/src/structures/AuthenticatedUser.d.ts +109 -0
- package/build/src/structures/AuthenticatedUser.js +128 -0
- package/build/src/structures/Pool.d.ts +85 -0
- package/build/src/structures/Pool.js +110 -0
- package/build/src/structures/PoolHistory.d.ts +42 -0
- package/build/src/structures/PoolHistory.js +53 -0
- package/build/src/structures/Post.d.ts +147 -0
- package/build/src/structures/Post.js +155 -0
- package/build/src/structures/PostHistory.d.ts +52 -0
- package/build/src/structures/PostHistory.js +93 -0
- package/build/src/structures/PostSet.d.ts +71 -0
- package/build/src/structures/PostSet.js +91 -0
- package/build/src/structures/User.d.ts +62 -0
- package/build/src/structures/User.js +80 -0
- package/build/src/structures/WikiPage.d.ts +16 -0
- package/build/src/structures/WikiPage.js +26 -0
- package/build/src/structures/WikiPageHistory.d.ts +37 -0
- package/build/src/structures/WikiPageHistory.js +49 -0
- package/build/src/types/index.d.ts +92 -0
- package/build/src/types/pools.d.ts +60 -0
- package/build/src/types/post_sets.d.ts +33 -0
- package/build/src/types/posts.d.ts +165 -0
- package/build/src/types/user_feedback.d.ts +27 -0
- package/build/src/types/users.d.ts +277 -0
- package/build/src/types/wiki_pages.d.ts +65 -0
- package/build/src/util/FormHelper.d.ts +9 -0
- package/build/src/util/FormHelper.js +15 -0
- package/build/src/util/MultipartData.d.ts +7 -0
- package/build/src/util/MultipartData.js +39 -0
- package/build/src/util/RequestHandler.d.ts +37 -0
- package/build/src/util/RequestHandler.js +311 -0
- package/package.json +14 -11
- package/LICENSE +0 -21
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type E621 from "..";
|
|
2
|
+
import Post from "../structures/Post";
|
|
3
|
+
import PostHistory from "../structures/PostHistory";
|
|
4
|
+
import type { CreatePostOptions, SearchPostsOptions, ModifyPostOptions, PostVoteResult, SearchPostHistoryOptions } from "../types";
|
|
5
|
+
export default class Posts {
|
|
6
|
+
private readonly auth;
|
|
7
|
+
private readonly main;
|
|
8
|
+
constructor(main: E621);
|
|
9
|
+
/**
|
|
10
|
+
* Get a post by its id
|
|
11
|
+
*
|
|
12
|
+
* @param {(number | string)} id - The id of the post to get
|
|
13
|
+
* @returns {Promise<(Post | null)>}
|
|
14
|
+
*/
|
|
15
|
+
get(id: number | string): Promise<Post | null>;
|
|
16
|
+
/**
|
|
17
|
+
* Get a post by its md5
|
|
18
|
+
*
|
|
19
|
+
* @param {string} md5 - The md5 of the post to get
|
|
20
|
+
* @returns {Promise<(Post | null)>}
|
|
21
|
+
*/
|
|
22
|
+
getByMD5(md5: string): Promise<Post | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Search for posts
|
|
25
|
+
*
|
|
26
|
+
* @param {object} [options]
|
|
27
|
+
* @param {(Array<string> | string)} [options.tags] - narrow the search by specific tags
|
|
28
|
+
* @param {(number |`${"" | "a" | "b"}${number}`)} [options.page] - number for exact page, a${number} posts after ${number}, b${number} posts before ${number}
|
|
29
|
+
* @param {number} [options.limit] - limit the maximum amount of results returned
|
|
30
|
+
* @returns {Promise<Array<Post>>}
|
|
31
|
+
*/
|
|
32
|
+
search(options?: SearchPostsOptions): Promise<Post[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Upload a post
|
|
35
|
+
*
|
|
36
|
+
* * Requires Authentication
|
|
37
|
+
*
|
|
38
|
+
* @param {object} options
|
|
39
|
+
* @param {(Array<string> | string)} options.tags - the tags for the post
|
|
40
|
+
* @param {Ratings} options.rating - the rating for the post
|
|
41
|
+
* @param {(Array<string> | string)} [options.sources] - the sources for the post
|
|
42
|
+
* @param {string} [options.description] - the description of the post
|
|
43
|
+
* @param {number} [options.parentID] - the parent of the post
|
|
44
|
+
* @param {string} [options.refererURL] - dunno, api doc specifies it though
|
|
45
|
+
* @param {string} [options.md5Confirmation] - confirm of the md5 of the uploaded file
|
|
46
|
+
* @param {boolean} [options.asPending] - upload as pending (requires approver)
|
|
47
|
+
* @param {boolean} [options.ratingLocked] - upload as rating locked (requires privileged)
|
|
48
|
+
* @param {(Array<string> | string)} [options.lockedTags] - tags to lock on the post (requires admin)
|
|
49
|
+
* @param {Buffer} [options.file] - file upload (mutually exclusive with fileURL, not well tested)
|
|
50
|
+
* @param {string} [options.fileURL] - url of file to upload (mutually exclusive with file)
|
|
51
|
+
* @returns {Promise<number>}
|
|
52
|
+
*/
|
|
53
|
+
create(options: CreatePostOptions): Promise<number>;
|
|
54
|
+
/**
|
|
55
|
+
* Modify a post
|
|
56
|
+
*
|
|
57
|
+
* * Requires Authentication
|
|
58
|
+
*
|
|
59
|
+
* @param {object} options
|
|
60
|
+
* @param {string} [options.editReason] - the reason for the edit
|
|
61
|
+
* @param {(Array<string> | string)} [options.addTags] - the tags to add to the post
|
|
62
|
+
* @param {(Array<string> | string)} [options.removeTags] - the tags to remove from the post
|
|
63
|
+
* @param {(Array<string> | string)} [options.addSources] - the sources to add to the post
|
|
64
|
+
* @param {(Array<string> | string)} [options.removeSources] - the sources to remove from the post
|
|
65
|
+
* @param {Ratings} [options.rating] - the rating for the post
|
|
66
|
+
* @param {string} [options.description] - the description of the post
|
|
67
|
+
* @param {number} [options.parentID] - the parent of the post
|
|
68
|
+
* @param {boolean} [options.hasEmbeddedNotes] - I don't know what this is, api docs list it though
|
|
69
|
+
* @param {boolean} [options.ratingLocked] - upload as rating locked (requires privileged)
|
|
70
|
+
* @param {boolean} [options.noteLocked] - upload as rating locked (requires janitor)
|
|
71
|
+
* @param {boolean} [options.statusLocked] - upload as rating locked (requires admin)
|
|
72
|
+
* @param {boolean} [options.hideFromAnonymous] - upload as rating locked (requires admin)
|
|
73
|
+
* @param {boolean} [options.hideFromSearch] - upload as rating locked (requires admin)
|
|
74
|
+
* @param {string} [options.backgroundColor] - the background color of the post (requires janitor)
|
|
75
|
+
* @param {(Array<string> | string)} [options.lockedTags] - tags to lock on the post (requires admin)
|
|
76
|
+
* @returns {Promise<Post>}
|
|
77
|
+
*/
|
|
78
|
+
modify(id: number, options: ModifyPostOptions): Promise<Post>;
|
|
79
|
+
/**
|
|
80
|
+
* Revert a post to a previous version
|
|
81
|
+
*
|
|
82
|
+
* * Requires Authentication
|
|
83
|
+
*
|
|
84
|
+
* @param {number} id - the id of the post to revert
|
|
85
|
+
* @param {number} versionID - the version id to revert to (see history)
|
|
86
|
+
*/
|
|
87
|
+
revert(id: number, versionID: number): Promise<null>;
|
|
88
|
+
/**
|
|
89
|
+
* Search the post history
|
|
90
|
+
*
|
|
91
|
+
* @param {object} [options]
|
|
92
|
+
* @param {string} [options.user] - narrow the results by username
|
|
93
|
+
* @param {number} [options.userID] - narrow the results by user id
|
|
94
|
+
* @param {number} [options.post] - narrow the results by post id
|
|
95
|
+
* @param {string} [options.reason] - narrow the results by edit reason
|
|
96
|
+
* @param {string} [options.description] - narrow the results by description content
|
|
97
|
+
* @param {Ratings} [options.ratingChangedTo] - narrow the results by rating change
|
|
98
|
+
* @param {Ratings} [options.finalRating] - narrow the results by final rating
|
|
99
|
+
* @param {number} [options.parent] - narrow the results by parent id
|
|
100
|
+
* @param {number} [options.parentChangedTo] - narrow the results by changed parent id
|
|
101
|
+
* @param {(Array<string> | string)} [options.finalTags] - narrow the results by final tags
|
|
102
|
+
* @param {(Array<string> | string)} [options.addedTags] - narrow the results by added tags
|
|
103
|
+
* @param {(Array<string> | string)} [options.removedTags] - narrow the results by removed tags
|
|
104
|
+
* @param {(Array<string> | string)} [options.finalLockedTags] - narrow the results by final locked tags
|
|
105
|
+
* @param {(Array<string> | string)} [options.addedLockedTags] - narrow the results by added locked tags
|
|
106
|
+
* @param {(Array<string> | string)} [options.removedLockedTags] - narrow the results by removed locked tags
|
|
107
|
+
* @param {string} [options.source] - narrow the results by sources
|
|
108
|
+
* @param {(number |`${"" | "a" | "b"}${number}`)} [options.page] - page of results to get
|
|
109
|
+
* @param {number} [options.limit] - limit the maximum amount of results returned
|
|
110
|
+
* @param
|
|
111
|
+
* @returns {Promise<Array<PostHistory>>}
|
|
112
|
+
*/
|
|
113
|
+
searchHistory(options?: SearchPostHistoryOptions): Promise<PostHistory[]>;
|
|
114
|
+
/**
|
|
115
|
+
* Vote on a post
|
|
116
|
+
*
|
|
117
|
+
* * Requires Authentication
|
|
118
|
+
*
|
|
119
|
+
* @param {number} id - the id of the post to vote on
|
|
120
|
+
* @param {boolean} up - if the vote should be up or down
|
|
121
|
+
* @returns {Promise<PostVoteResult>}
|
|
122
|
+
*/
|
|
123
|
+
vote(id: number, up: boolean): Promise<PostVoteResult>;
|
|
124
|
+
}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Post_1 = __importDefault(require("../structures/Post"));
|
|
7
|
+
const PostHistory_1 = __importDefault(require("../structures/PostHistory"));
|
|
8
|
+
const FormHelper_1 = __importDefault(require("../util/FormHelper"));
|
|
9
|
+
const RequestHandler_1 = require("../util/RequestHandler");
|
|
10
|
+
class Posts {
|
|
11
|
+
auth;
|
|
12
|
+
main;
|
|
13
|
+
constructor(main) {
|
|
14
|
+
Object.defineProperties(this, {
|
|
15
|
+
auth: {
|
|
16
|
+
get() {
|
|
17
|
+
return !this.main.options.authUser || !this.main.options.authKey ? null : `Basic ${Buffer.from(`${this.main.options.authUser}:${this.main.options.authKey}`).toString("base64")}`;
|
|
18
|
+
},
|
|
19
|
+
configurable: false,
|
|
20
|
+
enumerable: false
|
|
21
|
+
},
|
|
22
|
+
main: {
|
|
23
|
+
value: main,
|
|
24
|
+
configurable: false,
|
|
25
|
+
enumerable: false,
|
|
26
|
+
writable: false
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get a post by its id
|
|
32
|
+
*
|
|
33
|
+
* @param {(number | string)} id - The id of the post to get
|
|
34
|
+
* @returns {Promise<(Post | null)>}
|
|
35
|
+
*/
|
|
36
|
+
async get(id) {
|
|
37
|
+
const res = await this.main.request.get(`/posts/${id}.json`).catch(err => {
|
|
38
|
+
if (err instanceof RequestHandler_1.APIError && err.statusCode === 404)
|
|
39
|
+
return null;
|
|
40
|
+
throw err;
|
|
41
|
+
});
|
|
42
|
+
return res === null ? null : new Post_1.default(this.main, res.post);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get a post by its md5
|
|
46
|
+
*
|
|
47
|
+
* @param {string} md5 - The md5 of the post to get
|
|
48
|
+
* @returns {Promise<(Post | null)>}
|
|
49
|
+
*/
|
|
50
|
+
async getByMD5(md5) {
|
|
51
|
+
const res = await this.main.request.get(`/posts.json?md5=${md5}`).catch(err => {
|
|
52
|
+
if (err instanceof RequestHandler_1.APIError && err.statusCode === 404)
|
|
53
|
+
return null;
|
|
54
|
+
throw err;
|
|
55
|
+
});
|
|
56
|
+
return res === null ? null : new Post_1.default(this.main, res.post);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Search for posts
|
|
60
|
+
*
|
|
61
|
+
* @param {object} [options]
|
|
62
|
+
* @param {(Array<string> | string)} [options.tags] - narrow the search by specific tags
|
|
63
|
+
* @param {(number |`${"" | "a" | "b"}${number}`)} [options.page] - number for exact page, a${number} posts after ${number}, b${number} posts before ${number}
|
|
64
|
+
* @param {number} [options.limit] - limit the maximum amount of results returned
|
|
65
|
+
* @returns {Promise<Array<Post>>}
|
|
66
|
+
*/
|
|
67
|
+
async search(options) {
|
|
68
|
+
options = options ?? {};
|
|
69
|
+
const qs = new FormHelper_1.default();
|
|
70
|
+
if (Array.isArray(options.tags) || typeof options.tags === "string")
|
|
71
|
+
qs.add("tags", Array.isArray(options.tags) ? options.tags.join(" ") : options.tags);
|
|
72
|
+
if (typeof options.page !== "undefined")
|
|
73
|
+
qs.add("page", options.page);
|
|
74
|
+
if (typeof options.limit === "number" || typeof options.limit === "string")
|
|
75
|
+
qs.add("limit", options.limit);
|
|
76
|
+
const res = await this.main.request.get(`/posts.json?${qs.build()}`);
|
|
77
|
+
return res.posts.map(info => new Post_1.default(this.main, info));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Upload a post
|
|
81
|
+
*
|
|
82
|
+
* * Requires Authentication
|
|
83
|
+
*
|
|
84
|
+
* @param {object} options
|
|
85
|
+
* @param {(Array<string> | string)} options.tags - the tags for the post
|
|
86
|
+
* @param {Ratings} options.rating - the rating for the post
|
|
87
|
+
* @param {(Array<string> | string)} [options.sources] - the sources for the post
|
|
88
|
+
* @param {string} [options.description] - the description of the post
|
|
89
|
+
* @param {number} [options.parentID] - the parent of the post
|
|
90
|
+
* @param {string} [options.refererURL] - dunno, api doc specifies it though
|
|
91
|
+
* @param {string} [options.md5Confirmation] - confirm of the md5 of the uploaded file
|
|
92
|
+
* @param {boolean} [options.asPending] - upload as pending (requires approver)
|
|
93
|
+
* @param {boolean} [options.ratingLocked] - upload as rating locked (requires privileged)
|
|
94
|
+
* @param {(Array<string> | string)} [options.lockedTags] - tags to lock on the post (requires admin)
|
|
95
|
+
* @param {Buffer} [options.file] - file upload (mutually exclusive with fileURL, not well tested)
|
|
96
|
+
* @param {string} [options.fileURL] - url of file to upload (mutually exclusive with file)
|
|
97
|
+
* @returns {Promise<number>}
|
|
98
|
+
*/
|
|
99
|
+
async create(options) {
|
|
100
|
+
this.main.request.authCheck.call(this, "Posts#create");
|
|
101
|
+
if (!options)
|
|
102
|
+
throw new Error("options is required for Posts#create");
|
|
103
|
+
if (!("fileURL" in options || "file" in options))
|
|
104
|
+
throw new Error("one of options.file, options.fileURL is required for Posts#create");
|
|
105
|
+
if ("fileURL" in options && "file" in options)
|
|
106
|
+
process.emitWarning("only one of options.file, options.fileURL should be provided to Posts#create. options.fileURL overrides options.file.");
|
|
107
|
+
const qs = new FormHelper_1.default();
|
|
108
|
+
if (typeof options.tags === "string")
|
|
109
|
+
qs.add("upload[tag_string]", options.tags);
|
|
110
|
+
if (typeof options.sources === "string")
|
|
111
|
+
qs.add("upload[source]", options.sources);
|
|
112
|
+
if (typeof options.lockedTags === "string")
|
|
113
|
+
qs.add("upload[locked_tags]", options.lockedTags);
|
|
114
|
+
if (Array.isArray(options.tags) && options.tags.length > 0)
|
|
115
|
+
qs.add("upload[tag_string]", options.tags.join(" "));
|
|
116
|
+
if (Array.isArray(options.sources) && options.sources.length > 0)
|
|
117
|
+
qs.add("upload[source]", options.sources.join("\n"));
|
|
118
|
+
if (Array.isArray(options.lockedTags) && options.lockedTags.length > 0)
|
|
119
|
+
qs.add("upload[locked_tags]", options.lockedTags.join("\n"));
|
|
120
|
+
if (typeof options.rating === "string")
|
|
121
|
+
qs.add("upload[rating]", options.rating);
|
|
122
|
+
if (typeof options.description === "string")
|
|
123
|
+
qs.add("upload[description]", options.description);
|
|
124
|
+
if (typeof options.parentID === "number")
|
|
125
|
+
qs.add("upload[parent_id]", options.parentID);
|
|
126
|
+
if (typeof options.refererURL === "string")
|
|
127
|
+
qs.add("upload[referer_url]", options.refererURL);
|
|
128
|
+
if (typeof options.asPending === "boolean")
|
|
129
|
+
qs.add("upload[as_pending]", options.asPending);
|
|
130
|
+
if (typeof options.md5Confirmation === "string")
|
|
131
|
+
qs.add("upload[md5_confirmation]", options.md5Confirmation);
|
|
132
|
+
if (typeof options.ratingLocked === "boolean")
|
|
133
|
+
qs.add("upload[locked_rating]", options.ratingLocked);
|
|
134
|
+
let res;
|
|
135
|
+
if ("fileURL" in options && typeof options.fileURL === "string") {
|
|
136
|
+
qs.add("upload[direct_url]", options.fileURL);
|
|
137
|
+
res = await this.main.request.post("/uploads.json", qs.build());
|
|
138
|
+
}
|
|
139
|
+
else if ("file" in options) {
|
|
140
|
+
res = await this.main.request.postWithFile("/uploads.json", qs, [{ content: options.file, name: "upload[file]" }]);
|
|
141
|
+
}
|
|
142
|
+
return res.post_id;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Modify a post
|
|
146
|
+
*
|
|
147
|
+
* * Requires Authentication
|
|
148
|
+
*
|
|
149
|
+
* @param {object} options
|
|
150
|
+
* @param {string} [options.editReason] - the reason for the edit
|
|
151
|
+
* @param {(Array<string> | string)} [options.addTags] - the tags to add to the post
|
|
152
|
+
* @param {(Array<string> | string)} [options.removeTags] - the tags to remove from the post
|
|
153
|
+
* @param {(Array<string> | string)} [options.addSources] - the sources to add to the post
|
|
154
|
+
* @param {(Array<string> | string)} [options.removeSources] - the sources to remove from the post
|
|
155
|
+
* @param {Ratings} [options.rating] - the rating for the post
|
|
156
|
+
* @param {string} [options.description] - the description of the post
|
|
157
|
+
* @param {number} [options.parentID] - the parent of the post
|
|
158
|
+
* @param {boolean} [options.hasEmbeddedNotes] - I don't know what this is, api docs list it though
|
|
159
|
+
* @param {boolean} [options.ratingLocked] - upload as rating locked (requires privileged)
|
|
160
|
+
* @param {boolean} [options.noteLocked] - upload as rating locked (requires janitor)
|
|
161
|
+
* @param {boolean} [options.statusLocked] - upload as rating locked (requires admin)
|
|
162
|
+
* @param {boolean} [options.hideFromAnonymous] - upload as rating locked (requires admin)
|
|
163
|
+
* @param {boolean} [options.hideFromSearch] - upload as rating locked (requires admin)
|
|
164
|
+
* @param {string} [options.backgroundColor] - the background color of the post (requires janitor)
|
|
165
|
+
* @param {(Array<string> | string)} [options.lockedTags] - tags to lock on the post (requires admin)
|
|
166
|
+
* @returns {Promise<Post>}
|
|
167
|
+
*/
|
|
168
|
+
async modify(id, options) {
|
|
169
|
+
this.main.request.authCheck.call(this, "Posts#modify");
|
|
170
|
+
if (!options)
|
|
171
|
+
throw new Error("options is required for Posts#modify");
|
|
172
|
+
const qs = new FormHelper_1.default();
|
|
173
|
+
let tagDiff = "", sourceDiff = "";
|
|
174
|
+
if (typeof options.addTags === "string")
|
|
175
|
+
tagDiff += options.addTags;
|
|
176
|
+
if (Array.isArray(options.addTags) && options.addTags.length > 0)
|
|
177
|
+
tagDiff += options.addTags.join(" ");
|
|
178
|
+
if (typeof options.removeTags === "string")
|
|
179
|
+
tagDiff += options.removeTags.split(" ").map(t => `-${t}`).join(" ");
|
|
180
|
+
if (Array.isArray(options.removeTags) && options.removeTags.length > 0)
|
|
181
|
+
tagDiff += ` ${options.removeTags.map(t => `-${t}`).join(" ")}`;
|
|
182
|
+
if (typeof options.addSources === "string")
|
|
183
|
+
sourceDiff += options.addSources;
|
|
184
|
+
if (Array.isArray(options.addSources) && options.addSources.length > 0)
|
|
185
|
+
sourceDiff += options.addSources.join("\n");
|
|
186
|
+
if (typeof options.removeSources === "string")
|
|
187
|
+
sourceDiff += options.removeSources.split("\n").map(s => `-${s}`).join("\n");
|
|
188
|
+
if (Array.isArray(options.removeSources) && options.removeSources.length > 0)
|
|
189
|
+
sourceDiff += ` ${options.removeSources.map(s => `-${s}`).join("\n")}`;
|
|
190
|
+
if (tagDiff)
|
|
191
|
+
qs.add("post[tag_string_diff]", tagDiff.trim());
|
|
192
|
+
if (sourceDiff)
|
|
193
|
+
qs.add("post[source_diff]", sourceDiff.trim());
|
|
194
|
+
if (typeof options.lockedTags === "string")
|
|
195
|
+
qs.add("post[locked_tags]", options.lockedTags);
|
|
196
|
+
if (Array.isArray(options.lockedTags) && options.lockedTags.length > 0)
|
|
197
|
+
qs.add("post[locked_tags]", options.lockedTags.join("\n"));
|
|
198
|
+
if (typeof options.rating === "string")
|
|
199
|
+
qs.add("post[rating]", options.rating);
|
|
200
|
+
if (typeof options.description === "string")
|
|
201
|
+
qs.add("post[description]", options.description);
|
|
202
|
+
if (typeof options.parentID === "number")
|
|
203
|
+
qs.add("post[parent_id]", options.parentID);
|
|
204
|
+
if (typeof options.hasEmbeddedNotes === "boolean")
|
|
205
|
+
qs.add("post[has_embedded_notes]", options.hasEmbeddedNotes);
|
|
206
|
+
if (typeof options.ratingLocked === "boolean")
|
|
207
|
+
qs.add("post[is_rating_locked]", options.ratingLocked);
|
|
208
|
+
if (typeof options.noteLocked === "boolean")
|
|
209
|
+
qs.add("post[is_note_locked]", options.noteLocked);
|
|
210
|
+
if (typeof options.statusLocked === "boolean")
|
|
211
|
+
qs.add("post[is_status_locked]", options.statusLocked);
|
|
212
|
+
if (typeof options.hideFromAnonymous === "boolean")
|
|
213
|
+
qs.add("post[hide_from_anonymous]", options.hideFromAnonymous);
|
|
214
|
+
if (typeof options.hideFromSearch === "boolean")
|
|
215
|
+
qs.add("post[hide_from_search_engines]", options.hideFromSearch);
|
|
216
|
+
if (typeof options.backgroundColor === "string")
|
|
217
|
+
qs.add("post[bg_color]", options.backgroundColor);
|
|
218
|
+
if (typeof options.editReason === "string")
|
|
219
|
+
qs.add("post[edit_reason]", options.editReason);
|
|
220
|
+
const res = await this.main.request.patch(`/posts/${id}.json`, qs.build());
|
|
221
|
+
return new Post_1.default(this.main, res.post);
|
|
222
|
+
}
|
|
223
|
+
// @TODO delete/approved/unapproved - not a high priority
|
|
224
|
+
/**
|
|
225
|
+
* Revert a post to a previous version
|
|
226
|
+
*
|
|
227
|
+
* * Requires Authentication
|
|
228
|
+
*
|
|
229
|
+
* @param {number} id - the id of the post to revert
|
|
230
|
+
* @param {number} versionID - the version id to revert to (see history)
|
|
231
|
+
*/
|
|
232
|
+
async revert(id, versionID) {
|
|
233
|
+
this.main.request.authCheck.call(this, "Posts#revert");
|
|
234
|
+
const qs = new FormHelper_1.default()
|
|
235
|
+
.add("version_id", versionID);
|
|
236
|
+
return this.main.request.put(`/posts/${id}/revert.json`, qs.build());
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Search the post history
|
|
240
|
+
*
|
|
241
|
+
* @param {object} [options]
|
|
242
|
+
* @param {string} [options.user] - narrow the results by username
|
|
243
|
+
* @param {number} [options.userID] - narrow the results by user id
|
|
244
|
+
* @param {number} [options.post] - narrow the results by post id
|
|
245
|
+
* @param {string} [options.reason] - narrow the results by edit reason
|
|
246
|
+
* @param {string} [options.description] - narrow the results by description content
|
|
247
|
+
* @param {Ratings} [options.ratingChangedTo] - narrow the results by rating change
|
|
248
|
+
* @param {Ratings} [options.finalRating] - narrow the results by final rating
|
|
249
|
+
* @param {number} [options.parent] - narrow the results by parent id
|
|
250
|
+
* @param {number} [options.parentChangedTo] - narrow the results by changed parent id
|
|
251
|
+
* @param {(Array<string> | string)} [options.finalTags] - narrow the results by final tags
|
|
252
|
+
* @param {(Array<string> | string)} [options.addedTags] - narrow the results by added tags
|
|
253
|
+
* @param {(Array<string> | string)} [options.removedTags] - narrow the results by removed tags
|
|
254
|
+
* @param {(Array<string> | string)} [options.finalLockedTags] - narrow the results by final locked tags
|
|
255
|
+
* @param {(Array<string> | string)} [options.addedLockedTags] - narrow the results by added locked tags
|
|
256
|
+
* @param {(Array<string> | string)} [options.removedLockedTags] - narrow the results by removed locked tags
|
|
257
|
+
* @param {string} [options.source] - narrow the results by sources
|
|
258
|
+
* @param {(number |`${"" | "a" | "b"}${number}`)} [options.page] - page of results to get
|
|
259
|
+
* @param {number} [options.limit] - limit the maximum amount of results returned
|
|
260
|
+
* @param
|
|
261
|
+
* @returns {Promise<Array<PostHistory>>}
|
|
262
|
+
*/
|
|
263
|
+
async searchHistory(options) {
|
|
264
|
+
options = options ?? {};
|
|
265
|
+
const qs = new FormHelper_1.default();
|
|
266
|
+
if (typeof options.user === "string")
|
|
267
|
+
qs.add("search[updater_name]", options.user);
|
|
268
|
+
if (typeof options.userID === "number")
|
|
269
|
+
qs.add("search[updater_id]", options.userID);
|
|
270
|
+
if (typeof options.post === "number")
|
|
271
|
+
qs.add("search[post_id]", options.post);
|
|
272
|
+
if (typeof options.reason === "string")
|
|
273
|
+
qs.add("search[reason]", options.reason);
|
|
274
|
+
if (typeof options.description === "string")
|
|
275
|
+
qs.add("search[description]", options.description);
|
|
276
|
+
if (typeof options.ratingChangedTo === "string")
|
|
277
|
+
qs.add("search[rating_changed]", options.ratingChangedTo);
|
|
278
|
+
if (typeof options.finalRating === "string")
|
|
279
|
+
qs.add("search[rating]", options.finalRating);
|
|
280
|
+
if (typeof options.parent === "number")
|
|
281
|
+
qs.add("search[parent_id]", options.parent);
|
|
282
|
+
if (typeof options.parentChangedTo === "string")
|
|
283
|
+
qs.add("search[parent_id_changed]", options.parentChangedTo);
|
|
284
|
+
if (typeof options.finalTags === "string")
|
|
285
|
+
qs.add("search[tags]", options.finalTags);
|
|
286
|
+
if (typeof options.addedTags === "string")
|
|
287
|
+
qs.add("search[tags_added]", options.addedTags);
|
|
288
|
+
if (typeof options.removedTags === "string")
|
|
289
|
+
qs.add("search[tags_removed]", options.removedTags);
|
|
290
|
+
if (typeof options.finalLockedTags === "string")
|
|
291
|
+
qs.add("search[locked_tags]", options.finalLockedTags);
|
|
292
|
+
if (typeof options.addedLockedTags === "string")
|
|
293
|
+
qs.add("search[locked_tags_added]", options.addedLockedTags);
|
|
294
|
+
if (typeof options.removedLockedTags === "string")
|
|
295
|
+
qs.add("search[locked_tags_removed]", options.removedLockedTags);
|
|
296
|
+
if (typeof options.source === "string")
|
|
297
|
+
qs.add("search[source]", options.source);
|
|
298
|
+
if (typeof options.page !== "undefined")
|
|
299
|
+
qs.add("page", options.page);
|
|
300
|
+
if (typeof options.limit === "number")
|
|
301
|
+
qs.add("limit", options.limit);
|
|
302
|
+
const res = await this.main.request.get(`/post_versions.json?${qs.build()}`);
|
|
303
|
+
return res.map(info => new PostHistory_1.default(this.main, info));
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Vote on a post
|
|
307
|
+
*
|
|
308
|
+
* * Requires Authentication
|
|
309
|
+
*
|
|
310
|
+
* @param {number} id - the id of the post to vote on
|
|
311
|
+
* @param {boolean} up - if the vote should be up or down
|
|
312
|
+
* @returns {Promise<PostVoteResult>}
|
|
313
|
+
*/
|
|
314
|
+
async vote(id, up) {
|
|
315
|
+
this.main.request.authCheck.call(this, "Posts#vote");
|
|
316
|
+
const qs = new FormHelper_1.default()
|
|
317
|
+
.add("score", up ? 1 : -1);
|
|
318
|
+
const res = await this.main.request.post(`/posts/${id}/votes.json`, qs.build());
|
|
319
|
+
return res;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
exports.default = Posts;
|
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9zdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kdWxlcy9Qb3N0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDhEQUFzQztBQUN0Qyw0RUFBb0Q7QUFZcEQsb0VBQTRDO0FBQzVDLDJEQUFrRDtBQUVsRCxNQUFxQixLQUFLO0lBQ1IsSUFBSSxDQUFnQjtJQUNwQixJQUFJLENBQU87SUFDNUIsWUFBWSxJQUFVO1FBQ3JCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7WUFDN0IsSUFBSSxFQUFFO2dCQUNMLEdBQUc7b0JBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDbkwsQ0FBQztnQkFDRCxZQUFZLEVBQUUsS0FBSztnQkFDbkIsVUFBVSxFQUFFLEtBQUs7YUFDakI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixRQUFRLEVBQUUsS0FBSzthQUNmO1NBQ0QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFtQjtRQUM1QixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBNEIsVUFBVSxFQUFFLE9BQU8s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
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type E621 from "..";
|
|
2
|
+
import type { UserFeedbackProperties, SearchUserFeedbackOptions, CreateUserFeedbackOptions, ModifyUserFeedbackOptions } from "../types";
|
|
3
|
+
export default class UserFeedback {
|
|
4
|
+
private readonly auth;
|
|
5
|
+
private readonly main;
|
|
6
|
+
constructor(main: E621);
|
|
7
|
+
/**
|
|
8
|
+
* Get a specific user feedback
|
|
9
|
+
*
|
|
10
|
+
* @param {number} id - The id of the feedback to fetch
|
|
11
|
+
* @returns {Promise<(UserFeedbackProperties | null)>}
|
|
12
|
+
*/
|
|
13
|
+
get(id: number): Promise<UserFeedbackProperties | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Search for user feedback
|
|
16
|
+
*
|
|
17
|
+
* @param {object} [options]
|
|
18
|
+
* @param {string} [options.username] - narrow the search by a specific target
|
|
19
|
+
* @param {string} [options.creator] - narrow the search by a specific creator
|
|
20
|
+
* @param {string} [options.body] - narrow the search by the content of the feedback
|
|
21
|
+
* @param {FeedbackCategories} [options.category] - narrow the search by the type
|
|
22
|
+
* @param {(number |`${"" | "a" | "b"}${number}`)} - page of results to get
|
|
23
|
+
* @param {number} [options.limit] - limit the maximum returned results
|
|
24
|
+
* @returns {Promise<Array<UserFeedbackProperties>>}
|
|
25
|
+
*/
|
|
26
|
+
search(options?: SearchUserFeedbackOptions): Promise<UserFeedbackProperties[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Add feedback to a user
|
|
29
|
+
*
|
|
30
|
+
* * Requires Authentication
|
|
31
|
+
*
|
|
32
|
+
* * Requires Moderator
|
|
33
|
+
*
|
|
34
|
+
* @param {object} options
|
|
35
|
+
* @param {string} options.username - the user the feedback is for
|
|
36
|
+
* @param {FeedbackCategories} options.category - the type of feedback
|
|
37
|
+
* @param {string} options.body - the content of the feedback
|
|
38
|
+
* @returns {Promise<UserFeedbackProperties>}
|
|
39
|
+
*/
|
|
40
|
+
create(options: CreateUserFeedbackOptions): Promise<UserFeedbackProperties>;
|
|
41
|
+
/**
|
|
42
|
+
* Modify an existing user feedback
|
|
43
|
+
*
|
|
44
|
+
* * Requires Authentication
|
|
45
|
+
*
|
|
46
|
+
* * Requires Moderator
|
|
47
|
+
*
|
|
48
|
+
* @param {number} id - the id of the feedback to edit
|
|
49
|
+
* @param {object} options
|
|
50
|
+
* @param {string} [options.body] - the content of the feedback
|
|
51
|
+
* @param {FeedbackCategories} [options.category] - the type of feedback
|
|
52
|
+
* @returns {Promise<UserFeedbackProperties>}
|
|
53
|
+
*/
|
|
54
|
+
modify(id: number, options: ModifyUserFeedbackOptions): Promise<UserFeedbackProperties>;
|
|
55
|
+
/**
|
|
56
|
+
* Delete an existing user feedback
|
|
57
|
+
*
|
|
58
|
+
* * Requires Authentication
|
|
59
|
+
*
|
|
60
|
+
* * Requires Moderator
|
|
61
|
+
*
|
|
62
|
+
* @param {number} id - the id of the feedback to delete
|
|
63
|
+
* @returns {Promise<null>}
|
|
64
|
+
*/
|
|
65
|
+
delete(id: number): Promise<null>;
|
|
66
|
+
}
|