forked from vieter-v/vieter
				
			feat(server): added routes for removing arch-repo & repo
							parent
							
								
									6283cbea9c
								
							
						
					
					
						commit
						68b7e5e71e
					
				|  | @ -122,3 +122,58 @@ Parameter | Description | |||
| repo | Repository to delete package from | ||||
| arch | Specific arch-repo to remove package from | ||||
| pkg | Name of package to remove (without any version information) | ||||
| 
 | ||||
| ## Remove arch-repo | ||||
| 
 | ||||
| <aside class="notice"> | ||||
| 
 | ||||
| This endpoint requests authentication. | ||||
| 
 | ||||
| </aside> | ||||
| 
 | ||||
| ```shell | ||||
| curl \ | ||||
|   -H 'X-Api-Key: secret' \ | ||||
|   -XDELETE \ | ||||
|   https://example.com/vieter/x86_64 | ||||
| ``` | ||||
| 
 | ||||
| This endpoint allows remove an entire arch-repo. | ||||
| 
 | ||||
| ### HTTP Request | ||||
| 
 | ||||
| `DELETE /:repo/:arch` | ||||
| 
 | ||||
| ### URL Parameters | ||||
| 
 | ||||
| Parameter | Description | ||||
| --------- | ----------- | ||||
| repo | Repository to delete arch-repo from | ||||
| arch | Specific architecture to remove package | ||||
| 
 | ||||
| ## Remove repo | ||||
| 
 | ||||
| <aside class="notice"> | ||||
| 
 | ||||
| This endpoint requests authentication. | ||||
| 
 | ||||
| </aside> | ||||
| 
 | ||||
| ```shell | ||||
| curl \ | ||||
|   -H 'X-Api-Key: secret' \ | ||||
|   -XDELETE \ | ||||
|   https://example.com/vieter | ||||
| ``` | ||||
| 
 | ||||
| This endpoint allows remove an entire repo. | ||||
| 
 | ||||
| ### HTTP Request | ||||
| 
 | ||||
| `DELETE /:repo` | ||||
| 
 | ||||
| ### URL Parameters | ||||
| 
 | ||||
| Parameter | Description | ||||
| --------- | ----------- | ||||
| repo | Repository to delete | ||||
|  |  | |||
|  | @ -66,3 +66,20 @@ pub fn (r &RepoGroupManager) remove_arch_repo(repo string, arch string) ?bool { | |||
| 
 | ||||
| 	return true | ||||
| } | ||||
| 
 | ||||
| // remove_repo removes a repo & its packages. | ||||
| pub fn (r &RepoGroupManager) remove_repo(repo string) ?bool { | ||||
| 	repo_dir := os.join_path_single(r.repos_dir, repo) | ||||
| 
 | ||||
| 	// If the repository doesn't exist yet, the result is automatically false | ||||
| 	if !os.exists(repo_dir) { | ||||
| 		return false | ||||
| 	} | ||||
| 
 | ||||
| 	os.rmdir_all(repo_dir)? | ||||
| 
 | ||||
| 	pkg_dir := os.join_path_single(r.pkg_dir, repo) | ||||
| 	os.rmdir_all(pkg_dir)? | ||||
| 
 | ||||
| 	return true | ||||
| } | ||||
|  |  | |||
|  | @ -57,29 +57,6 @@ fn (mut app App) get_repo_file(repo string, arch string, filename string) web.Re | |||
| 	return app.file(full_path) | ||||
| } | ||||
| 
 | ||||
| ['/:repo/:arch/:pkg'; delete] | ||||
| fn (mut app App) delete_package(repo string, arch string, pkg string) web.Result { | ||||
| 	if !app.is_authorized() { | ||||
| 		return app.json(http.Status.unauthorized, new_response('Unauthorized.')) | ||||
| 	} | ||||
| 
 | ||||
| 	res := app.repo.remove_pkg_from_arch_repo(repo, arch, pkg, true) or { | ||||
| 		app.lerror('Error while deleting package: $err.msg()') | ||||
| 
 | ||||
| 		return app.json(http.Status.internal_server_error, new_response('Failed to delete package.')) | ||||
| 	} | ||||
| 
 | ||||
| 	if res { | ||||
| 		app.linfo("Removed package '$pkg' from '$repo/$arch'") | ||||
| 
 | ||||
| 		return app.json(http.Status.ok, new_response('Package removed.')) | ||||
| 	} else { | ||||
| 		app.linfo("Tried removing package '$pkg' from '$repo/$arch', but it doesn't exist.") | ||||
| 
 | ||||
| 		return app.json(http.Status.not_found, new_response('Package not found.')) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // put_package handles publishing a package to a repository. | ||||
| ['/:repo/publish'; post] | ||||
| fn (mut app App) put_package(repo string) web.Result { | ||||
|  | @ -0,0 +1,77 @@ | |||
| module server | ||||
| 
 | ||||
| import web | ||||
| import net.http | ||||
| import response { new_response } | ||||
| 
 | ||||
| // delete_package tries to remove the given package. | ||||
| ['/:repo/:arch/:pkg'; delete] | ||||
| fn (mut app App) delete_package(repo string, arch string, pkg string) web.Result { | ||||
| 	if !app.is_authorized() { | ||||
| 		return app.json(http.Status.unauthorized, new_response('Unauthorized.')) | ||||
| 	} | ||||
| 
 | ||||
| 	res := app.repo.remove_pkg_from_arch_repo(repo, arch, pkg, true) or { | ||||
| 		app.lerror('Error while deleting package: $err.msg()') | ||||
| 
 | ||||
| 		return app.json(http.Status.internal_server_error, new_response('Failed to delete package.')) | ||||
| 	} | ||||
| 
 | ||||
| 	if res { | ||||
| 		app.linfo("Removed package '$pkg' from '$repo/$arch'") | ||||
| 
 | ||||
| 		return app.json(http.Status.ok, new_response('Package removed.')) | ||||
| 	} else { | ||||
| 		app.linfo("Tried removing package '$pkg' from '$repo/$arch', but it doesn't exist.") | ||||
| 
 | ||||
| 		return app.json(http.Status.not_found, new_response('Package not found.')) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // delete_arch_repo tries to remove the given arch-repo. | ||||
| ['/:repo/:arch'; delete] | ||||
| fn (mut app App) delete_arch_repo(repo string, arch string) web.Result { | ||||
| 	if !app.is_authorized() { | ||||
| 		return app.json(http.Status.unauthorized, new_response('Unauthorized.')) | ||||
| 	} | ||||
| 
 | ||||
| 	res := app.repo.remove_arch_repo(repo, arch) or { | ||||
| 		app.lerror('Error while deleting arch-repo: $err.msg()') | ||||
| 
 | ||||
| 		return app.json(http.Status.internal_server_error, new_response('Failed to delete arch-repo.')) | ||||
| 	} | ||||
| 
 | ||||
| 	if res { | ||||
| 		app.linfo("Removed '$repo/$arch'") | ||||
| 
 | ||||
| 		return app.json(http.Status.ok, new_response('Arch-repo removed.')) | ||||
| 	} else { | ||||
| 		app.linfo("Tried removing '$repo/$arch', but it doesn't exist.") | ||||
| 
 | ||||
| 		return app.json(http.Status.not_found, new_response('Arch-repo not found.')) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // delete_repo tries to remove the given repo. | ||||
| ['/:repo'; delete] | ||||
| fn (mut app App) delete_repo(repo string) web.Result { | ||||
| 	if !app.is_authorized() { | ||||
| 		return app.json(http.Status.unauthorized, new_response('Unauthorized.')) | ||||
| 	} | ||||
| 
 | ||||
| 	res := app.repo.remove_repo(repo) or { | ||||
| 		app.lerror('Error while deleting repo: $err.msg()') | ||||
| 
 | ||||
| 		return app.json(http.Status.internal_server_error, new_response('Failed to delete repo.')) | ||||
| 	} | ||||
| 
 | ||||
| 	if res { | ||||
| 		app.linfo("Removed '$repo'") | ||||
| 
 | ||||
| 		return app.json(http.Status.ok, new_response('Repo removed.')) | ||||
| 	} else { | ||||
| 		app.linfo("Tried removing '$repo', but it doesn't exist.") | ||||
| 
 | ||||
| 		return app.json(http.Status.not_found, new_response('Repo not found.')) | ||||
| 	} | ||||
| } | ||||
		Loading…
	
		Reference in New Issue