cosmos-explorer/src/Utils/JunoUtils.ts

74 lines
2.1 KiB
TypeScript
Raw Normal View History

import * as DataModels from "../Contracts/DataModels";
import { config } from "../Config";
import { RepoListItem } from "../Explorer/Controls/GitHub/GitHubReposComponent";
import { IPinnedRepo } from "../Juno/JunoClient";
import { IGitHubRepo } from "../GitHub/GitHubClient";
export class JunoUtils {
public static async getLikedNotebooks(authorizationToken: string): Promise<DataModels.LikedNotebooksJunoResponse> {
//TODO: Add Get method once juno has it implemented
return {
2020-06-05 04:04:15 +02:00
likedNotebooksContent: [],
userMetadata: {
likedNotebooks: []
}
};
}
2020-06-05 04:04:15 +02:00
public static async getOfficialSampleNotebooks(
authorizationToken: string
): Promise<DataModels.GitHubInfoJunoResponse[]> {
try {
2020-06-05 04:04:15 +02:00
const response = await window.fetch(config.JUNO_ENDPOINT + "/api/notebooks/galleries", {
method: "GET",
headers: {
authorization: authorizationToken
}
});
if (!response.ok) {
throw new Error("Status code:" + response.status);
}
return await response.json();
} catch (e) {
throw new Error("Official samples fetch failed.");
}
}
public static async updateUserMetadata(
authorizationToken: string,
userMetadata: DataModels.UserMetadata
): Promise<DataModels.UserMetadata> {
return undefined;
//TODO: add userMetadata updation code
2020-06-05 04:04:15 +02:00
// TODO: Make sure to throw error if failed
}
public static async updateNotebookMetadata(
authorizationToken: string,
2020-06-05 04:04:15 +02:00
notebookMetadata: DataModels.NotebookMetadata
): Promise<DataModels.NotebookMetadata> {
return undefined;
//TODO: add notebookMetadata updation code
2020-06-05 04:04:15 +02:00
// TODO: Make sure to throw error if failed
}
public static toPinnedRepo(item: RepoListItem): IPinnedRepo {
return {
owner: item.repo.owner.login,
name: item.repo.name,
private: item.repo.private,
branches: item.branches.map(element => ({ name: element.name }))
};
}
public static toGitHubRepo(pinnedRepo: IPinnedRepo): IGitHubRepo {
return {
owner: {
login: pinnedRepo.owner
},
name: pinnedRepo.name,
private: pinnedRepo.private
};
}
}