Canvas: Generate Github nodes out of the dodo-app config
Change-Id: Ifc5b09deb39352a3025f7ea66ce39b421daac94d
diff --git a/apps/canvas/back/src/github.ts b/apps/canvas/back/src/github.ts
index 7657043..df8eacf 100644
--- a/apps/canvas/back/src/github.ts
+++ b/apps/canvas/back/src/github.ts
@@ -1,34 +1,11 @@
import axios from "axios";
-import { z } from "zod";
-
-export const GithubRepositorySchema = z.object({
- id: z.number(),
- name: z.string(),
- full_name: z.string(),
- html_url: z.string(),
- ssh_url: z.string(),
-});
-
-const DeployKeysSchema = z.array(
- z.object({
- id: z.number(),
- key: z.string(),
- }),
-);
-
-const WebhookSchema = z.object({
- id: z.number(),
- config: z.object({
- url: z.string().optional(), // url might not always be present
- content_type: z.string().optional(),
- }),
- events: z.array(z.string()),
- active: z.boolean(),
-});
-
-const ListWebhooksResponseSchema = z.array(WebhookSchema);
-
-export type GithubRepository = z.infer<typeof GithubRepositorySchema>;
+import {
+ GithubRepository,
+ GithubRepositoriesSchema,
+ DeployKeysSchema,
+ ListWebhooksResponseSchema,
+ DeployKeys,
+} from "config";
export class GithubClient {
private token: string;
@@ -49,13 +26,13 @@
const response = await axios.get("https://api.github.com/user/repos", {
headers: this.getHeaders(),
});
- return z.array(GithubRepositorySchema).parse(response.data);
+ return GithubRepositoriesSchema.parse(response.data);
}
async addDeployKey(repoPath: string, key: string) {
const sshUrl = repoPath;
const repoOwnerAndName = sshUrl.replace("git@github.com:", "").replace(".git", "");
- let existingKeys: z.infer<typeof DeployKeysSchema> = [];
+ let existingKeys: DeployKeys = [];
const response = await axios.get(`https://api.github.com/repos/${repoOwnerAndName}/keys`, {
headers: this.getHeaders(),
});