Repository navigation
Expand file tree
/
Copy pathlib.js
More file actions
131 lines (119 loc) · 3.4 KB
/
Copy pathlib.js
File metadata and controls
131 lines (119 loc) · 3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
"use strict";
const admin = require("./admin/methods.js");
const assistants = require("./assistants/methods.js");
const audio = require("./audio/methods.js");
const batch = require("./batch/methods.js");
const chat = require("./chat/methods.js");
const chatkit = require("./chatkit/methods.js");
const container_files = require("./container-files/methods.js");
const containers = require("./containers/methods.js");
const conversations = require("./conversations/methods.js");
const embeddings = require("./embeddings/methods.js");
const evals = require("./evals/methods.js");
const files = require("./files/methods.js");
const fine_tuning = require("./fine-tuning/methods.js");
const images = require("./images/methods.js");
const messages = require("./messages/methods.js");
const models = require("./models/methods.js");
const moderations = require("./moderations/methods.js");
const realtime = require("./realtime/methods.js");
const responses = require("./responses/methods.js");
const runs = require("./runs/methods.js");
const skills = require("./skills/methods.js");
const threads = require("./threads/methods.js");
const uploads = require("./uploads/methods.js");
const vectorStoreFileBatches = require("./vector-store-file-batches/methods.js");
const vectorStoreFiles = require("./vector-store-files/methods.js");
const vectorStores = require("./vector-stores/methods.js");
const videos = require("./videos/methods.js");
const webhooks = require("./webhooks/methods.js");
function normalizeHeaderOrQueryName(headerOrQueryName) {
if (typeof headerOrQueryName !== "string") {
return "Authorization";
}
const trimmedHeaderOrQueryName = headerOrQueryName.trim();
return trimmedHeaderOrQueryName || "Authorization";
}
function createApiKeyTransportParams(apiKey, apiKeyTransport = {}) {
if (!apiKey) {
return {};
}
const headerOrQueryName = normalizeHeaderOrQueryName(
apiKeyTransport.headerOrQueryName
);
if (apiKeyTransport.isQuery) {
return {
defaultHeaders: {
Authorization: null,
},
defaultQuery: {
[headerOrQueryName]: apiKey,
},
};
}
if (headerOrQueryName.toLowerCase() === "authorization") {
return {};
}
return {
defaultHeaders: {
Authorization: null,
[headerOrQueryName]: apiKey,
},
};
}
class OpenaiApi {
constructor(apiKeyOrOptions, baseURL, organization, apiKeyTransport) {
const options =
typeof apiKeyOrOptions === "object" &&
apiKeyOrOptions !== null &&
!Array.isArray(apiKeyOrOptions)
? apiKeyOrOptions
: {
apiKey: apiKeyOrOptions,
baseURL,
organization,
apiKeyTransport,
};
this.clientParams = {
apiKey: options.apiKey ?? null,
adminAPIKey: options.adminAPIKey ?? null,
baseURL: options.baseURL,
organization: options.organization,
...createApiKeyTransportParams(options.apiKey, options.apiKeyTransport),
};
}
}
// Attach all exported methods as instance methods
Object.assign(
OpenaiApi.prototype,
admin,
assistants,
audio,
batch,
chat,
chatkit,
container_files,
containers,
conversations,
embeddings,
evals,
files,
fine_tuning,
images,
messages,
models,
moderations,
realtime,
responses,
runs,
skills,
threads,
uploads,
videos,
webhooks,
vectorStoreFileBatches,
vectorStoreFiles,
vectorStores
);
// Export the class
module.exports = OpenaiApi;