uapi-browser-sdk 0.1.12 → 0.1.13
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/README.md +1 -1
- package/dist/internal/src/apis/ClipzyApi.d.ts +0 -12
- package/dist/internal/src/apis/ClipzyApi.js +15 -36
- package/dist/internal/src/apis/ConvertApi.d.ts +0 -8
- package/dist/internal/src/apis/ConvertApi.js +10 -24
- package/dist/internal/src/apis/DailyApi.d.ts +0 -4
- package/dist/internal/src/apis/DailyApi.js +5 -12
- package/dist/internal/src/apis/DefaultApi.d.ts +0 -20
- package/dist/internal/src/apis/DefaultApi.js +25 -60
- package/dist/internal/src/apis/GameApi.d.ts +0 -20
- package/dist/internal/src/apis/GameApi.js +25 -60
- package/dist/internal/src/apis/ImageApi.d.ts +0 -44
- package/dist/internal/src/apis/ImageApi.js +55 -132
- package/dist/internal/src/apis/MiscApi.d.ts +0 -60
- package/dist/internal/src/apis/MiscApi.js +75 -180
- package/dist/internal/src/apis/NetworkApi.d.ts +0 -40
- package/dist/internal/src/apis/NetworkApi.js +50 -120
- package/dist/internal/src/apis/PoemApi.d.ts +0 -4
- package/dist/internal/src/apis/PoemApi.js +5 -12
- package/dist/internal/src/apis/RandomApi.d.ts +0 -16
- package/dist/internal/src/apis/RandomApi.js +20 -48
- package/dist/internal/src/apis/SocialApi.d.ts +0 -32
- package/dist/internal/src/apis/SocialApi.js +40 -96
- package/dist/internal/src/apis/StatusApi.d.ts +0 -8
- package/dist/internal/src/apis/StatusApi.js +10 -24
- package/dist/internal/src/apis/TextApi.d.ts +0 -44
- package/dist/internal/src/apis/TextApi.js +55 -132
- package/dist/internal/src/apis/TranslateApi.d.ts +0 -16
- package/dist/internal/src/apis/TranslateApi.js +20 -48
- package/dist/internal/src/apis/WebParseApi.d.ts +0 -16
- package/dist/internal/src/apis/WebParseApi.js +20 -48
- package/dist/internal/src/models/GetMiscHolidayCalendar200ResponseHolidaysInner.d.ts +1 -1
- package/dist/internal/src/models/GetMiscWeather200Response.d.ts +1 -1
- package/dist/internal/src/models/PostAiTranslateRequest.d.ts +2 -2
- package/dist/internal/src/models/PostSearchAggregateRequest.d.ts +2 -2
- package/dist/internal/src/models/PostSensitiveWordAnalyze200ResponseResultsInner.d.ts +2 -2
- package/dist/internal/src/models/PostTextAesDecryptAdvancedRequest.d.ts +2 -2
- package/dist/internal/src/models/PostTextAesEncryptAdvancedRequest.d.ts +3 -3
- package/dist/internal/src/models/PostTextConvertRequest.d.ts +2 -2
- package/dist/internal/src/models/PostTranslateStream400Response.d.ts +1 -1
- package/dist/internal/src/runtime.js +0 -15
- package/dist/src/errors.d.ts +85 -0
- package/dist/src/errors.js +247 -0
- package/dist/src/index.d.ts +5 -6
- package/dist/src/index.js +9 -10
- package/internal/.openapi-generator/VERSION +1 -1
- package/internal/src/apis/ClipzyApi.ts +15 -39
- package/internal/src/apis/ConvertApi.ts +10 -26
- package/internal/src/apis/DailyApi.ts +5 -13
- package/internal/src/apis/DefaultApi.ts +25 -65
- package/internal/src/apis/GameApi.ts +25 -65
- package/internal/src/apis/ImageApi.ts +55 -143
- package/internal/src/apis/MiscApi.ts +75 -195
- package/internal/src/apis/NetworkApi.ts +50 -130
- package/internal/src/apis/PoemApi.ts +5 -13
- package/internal/src/apis/RandomApi.ts +20 -52
- package/internal/src/apis/SocialApi.ts +40 -104
- package/internal/src/apis/StatusApi.ts +10 -26
- package/internal/src/apis/TextApi.ts +55 -143
- package/internal/src/apis/TranslateApi.ts +20 -52
- package/internal/src/apis/WebParseApi.ts +20 -52
- package/internal/src/models/GetMiscHolidayCalendar200ResponseHolidaysInner.ts +1 -1
- package/internal/src/models/GetMiscWeather200Response.ts +1 -1
- package/internal/src/models/PostAiTranslateRequest.ts +2 -2
- package/internal/src/models/PostSearchAggregateRequest.ts +2 -2
- package/internal/src/models/PostSensitiveWordAnalyze200ResponseResultsInner.ts +2 -2
- package/internal/src/models/PostTextAesDecryptAdvancedRequest.ts +2 -2
- package/internal/src/models/PostTextAesEncryptAdvancedRequest.ts +3 -3
- package/internal/src/models/PostTextConvertRequest.ts +2 -2
- package/internal/src/models/PostTranslateStream400Response.ts +1 -1
- package/internal/src/runtime.ts +0 -18
- package/package.json +1 -1
- package/src/errors.ts +282 -0
- package/src/index.ts +12 -8
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
export class UapiError extends Error {
|
|
2
|
+
constructor(code, status, message, details, payload, meta) {
|
|
3
|
+
super(`[${status}] ${code}: ${message}`);
|
|
4
|
+
this.code = code;
|
|
5
|
+
this.status = status;
|
|
6
|
+
this.details = details;
|
|
7
|
+
this.payload = payload;
|
|
8
|
+
this.meta = meta;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class ApiErrorError extends UapiError {
|
|
12
|
+
}
|
|
13
|
+
export class AvatarNotFoundError extends UapiError {
|
|
14
|
+
}
|
|
15
|
+
export class ConversionFailedError extends UapiError {
|
|
16
|
+
}
|
|
17
|
+
export class FileOpenErrorError extends UapiError {
|
|
18
|
+
}
|
|
19
|
+
export class FileRequiredError extends UapiError {
|
|
20
|
+
}
|
|
21
|
+
export class InsufficientCreditsError extends UapiError {
|
|
22
|
+
}
|
|
23
|
+
export class InternalServerErrorError extends UapiError {
|
|
24
|
+
}
|
|
25
|
+
export class InvalidParameterError extends UapiError {
|
|
26
|
+
}
|
|
27
|
+
export class InvalidParamsError extends UapiError {
|
|
28
|
+
}
|
|
29
|
+
export class NotFoundError extends UapiError {
|
|
30
|
+
}
|
|
31
|
+
export class NoMatchError extends UapiError {
|
|
32
|
+
}
|
|
33
|
+
export class NoTrackingDataError extends UapiError {
|
|
34
|
+
}
|
|
35
|
+
export class PhoneInfoFailedError extends UapiError {
|
|
36
|
+
}
|
|
37
|
+
export class RecognitionFailedError extends UapiError {
|
|
38
|
+
}
|
|
39
|
+
export class RequestEntityTooLargeError extends UapiError {
|
|
40
|
+
}
|
|
41
|
+
export class ServiceBusyError extends UapiError {
|
|
42
|
+
}
|
|
43
|
+
export class TimezoneNotFoundError extends UapiError {
|
|
44
|
+
}
|
|
45
|
+
export class UnauthorizedError extends UapiError {
|
|
46
|
+
}
|
|
47
|
+
export class UnsupportedCarrierError extends UapiError {
|
|
48
|
+
}
|
|
49
|
+
export class UnsupportedFormatError extends UapiError {
|
|
50
|
+
}
|
|
51
|
+
export class VisitorMonthlyQuotaExhaustedError extends UapiError {
|
|
52
|
+
}
|
|
53
|
+
function defaultCode(status) {
|
|
54
|
+
switch (status) {
|
|
55
|
+
case 400:
|
|
56
|
+
return 'INVALID_PARAMETER';
|
|
57
|
+
case 401:
|
|
58
|
+
return 'UNAUTHORIZED';
|
|
59
|
+
case 402:
|
|
60
|
+
return 'INSUFFICIENT_CREDITS';
|
|
61
|
+
case 404:
|
|
62
|
+
return 'NOT_FOUND';
|
|
63
|
+
case 413:
|
|
64
|
+
return 'REQUEST_ENTITY_TOO_LARGE';
|
|
65
|
+
case 429:
|
|
66
|
+
return 'SERVICE_BUSY';
|
|
67
|
+
case 500:
|
|
68
|
+
return 'INTERNAL_SERVER_ERROR';
|
|
69
|
+
default:
|
|
70
|
+
return 'API_ERROR';
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function toHeaderMap(headers) {
|
|
74
|
+
const out = {};
|
|
75
|
+
if (!headers) {
|
|
76
|
+
return out;
|
|
77
|
+
}
|
|
78
|
+
if (typeof headers.forEach === 'function') {
|
|
79
|
+
;
|
|
80
|
+
headers.forEach((value, key) => {
|
|
81
|
+
out[String(key).toLowerCase()] = String(value);
|
|
82
|
+
});
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
85
|
+
for (const [rawKey, rawValue] of Object.entries(headers)) {
|
|
86
|
+
if (rawValue === undefined || rawValue === null) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
out[String(rawKey).toLowerCase()] = String(rawValue);
|
|
90
|
+
}
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
function parseNumber(value) {
|
|
94
|
+
if (value === undefined) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
const parsed = Number(value);
|
|
98
|
+
return Number.isFinite(parsed) ? parsed : undefined;
|
|
99
|
+
}
|
|
100
|
+
function parseBoolean(value) {
|
|
101
|
+
if (value === undefined) {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
const normalized = value.trim().toLowerCase();
|
|
105
|
+
if (normalized === 'true') {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
if (normalized === 'false') {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
function unquote(value) {
|
|
114
|
+
const trimmed = value.trim();
|
|
115
|
+
if (trimmed.length >= 2 && trimmed.startsWith('"') && trimmed.endsWith('"')) {
|
|
116
|
+
return trimmed.slice(1, -1);
|
|
117
|
+
}
|
|
118
|
+
return trimmed;
|
|
119
|
+
}
|
|
120
|
+
function parseStructuredItems(raw) {
|
|
121
|
+
if (!raw) {
|
|
122
|
+
return [];
|
|
123
|
+
}
|
|
124
|
+
return raw
|
|
125
|
+
.split(',')
|
|
126
|
+
.map((item) => item.trim())
|
|
127
|
+
.filter(Boolean)
|
|
128
|
+
.map((item) => {
|
|
129
|
+
const segments = item.split(';').map((segment) => segment.trim()).filter(Boolean);
|
|
130
|
+
const [head, ...rest] = segments;
|
|
131
|
+
const params = {};
|
|
132
|
+
for (const segment of rest) {
|
|
133
|
+
const eq = segment.indexOf('=');
|
|
134
|
+
if (eq <= 0) {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
const key = segment.slice(0, eq).trim();
|
|
138
|
+
const value = unquote(segment.slice(eq + 1));
|
|
139
|
+
params[key] = value;
|
|
140
|
+
}
|
|
141
|
+
return { name: unquote(head), params };
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
export function extractMetaFromHeaders(headers) {
|
|
145
|
+
const rawHeaders = toHeaderMap(headers);
|
|
146
|
+
const rateLimitPolicies = {};
|
|
147
|
+
const rateLimits = {};
|
|
148
|
+
for (const item of parseStructuredItems(rawHeaders['ratelimit-policy'])) {
|
|
149
|
+
rateLimitPolicies[item.name] = {
|
|
150
|
+
name: item.name,
|
|
151
|
+
quota: parseNumber(item.params.q),
|
|
152
|
+
unit: item.params['uapi-unit'],
|
|
153
|
+
windowSeconds: parseNumber(item.params.w),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
for (const item of parseStructuredItems(rawHeaders['ratelimit'])) {
|
|
157
|
+
rateLimits[item.name] = {
|
|
158
|
+
name: item.name,
|
|
159
|
+
remaining: parseNumber(item.params.r),
|
|
160
|
+
unit: item.params['uapi-unit'],
|
|
161
|
+
resetAfterSeconds: parseNumber(item.params.t),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
requestId: rawHeaders['x-request-id'],
|
|
166
|
+
retryAfterSeconds: parseNumber(rawHeaders['retry-after']),
|
|
167
|
+
debitStatus: rawHeaders['uapi-debit-status'],
|
|
168
|
+
creditsRequested: parseNumber(rawHeaders['uapi-credits-requested']),
|
|
169
|
+
creditsCharged: parseNumber(rawHeaders['uapi-credits-charged']),
|
|
170
|
+
creditsPricing: rawHeaders['uapi-credits-pricing'],
|
|
171
|
+
activeQuotaBuckets: parseNumber(rawHeaders['uapi-quota-active-buckets']),
|
|
172
|
+
stopOnEmpty: parseBoolean(rawHeaders['uapi-stop-on-empty']),
|
|
173
|
+
rateLimitPolicyRaw: rawHeaders['ratelimit-policy'],
|
|
174
|
+
rateLimitRaw: rawHeaders['ratelimit'],
|
|
175
|
+
rateLimitPolicies,
|
|
176
|
+
rateLimits,
|
|
177
|
+
balanceLimitCents: rateLimitPolicies['billing-balance']?.quota,
|
|
178
|
+
balanceRemainingCents: rateLimits['billing-balance']?.remaining,
|
|
179
|
+
quotaLimitCredits: rateLimitPolicies['billing-quota']?.quota,
|
|
180
|
+
quotaRemainingCredits: rateLimits['billing-quota']?.remaining,
|
|
181
|
+
visitorQuotaLimitCredits: rateLimitPolicies['visitor-quota']?.quota,
|
|
182
|
+
visitorQuotaRemainingCredits: rateLimits['visitor-quota']?.remaining,
|
|
183
|
+
rawHeaders,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
function pickDetails(body) {
|
|
187
|
+
if (!body || typeof body !== 'object') {
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
const payload = body;
|
|
191
|
+
if (payload.details !== undefined) {
|
|
192
|
+
return payload.details;
|
|
193
|
+
}
|
|
194
|
+
if (payload.quota !== undefined) {
|
|
195
|
+
return payload.quota;
|
|
196
|
+
}
|
|
197
|
+
if (payload.docs !== undefined) {
|
|
198
|
+
return payload.docs;
|
|
199
|
+
}
|
|
200
|
+
return undefined;
|
|
201
|
+
}
|
|
202
|
+
export function mapError(res, body) {
|
|
203
|
+
const payload = body && typeof body === 'object' ? body : undefined;
|
|
204
|
+
const code = String(payload?.code || payload?.error || defaultCode(res.status)).toUpperCase();
|
|
205
|
+
const message = payload?.message ||
|
|
206
|
+
payload?.errMsg ||
|
|
207
|
+
(typeof body === 'string' ? body : '') ||
|
|
208
|
+
res.statusText ||
|
|
209
|
+
'Request failed';
|
|
210
|
+
const meta = extractMetaFromHeaders(res.headers);
|
|
211
|
+
const table = {
|
|
212
|
+
"API_ERROR": ApiErrorError,
|
|
213
|
+
"AVATAR_NOT_FOUND": AvatarNotFoundError,
|
|
214
|
+
"CONVERSION_FAILED": ConversionFailedError,
|
|
215
|
+
"FILE_OPEN_ERROR": FileOpenErrorError,
|
|
216
|
+
"FILE_REQUIRED": FileRequiredError,
|
|
217
|
+
"INSUFFICIENT_CREDITS": InsufficientCreditsError,
|
|
218
|
+
"INTERNAL_SERVER_ERROR": InternalServerErrorError,
|
|
219
|
+
"INVALID_PARAMETER": InvalidParameterError,
|
|
220
|
+
"INVALID_PARAMS": InvalidParamsError,
|
|
221
|
+
"NOT_FOUND": NotFoundError,
|
|
222
|
+
"NO_MATCH": NoMatchError,
|
|
223
|
+
"NO_TRACKING_DATA": NoTrackingDataError,
|
|
224
|
+
"PHONE_INFO_FAILED": PhoneInfoFailedError,
|
|
225
|
+
"RECOGNITION_FAILED": RecognitionFailedError,
|
|
226
|
+
"REQUEST_ENTITY_TOO_LARGE": RequestEntityTooLargeError,
|
|
227
|
+
"SERVICE_BUSY": ServiceBusyError,
|
|
228
|
+
"TIMEZONE_NOT_FOUND": TimezoneNotFoundError,
|
|
229
|
+
"UNAUTHORIZED": UnauthorizedError,
|
|
230
|
+
"UNSUPPORTED_CARRIER": UnsupportedCarrierError,
|
|
231
|
+
"UNSUPPORTED_FORMAT": UnsupportedFormatError,
|
|
232
|
+
"VISITOR_MONTHLY_QUOTA_EXHAUSTED": VisitorMonthlyQuotaExhaustedError,
|
|
233
|
+
};
|
|
234
|
+
const fallback = res.status === 401
|
|
235
|
+
? UnauthorizedError
|
|
236
|
+
: res.status === 402
|
|
237
|
+
? InsufficientCreditsError
|
|
238
|
+
: res.status === 404
|
|
239
|
+
? NotFoundError
|
|
240
|
+
: res.status === 429
|
|
241
|
+
? ServiceBusyError
|
|
242
|
+
: res.status >= 500
|
|
243
|
+
? InternalServerErrorError
|
|
244
|
+
: UapiError;
|
|
245
|
+
const Ctor = table[code] || fallback;
|
|
246
|
+
return new Ctor(code, res.status, message, pickDetails(payload), payload ?? body, meta);
|
|
247
|
+
}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import type * as Internal from '../internal/src/index.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
details?: unknown | undefined;
|
|
6
|
-
constructor(code: string, status: number, details?: unknown | undefined);
|
|
7
|
-
}
|
|
2
|
+
import { type ResponseMeta } from './errors.js';
|
|
3
|
+
export { UapiError, mapError, extractMetaFromHeaders } from './errors.js';
|
|
4
|
+
export type { RateLimitPolicyEntry, RateLimitStateEntry, ResponseMeta } from './errors.js';
|
|
8
5
|
export type GetClipzyGetResponse = Internal.GetClipzyGet200Response;
|
|
9
6
|
export interface GetClipzyGetArgs {
|
|
10
7
|
/** 片段的唯一 ID。 */
|
|
@@ -711,6 +708,7 @@ export interface PostSearchAggregateArgs {
|
|
|
711
708
|
export declare class UapiClient {
|
|
712
709
|
private baseURL;
|
|
713
710
|
private token?;
|
|
711
|
+
private _lastResponseMeta?;
|
|
714
712
|
readonly clipzyZaiXianJianTieBan: ClipzyZaiXianJianTieBanApi;
|
|
715
713
|
readonly "Clipzy 在线剪贴板": ClipzyZaiXianJianTieBanApi;
|
|
716
714
|
readonly convert: ConvertApi;
|
|
@@ -744,6 +742,7 @@ export declare class UapiClient {
|
|
|
744
742
|
readonly zhiNengSouSuo: ZhiNengSouSuoApi;
|
|
745
743
|
readonly "智能搜索": ZhiNengSouSuoApi;
|
|
746
744
|
constructor(baseURL: string, token?: string);
|
|
745
|
+
get lastResponseMeta(): ResponseMeta | undefined;
|
|
747
746
|
_request(method: string, path: string, params?: Record<string, unknown>, body?: Record<string, unknown>, headers?: Record<string, string>, responseKind?: 'json' | 'text' | 'arrayBuffer'): Promise<any>;
|
|
748
747
|
}
|
|
749
748
|
export declare class ClipzyZaiXianJianTieBanApi {
|
package/dist/src/index.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
super(`${status} ${code}`);
|
|
4
|
-
this.code = code;
|
|
5
|
-
this.status = status;
|
|
6
|
-
this.details = details;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
1
|
+
import { extractMetaFromHeaders, mapError } from './errors.js';
|
|
2
|
+
export { UapiError, mapError, extractMetaFromHeaders } from './errors.js';
|
|
9
3
|
export class UapiClient {
|
|
10
4
|
constructor(baseURL, token) {
|
|
11
5
|
this.baseURL = baseURL;
|
|
@@ -59,6 +53,9 @@ export class UapiClient {
|
|
|
59
53
|
this.zhiNengSouSuo = zhiNengSouSuo;
|
|
60
54
|
this["智能搜索"] = zhiNengSouSuo;
|
|
61
55
|
}
|
|
56
|
+
get lastResponseMeta() {
|
|
57
|
+
return this._lastResponseMeta;
|
|
58
|
+
}
|
|
62
59
|
async _request(method, path, params, body, headers, responseKind = 'json') {
|
|
63
60
|
const url = new URL(this.baseURL.replace(/\/$/, '') + path);
|
|
64
61
|
if (params) {
|
|
@@ -83,9 +80,11 @@ export class UapiClient {
|
|
|
83
80
|
data = await res.json();
|
|
84
81
|
}
|
|
85
82
|
catch { }
|
|
86
|
-
const
|
|
87
|
-
|
|
83
|
+
const mapped = mapError(res, data);
|
|
84
|
+
this._lastResponseMeta = mapped.meta;
|
|
85
|
+
throw mapped;
|
|
88
86
|
}
|
|
87
|
+
this._lastResponseMeta = extractMetaFromHeaders(res.headers);
|
|
89
88
|
if (responseKind === 'arrayBuffer') {
|
|
90
89
|
return res.arrayBuffer();
|
|
91
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
7.
|
|
1
|
+
7.17.0
|
|
@@ -65,9 +65,10 @@ export interface PostClipzyStoreOperationRequest {
|
|
|
65
65
|
export class ClipzyApi extends runtime.BaseAPI {
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
|
-
*
|
|
68
|
+
* **此接口用于“最高安全等级”方法。** 您提供第一步中获得的ID,它会返回存储在服务器上的**加密数据**。您需要在自己的客户端中,使用您自己保管的密钥来解密它。
|
|
69
|
+
* 步骤2 (方法一): 获取加密数据
|
|
69
70
|
*/
|
|
70
|
-
async
|
|
71
|
+
async getClipzyGetRaw(requestParameters: GetClipzyGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetClipzyGet200Response>> {
|
|
71
72
|
if (requestParameters['id'] == null) {
|
|
72
73
|
throw new runtime.RequiredError(
|
|
73
74
|
'id',
|
|
@@ -86,21 +87,12 @@ export class ClipzyApi extends runtime.BaseAPI {
|
|
|
86
87
|
|
|
87
88
|
let urlPath = `/api/get`;
|
|
88
89
|
|
|
89
|
-
|
|
90
|
+
const response = await this.request({
|
|
90
91
|
path: urlPath,
|
|
91
92
|
method: 'GET',
|
|
92
93
|
headers: headerParameters,
|
|
93
94
|
query: queryParameters,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* **此接口用于“最高安全等级”方法。** 您提供第一步中获得的ID,它会返回存储在服务器上的**加密数据**。您需要在自己的客户端中,使用您自己保管的密钥来解密它。
|
|
99
|
-
* 步骤2 (方法一): 获取加密数据
|
|
100
|
-
*/
|
|
101
|
-
async getClipzyGetRaw(requestParameters: GetClipzyGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetClipzyGet200Response>> {
|
|
102
|
-
const requestOptions = await this.getClipzyGetRequestOpts(requestParameters);
|
|
103
|
-
const response = await this.request(requestOptions, initOverrides);
|
|
95
|
+
}, initOverrides);
|
|
104
96
|
|
|
105
97
|
return new runtime.JSONApiResponse(response, (jsonValue) => GetClipzyGet200ResponseFromJSON(jsonValue));
|
|
106
98
|
}
|
|
@@ -115,9 +107,10 @@ export class ClipzyApi extends runtime.BaseAPI {
|
|
|
115
107
|
}
|
|
116
108
|
|
|
117
109
|
/**
|
|
118
|
-
*
|
|
110
|
+
* **此接口用于“方便自动化”方法。** 您提供第一步获得的ID,并附上您自己保管的**解密密钥**作为 `key` 参数。服务器会直接为您解密,并返回纯文本内容。 > [!IMPORTANT] > 查看文档首页的 **cURL 示例**,了解此接口最典型的用法。
|
|
111
|
+
* 步骤2 (方法二): 获取原始文本
|
|
119
112
|
*/
|
|
120
|
-
async
|
|
113
|
+
async getClipzyRawRaw(requestParameters: GetClipzyRawRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<string>> {
|
|
121
114
|
if (requestParameters['id'] == null) {
|
|
122
115
|
throw new runtime.RequiredError(
|
|
123
116
|
'id',
|
|
@@ -144,21 +137,12 @@ export class ClipzyApi extends runtime.BaseAPI {
|
|
|
144
137
|
let urlPath = `/api/raw/{id}`;
|
|
145
138
|
urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));
|
|
146
139
|
|
|
147
|
-
|
|
140
|
+
const response = await this.request({
|
|
148
141
|
path: urlPath,
|
|
149
142
|
method: 'GET',
|
|
150
143
|
headers: headerParameters,
|
|
151
144
|
query: queryParameters,
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* **此接口用于“方便自动化”方法。** 您提供第一步获得的ID,并附上您自己保管的**解密密钥**作为 `key` 参数。服务器会直接为您解密,并返回纯文本内容。 > [!IMPORTANT] > 查看文档首页的 **cURL 示例**,了解此接口最典型的用法。
|
|
157
|
-
* 步骤2 (方法二): 获取原始文本
|
|
158
|
-
*/
|
|
159
|
-
async getClipzyRawRaw(requestParameters: GetClipzyRawRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<string>> {
|
|
160
|
-
const requestOptions = await this.getClipzyRawRequestOpts(requestParameters);
|
|
161
|
-
const response = await this.request(requestOptions, initOverrides);
|
|
145
|
+
}, initOverrides);
|
|
162
146
|
|
|
163
147
|
if (this.isJsonMime(response.headers.get('content-type'))) {
|
|
164
148
|
return new runtime.JSONApiResponse<string>(response);
|
|
@@ -177,9 +161,10 @@ export class ClipzyApi extends runtime.BaseAPI {
|
|
|
177
161
|
}
|
|
178
162
|
|
|
179
163
|
/**
|
|
180
|
-
*
|
|
164
|
+
* 这是所有流程的第一步。您的客户端应用需要先在本地准备好 **加密后的数据**,然后调用此接口进行上传。成功后,您会得到一个用于后续操作的唯一ID。 > [!NOTE] > 您发送给此接口的应该是**密文**,而不是原始文本。请参考文档首页的JavaScript示例来了解如何在客户端进行加密。
|
|
165
|
+
* 步骤1:上传加密数据
|
|
181
166
|
*/
|
|
182
|
-
async
|
|
167
|
+
async postClipzyStoreRaw(requestParameters: PostClipzyStoreOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PostClipzyStore200Response>> {
|
|
183
168
|
if (requestParameters['postClipzyStoreRequest'] == null) {
|
|
184
169
|
throw new runtime.RequiredError(
|
|
185
170
|
'postClipzyStoreRequest',
|
|
@@ -196,22 +181,13 @@ export class ClipzyApi extends runtime.BaseAPI {
|
|
|
196
181
|
|
|
197
182
|
let urlPath = `/api/store`;
|
|
198
183
|
|
|
199
|
-
|
|
184
|
+
const response = await this.request({
|
|
200
185
|
path: urlPath,
|
|
201
186
|
method: 'POST',
|
|
202
187
|
headers: headerParameters,
|
|
203
188
|
query: queryParameters,
|
|
204
189
|
body: PostClipzyStoreRequestToJSON(requestParameters['postClipzyStoreRequest']),
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* 这是所有流程的第一步。您的客户端应用需要先在本地准备好 **加密后的数据**,然后调用此接口进行上传。成功后,您会得到一个用于后续操作的唯一ID。 > [!NOTE] > 您发送给此接口的应该是**密文**,而不是原始文本。请参考文档首页的JavaScript示例来了解如何在客户端进行加密。
|
|
210
|
-
* 步骤1:上传加密数据
|
|
211
|
-
*/
|
|
212
|
-
async postClipzyStoreRaw(requestParameters: PostClipzyStoreOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PostClipzyStore200Response>> {
|
|
213
|
-
const requestOptions = await this.postClipzyStoreRequestOpts(requestParameters);
|
|
214
|
-
const response = await this.request(requestOptions, initOverrides);
|
|
190
|
+
}, initOverrides);
|
|
215
191
|
|
|
216
192
|
return new runtime.JSONApiResponse(response, (jsonValue) => PostClipzyStore200ResponseFromJSON(jsonValue));
|
|
217
193
|
}
|
|
@@ -48,9 +48,10 @@ export interface PostConvertJsonOperationRequest {
|
|
|
48
48
|
export class ConvertApi extends runtime.BaseAPI {
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
|
-
*
|
|
51
|
+
* 时间戳和日期字符串,哪个用着更顺手?别纠结了,这个接口让你轻松拥有两种格式! ## 功能概述 这是一个非常智能的转换器。你给它一个 Unix 时间戳,它还你一个人类可读的日期时间;你给它一个日期时间字符串,它还你一个 Unix 时间戳。它会自动识别你输入的是哪种格式。 ## 使用须知 这个接口非常智能,能够自动识别输入格式: - **输入时间戳**:支持10位秒级(如 `1672531200`)和13位毫秒级(如 `1672531200000`)。 - **输入日期字符串**:为了确保准确性,推荐使用 `YYYY-MM-DD HH:mm:ss` 标准格式(如 `2023-01-01 08:00:00`)。 > [!TIP] > 无论你输入哪种格式,响应中都会同时包含标准日期字符串和秒级Unix时间戳,方便你按需取用。 ## 错误处理指南 - **400 Bad Request**: 如果你提供的 `time` 参数既不是有效的时间戳,也不是我们支持的日期格式,就会收到这个错误。请检查你的输入值。
|
|
52
|
+
* 时间戳转换
|
|
52
53
|
*/
|
|
53
|
-
async
|
|
54
|
+
async getConvertUnixtimeRaw(requestParameters: GetConvertUnixtimeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetConvertUnixtime200Response>> {
|
|
54
55
|
if (requestParameters['time'] == null) {
|
|
55
56
|
throw new runtime.RequiredError(
|
|
56
57
|
'time',
|
|
@@ -69,21 +70,12 @@ export class ConvertApi extends runtime.BaseAPI {
|
|
|
69
70
|
|
|
70
71
|
let urlPath = `/convert/unixtime`;
|
|
71
72
|
|
|
72
|
-
|
|
73
|
+
const response = await this.request({
|
|
73
74
|
path: urlPath,
|
|
74
75
|
method: 'GET',
|
|
75
76
|
headers: headerParameters,
|
|
76
77
|
query: queryParameters,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* 时间戳和日期字符串,哪个用着更顺手?别纠结了,这个接口让你轻松拥有两种格式! ## 功能概述 这是一个非常智能的转换器。你给它一个 Unix 时间戳,它还你一个人类可读的日期时间;你给它一个日期时间字符串,它还你一个 Unix 时间戳。它会自动识别你输入的是哪种格式。 ## 使用须知 这个接口非常智能,能够自动识别输入格式: - **输入时间戳**:支持10位秒级(如 `1672531200`)和13位毫秒级(如 `1672531200000`)。 - **输入日期字符串**:为了确保准确性,推荐使用 `YYYY-MM-DD HH:mm:ss` 标准格式(如 `2023-01-01 08:00:00`)。 > [!TIP] > 无论你输入哪种格式,响应中都会同时包含标准日期字符串和秒级Unix时间戳,方便你按需取用。 ## 错误处理指南 - **400 Bad Request**: 如果你提供的 `time` 参数既不是有效的时间戳,也不是我们支持的日期格式,就会收到这个错误。请检查你的输入值。
|
|
82
|
-
* 时间戳转换
|
|
83
|
-
*/
|
|
84
|
-
async getConvertUnixtimeRaw(requestParameters: GetConvertUnixtimeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetConvertUnixtime200Response>> {
|
|
85
|
-
const requestOptions = await this.getConvertUnixtimeRequestOpts(requestParameters);
|
|
86
|
-
const response = await this.request(requestOptions, initOverrides);
|
|
78
|
+
}, initOverrides);
|
|
87
79
|
|
|
88
80
|
return new runtime.JSONApiResponse(response, (jsonValue) => GetConvertUnixtime200ResponseFromJSON(jsonValue));
|
|
89
81
|
}
|
|
@@ -98,9 +90,10 @@ export class ConvertApi extends runtime.BaseAPI {
|
|
|
98
90
|
}
|
|
99
91
|
|
|
100
92
|
/**
|
|
101
|
-
*
|
|
93
|
+
* 还在为一团乱麻的 JSON 字符串头疼吗?这个接口能瞬间让它变得井井有条,赏心悦目。 ## 功能概述 你只需要提供一个原始的、可能是压缩过的或者格式混乱的 JSON 字符串,这个 API 就会返回一个经过美化(带标准缩进和换行)的版本。这在调试 API 响应、或者需要在前端界面清晰展示 JSON 数据时非常有用。 ## 使用须知 > [!NOTE] > **请求格式** > 请注意,待格式化的 JSON 字符串需要被包裹在另一个 JSON 对象中,作为 `content` 字段的值提交。具体格式请参考请求体示例。 ## 错误处理指南 - **400 Bad Request**: 最常见的原因是你提供的 `content` 字符串本身不是一个有效的 JSON。请仔细检查括号、引号是否正确闭合,或者有没有多余的逗号等语法错误。
|
|
94
|
+
* JSON 格式化
|
|
102
95
|
*/
|
|
103
|
-
async
|
|
96
|
+
async postConvertJsonRaw(requestParameters: PostConvertJsonOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PostConvertJson200Response>> {
|
|
104
97
|
if (requestParameters['postConvertJsonRequest'] == null) {
|
|
105
98
|
throw new runtime.RequiredError(
|
|
106
99
|
'postConvertJsonRequest',
|
|
@@ -117,22 +110,13 @@ export class ConvertApi extends runtime.BaseAPI {
|
|
|
117
110
|
|
|
118
111
|
let urlPath = `/convert/json`;
|
|
119
112
|
|
|
120
|
-
|
|
113
|
+
const response = await this.request({
|
|
121
114
|
path: urlPath,
|
|
122
115
|
method: 'POST',
|
|
123
116
|
headers: headerParameters,
|
|
124
117
|
query: queryParameters,
|
|
125
118
|
body: PostConvertJsonRequestToJSON(requestParameters['postConvertJsonRequest']),
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* 还在为一团乱麻的 JSON 字符串头疼吗?这个接口能瞬间让它变得井井有条,赏心悦目。 ## 功能概述 你只需要提供一个原始的、可能是压缩过的或者格式混乱的 JSON 字符串,这个 API 就会返回一个经过美化(带标准缩进和换行)的版本。这在调试 API 响应、或者需要在前端界面清晰展示 JSON 数据时非常有用。 ## 使用须知 > [!NOTE] > **请求格式** > 请注意,待格式化的 JSON 字符串需要被包裹在另一个 JSON 对象中,作为 `content` 字段的值提交。具体格式请参考请求体示例。 ## 错误处理指南 - **400 Bad Request**: 最常见的原因是你提供的 `content` 字符串本身不是一个有效的 JSON。请仔细检查括号、引号是否正确闭合,或者有没有多余的逗号等语法错误。
|
|
131
|
-
* JSON 格式化
|
|
132
|
-
*/
|
|
133
|
-
async postConvertJsonRaw(requestParameters: PostConvertJsonOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PostConvertJson200Response>> {
|
|
134
|
-
const requestOptions = await this.postConvertJsonRequestOpts(requestParameters);
|
|
135
|
-
const response = await this.request(requestOptions, initOverrides);
|
|
119
|
+
}, initOverrides);
|
|
136
120
|
|
|
137
121
|
return new runtime.JSONApiResponse(response, (jsonValue) => PostConvertJson200ResponseFromJSON(jsonValue));
|
|
138
122
|
}
|
|
@@ -31,9 +31,10 @@ import {
|
|
|
31
31
|
export class DailyApi extends runtime.BaseAPI {
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
-
*
|
|
34
|
+
* 想用一张图快速了解天下大事?这个接口为你一键生成今日新闻摘要,非常适合用在早报、数字看板或应用首页等场景。 ## 功能概述 此接口会实时抓取各大平台的热点新闻,并动态地将它们渲染成一张清晰、美观的摘要图片。你调用接口,直接就能得到一张可以展示的图片。 ## 使用须知 调用此接口时,请务必注意以下两点: 1. **响应格式是图片**:接口成功时直接返回 `image/jpeg` 格式的二进制数据,而非 JSON。请确保你的客户端能正确处理二进制流,例如直接在 `<img>` 标签中显示,或保存为 `.jpg` 文件。 2. **设置合理超时**:由于涉及实时新闻抓取和图片渲染,处理过程可能耗时数秒。建议将客户端请求超时时间设置为至少10秒,以防止因等待过久而失败。 > [!IMPORTANT] > 未能正确处理图片响应或超时设置过短,是导致调用失败的最常见原因。
|
|
35
|
+
* 每日新闻图
|
|
35
36
|
*/
|
|
36
|
-
async
|
|
37
|
+
async getDailyNewsImageRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
|
|
37
38
|
const queryParameters: any = {};
|
|
38
39
|
|
|
39
40
|
const headerParameters: runtime.HTTPHeaders = {};
|
|
@@ -41,21 +42,12 @@ export class DailyApi extends runtime.BaseAPI {
|
|
|
41
42
|
|
|
42
43
|
let urlPath = `/daily/news-image`;
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
const response = await this.request({
|
|
45
46
|
path: urlPath,
|
|
46
47
|
method: 'GET',
|
|
47
48
|
headers: headerParameters,
|
|
48
49
|
query: queryParameters,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* 想用一张图快速了解天下大事?这个接口为你一键生成今日新闻摘要,非常适合用在早报、数字看板或应用首页等场景。 ## 功能概述 此接口会实时抓取各大平台的热点新闻,并动态地将它们渲染成一张清晰、美观的摘要图片。你调用接口,直接就能得到一张可以展示的图片。 ## 使用须知 调用此接口时,请务必注意以下两点: 1. **响应格式是图片**:接口成功时直接返回 `image/jpeg` 格式的二进制数据,而非 JSON。请确保你的客户端能正确处理二进制流,例如直接在 `<img>` 标签中显示,或保存为 `.jpg` 文件。 2. **设置合理超时**:由于涉及实时新闻抓取和图片渲染,处理过程可能耗时数秒。建议将客户端请求超时时间设置为至少10秒,以防止因等待过久而失败。 > [!IMPORTANT] > 未能正确处理图片响应或超时设置过短,是导致调用失败的最常见原因。
|
|
54
|
-
* 每日新闻图
|
|
55
|
-
*/
|
|
56
|
-
async getDailyNewsImageRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
|
|
57
|
-
const requestOptions = await this.getDailyNewsImageRequestOpts();
|
|
58
|
-
const response = await this.request(requestOptions, initOverrides);
|
|
50
|
+
}, initOverrides);
|
|
59
51
|
|
|
60
52
|
return new runtime.BlobApiResponse(response);
|
|
61
53
|
}
|