first commit
This commit is contained in:
+78
@@ -0,0 +1,78 @@
|
||||
import { NAMESPACES } from "./endpoints.js";
|
||||
import { HttpClient } from "./http.js";
|
||||
import { EntityObjectsService } from "./objects.js";
|
||||
import { createMetadataService } from "./metadata/service.js";
|
||||
import { createNamespaceService, } from "./service.js";
|
||||
export class Clarizen {
|
||||
http;
|
||||
authentication;
|
||||
applications;
|
||||
bulk;
|
||||
data;
|
||||
files;
|
||||
metadata;
|
||||
utils;
|
||||
objects;
|
||||
constructor(baseUrlOrOptions, apiToken) {
|
||||
const options = typeof baseUrlOrOptions === "string"
|
||||
? { baseUrl: baseUrlOrOptions, apiToken }
|
||||
: baseUrlOrOptions;
|
||||
const baseUrl = (options.baseUrl ?? "https://api.clarizen.com").replace(/\/$/, "");
|
||||
let auth;
|
||||
if (options.sessionId) {
|
||||
auth = { type: "session", sessionId: options.sessionId };
|
||||
}
|
||||
else if (options.apiToken) {
|
||||
auth = { type: "apiKey", token: options.apiToken };
|
||||
}
|
||||
else {
|
||||
auth = { type: "none" };
|
||||
}
|
||||
this.http = new HttpClient(baseUrl, auth);
|
||||
const authBase = createNamespaceService(this.http, "authentication");
|
||||
this.authentication = {
|
||||
getServerDefinition: (body) => authBase.getServerDefinition(body),
|
||||
getSessionInfo: () => authBase.getSessionInfo(),
|
||||
logout: authBase.logout,
|
||||
login: async (params) => {
|
||||
const result = (await authBase.login(params));
|
||||
this.useSession(result.sessionId);
|
||||
return result;
|
||||
},
|
||||
};
|
||||
this.applications = createNamespaceService(this.http, "applications");
|
||||
this.bulk = createNamespaceService(this.http, "bulk");
|
||||
this.files = createNamespaceService(this.http, "files");
|
||||
this.metadata = createMetadataService(this.http);
|
||||
this.utils = createNamespaceService(this.http, "utils");
|
||||
this.objects = new EntityObjectsService(this.http);
|
||||
this.data = createNamespaceService(this.http, "data");
|
||||
}
|
||||
get baseUrl() {
|
||||
return this.http.getBaseUrl();
|
||||
}
|
||||
async loginWithDiscovery(params) {
|
||||
const definition = await this.authentication.getServerDefinition(params);
|
||||
this.http.setBaseUrl(definition.serverLocation);
|
||||
return this.authentication.login(params);
|
||||
}
|
||||
useSession(sessionId) {
|
||||
this.http.setAuth({ type: "session", sessionId });
|
||||
}
|
||||
useApiKey(apiToken) {
|
||||
this.http.setAuth({ type: "apiKey", token: apiToken });
|
||||
}
|
||||
get sessionId() {
|
||||
const auth = this.http.getAuth();
|
||||
return auth.type === "session" ? auth.sessionId : undefined;
|
||||
}
|
||||
call(namespace, operation, body, query) {
|
||||
const service = this[namespace];
|
||||
return service(operation, body, query);
|
||||
}
|
||||
static createForLogin(baseUrl = "https://api.clarizen.com") {
|
||||
return new Clarizen({ baseUrl });
|
||||
}
|
||||
static namespaces = NAMESPACES;
|
||||
}
|
||||
//# sourceMappingURL=clarizen.js.map
|
||||
Reference in New Issue
Block a user