diff options
| author | HampusM <hampus@hampusmat.com> | 2021-07-25 12:32:59 +0200 | 
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2021-07-25 12:32:59 +0200 | 
| commit | c63e558f402cfad914031a58fdcf3d8e0f3d125d (patch) | |
| tree | bf080e4c23310f5a5a1d14f15bc3e575c0671625 /packages/server/src/app.ts | |
| parent | a5afb39803e70a6117965760f50615aaba82f84a (diff) | |
Moved backend routes to a dedicated directory
Diffstat (limited to 'packages/server/src/app.ts')
| -rw-r--r-- | packages/server/src/app.ts | 92 | 
1 files changed, 3 insertions, 89 deletions
| diff --git a/packages/server/src/app.ts b/packages/server/src/app.ts index deddf00..f52333c 100644 --- a/packages/server/src/app.ts +++ b/packages/server/src/app.ts @@ -1,12 +1,8 @@ -import { Repository } from "./git/repository"; -import { Route } from "./types/fastify"; -import { Tag } from "./git/tag"; -import api from "./api/v1"; +import api from "./routes/api/v1";  import { fastify as fastifyFactory, FastifyInstance } from "fastify";  import fastifyStatic from "fastify-static"; -import { verifyRepoName } from "./api/util"; -import { BaseError } from "./git/error";  import { Settings } from "./types"; +import repo from "./routes/repo";  export default function buildApp(settings: Settings, dist_dir: string): FastifyInstance {  	const fastify = fastifyFactory(); @@ -36,89 +32,7 @@ export default function buildApp(settings: Settings, dist_dir: string): FastifyI  	fastify.addContentTypeParser("application/x-git-receive-pack-request", (req, payload, done) => done(null, payload));  	fastify.register(api, { prefix: "/api/v1", config: { settings: settings } }); - -	fastify.route<Route>({ -		method: "GET", -		url: "/:repo([a-zA-Z0-9\\.\\-_]+)/info/refs", -		handler: async(req, reply) => { -			reply.header("Content-Type", "application/x-git-upload-pack-advertisement"); - -			if(!verifyRepoName(req.params.repo)) { -				reply.code(400).send({ error: "Bad request" }); -				return; -			} - -			if(!req.query.service) { -				reply.header("Content-Type", "text/plain"); -				reply.code(403).send("Missing service query parameter\n"); -				return; -			} - -			if(req.query.service !== "git-upload-pack") { -				reply.header("Content-Type", "text/plain"); -				reply.code(403).send("Access denied!\n"); -				return; -			} - -			if(Object.keys(req.query).length !== 1) { -				reply.code(403).send("Too many query parameters!\n"); -				return; -			} - -			const repository = await Repository.open(settings.base_dir, req.params.repo); -			repository.HTTPconnect(req, reply); -		} -	}); - -	fastify.route<Route>({ -		method: "POST", -		url: "/:repo([a-zA-Z0-9\\.\\-_]+)/git-upload-pack", -		handler: async(req, reply) => { -			if(!verifyRepoName(req.params.repo)) { -				reply.code(400).send({ error: "Bad request" }); -				return; -			} - -			const repository = await Repository.open(settings.base_dir, req.params.repo); -			repository.HTTPconnect(req, reply); -		} -	}); - -	fastify.route({ -		method: "POST", -		url: "/:repo([a-zA-Z0-9\\.\\-_]+)/git-receive-pack", -		handler: (req, reply) => { -			reply.header("Content-Type", "application/x-git-receive-pack-result"); -			reply.code(403).send("Access denied!"); -		} -	}); - -	fastify.route<Route>({ -		method: "GET", -		url: "/:repo([a-zA-Z0-9\\.\\-_]+)/refs/tags/:tag", -		handler: async(req, reply) => { -			if(!verifyRepoName(req.params.repo)) { -				reply.code(400).send({ error: "Bad request" }); -				return; -			} - -			const repository: Repository | BaseError = await Repository.open(settings.base_dir, req.params.repo).catch(err => err); - -			if(repository instanceof BaseError) { -				reply.code(repository.code).send(repository.message); -				return; -			} - -			const tag = await Tag.lookup(repository, req.params.tag).catch(err => err); - -			if(tag instanceof BaseError) { -				reply.code(tag.code).send(tag.message); -				return; -			} - -			tag.downloadTarball(reply); -		} -	}); +	fastify.register(repo, { prefix: "/:repo([a-zA-Z0-9\\.\\-_]+)", config: { settings: settings } });  	return fastify;  }
\ No newline at end of file | 
