mirror of
https://github.com/tdurieux/anonymous_github.git
synced 2026-02-13 02:42:45 +00:00
124 lines
2.8 KiB
TypeScript
124 lines
2.8 KiB
TypeScript
import * as express from "express";
|
|
import config from "../../config";
|
|
import { ensureAuthenticated } from "./connection";
|
|
import { handleError, getUser } from "./route-utils";
|
|
|
|
const router = express.Router();
|
|
|
|
// user needs to be connected for all user API
|
|
router.use(ensureAuthenticated);
|
|
|
|
router.get("/logout", async (req: express.Request, res: express.Response) => {
|
|
try {
|
|
req.logout();
|
|
res.redirect("/");
|
|
} catch (error) {
|
|
handleError(error, res);
|
|
}
|
|
});
|
|
|
|
router.get("/", async (req: express.Request, res: express.Response) => {
|
|
try {
|
|
const user = await getUser(req);
|
|
res.json({
|
|
username: user.username,
|
|
photo: user.photo,
|
|
isAdmin: user.isAdmin,
|
|
});
|
|
} catch (error) {
|
|
handleError(error, res);
|
|
}
|
|
});
|
|
|
|
router.get("/quota", async (req: express.Request, res: express.Response) => {
|
|
try {
|
|
const user = await getUser(req);
|
|
const repositories = await user.getRepositories();
|
|
const sizes = await Promise.all(
|
|
repositories
|
|
.filter((r) => r.status == "ready")
|
|
.map((r) => r.computeSize())
|
|
);
|
|
res.json({
|
|
storage: {
|
|
used: sizes.reduce((sum, i) => sum + i.storage, 0),
|
|
total: config.DEFAULT_QUOTA,
|
|
},
|
|
file: {
|
|
used: sizes.reduce((sum, i) => sum + i.file, 0),
|
|
total: 0,
|
|
},
|
|
repository: {
|
|
used: repositories.filter((f) => f.status == "ready").length,
|
|
total: 20,
|
|
},
|
|
});
|
|
} catch (error) {
|
|
handleError(error, res);
|
|
}
|
|
});
|
|
|
|
router.get("/default", async (req: express.Request, res: express.Response) => {
|
|
try {
|
|
const user = await getUser(req);
|
|
|
|
res.json(user.default);
|
|
} catch (error) {
|
|
handleError(error, res);
|
|
}
|
|
});
|
|
|
|
router.post("/default", async (req: express.Request, res: express.Response) => {
|
|
try {
|
|
const user = await getUser(req);
|
|
|
|
const d = req.body;
|
|
user.model.default = d;
|
|
|
|
await user.model.save();
|
|
res.send("ok");
|
|
} catch (error) {
|
|
handleError(error, res);
|
|
}
|
|
});
|
|
|
|
router.get(
|
|
"/anonymized_repositories",
|
|
async (req: express.Request, res: express.Response) => {
|
|
try {
|
|
const user = await getUser(req);
|
|
res.json(
|
|
(await user.getRepositories()).map((x) => {
|
|
return x.toJSON();
|
|
})
|
|
);
|
|
} catch (error) {
|
|
handleError(error, res);
|
|
}
|
|
}
|
|
);
|
|
|
|
router.get(
|
|
"/all_repositories",
|
|
async (req: express.Request, res: express.Response) => {
|
|
try {
|
|
const user = await getUser(req);
|
|
const repos = await user.getGitHubRepositories({
|
|
force: req.query.force == "1",
|
|
});
|
|
res.json(
|
|
repos.map((x) => {
|
|
return {
|
|
fullName: x.fullName,
|
|
id: x.id,
|
|
};
|
|
})
|
|
);
|
|
} catch (error) {
|
|
handleError(error, res);
|
|
}
|
|
}
|
|
);
|
|
|
|
export default router;
|