feat: add method(Get clerk latest version) in to lib/SunoApi
This commit is contained in:
parent
46305d01c4
commit
aae2d7c2f2
@ -30,8 +30,10 @@ export interface AudioInfo {
|
|||||||
class SunoApi {
|
class SunoApi {
|
||||||
private static BASE_URL: string = 'https://studio-api.suno.ai';
|
private static BASE_URL: string = 'https://studio-api.suno.ai';
|
||||||
private static CLERK_BASE_URL: string = 'https://clerk.suno.com';
|
private static CLERK_BASE_URL: string = 'https://clerk.suno.com';
|
||||||
|
private static JSDELIVR_BASE_URL: string = 'https://data.jsdelivr.com';
|
||||||
|
|
||||||
private readonly client: AxiosInstance;
|
private readonly client: AxiosInstance;
|
||||||
|
private clerkVersion?: string;
|
||||||
private sid?: string;
|
private sid?: string;
|
||||||
private currentToken?: string;
|
private currentToken?: string;
|
||||||
|
|
||||||
@ -55,17 +57,34 @@ class SunoApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async init(): Promise<SunoApi> {
|
public async init(): Promise<SunoApi> {
|
||||||
|
await this.getClerkLatestVersion();
|
||||||
await this.getAuthToken();
|
await this.getAuthToken();
|
||||||
await this.keepAlive();
|
await this.keepAlive();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the clerk package latest version id.
|
||||||
|
*/
|
||||||
|
private async getClerkLatestVersion() {
|
||||||
|
// URL to get clerk version ID
|
||||||
|
const getClerkVersionUrl = `${SunoApi.JSDELIVR_BASE_URL}/v1/package/npm/@clerk/clerk-js`;
|
||||||
|
// Get clerk version ID
|
||||||
|
const versionListResponse = await this.client.get(getClerkVersionUrl);
|
||||||
|
if (!versionListResponse?.data?.['tags']['latest']) {
|
||||||
|
throw new Error("Failed to get clerk version info, Please try again later");
|
||||||
|
}
|
||||||
|
// Save clerk version ID for auth
|
||||||
|
this.clerkVersion = versionListResponse?.data?.['tags']['latest'];
|
||||||
|
console.log(this.clerkVersion)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the session ID and save it for later use.
|
* Get the session ID and save it for later use.
|
||||||
*/
|
*/
|
||||||
private async getAuthToken() {
|
private async getAuthToken() {
|
||||||
// URL to get session ID
|
// URL to get session ID
|
||||||
const getSessionUrl = `${SunoApi.CLERK_BASE_URL}/v1/client?_clerk_js_version=4.73.4`;
|
const getSessionUrl = `${SunoApi.CLERK_BASE_URL}/v1/client?_clerk_js_version=${this.clerkVersion}`;
|
||||||
// Get session ID
|
// Get session ID
|
||||||
const sessionResponse = await this.client.get(getSessionUrl);
|
const sessionResponse = await this.client.get(getSessionUrl);
|
||||||
if (!sessionResponse?.data?.response?.['last_active_session_id']) {
|
if (!sessionResponse?.data?.response?.['last_active_session_id']) {
|
||||||
@ -84,7 +103,7 @@ class SunoApi {
|
|||||||
throw new Error("Session ID is not set. Cannot renew token.");
|
throw new Error("Session ID is not set. Cannot renew token.");
|
||||||
}
|
}
|
||||||
// URL to renew session token
|
// URL to renew session token
|
||||||
const renewUrl = `${SunoApi.CLERK_BASE_URL}/v1/client/sessions/${this.sid}/tokens?_clerk_js_version==4.73.4`;
|
const renewUrl = `${SunoApi.CLERK_BASE_URL}/v1/client/sessions/${this.sid}/tokens?_clerk_js_version==${this.clerkVersion}`;
|
||||||
// Renew session token
|
// Renew session token
|
||||||
const renewResponse = await this.client.post(renewUrl);
|
const renewResponse = await this.client.post(renewUrl);
|
||||||
logger.info("KeepAlive...\n");
|
logger.info("KeepAlive...\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user