mirror of
				https://github.com/simon987/task_tracker.git
				synced 2025-10-30 23:46:52 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			139 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
		
			Executable File
		
	
	
	
	
| import {Injectable} from '@angular/core';
 | |
| import {HttpClient} from '@angular/common/http';
 | |
| import {Project} from './models/project';
 | |
| import {Credentials} from './models/credentials';
 | |
| 
 | |
| @Injectable()
 | |
| export class ApiService {
 | |
| 
 | |
|     public url: string = window.location.protocol + '//' + window.location.host + '/api';
 | |
|     private options: {
 | |
|         withCredentials: true,
 | |
|         responseType: 'json'
 | |
|     };
 | |
| 
 | |
|     constructor(
 | |
|         private http: HttpClient,
 | |
|     ) {
 | |
|     }
 | |
| 
 | |
|     getLogs(level: number) {
 | |
|         return this.http.post(this.url + '/logs', {level: level, since: 1}, this.options);
 | |
|     }
 | |
| 
 | |
|     getProjects() {
 | |
|         return this.http.get(this.url + '/project/list', this.options);
 | |
|     }
 | |
| 
 | |
|     getProject(id: number) {
 | |
|         return this.http.get(this.url + '/project/get/' + id, this.options);
 | |
|     }
 | |
| 
 | |
|     createProject(project: Project) {
 | |
|         return this.http.post(this.url + '/project/create', project, this.options);
 | |
|     }
 | |
| 
 | |
|     updateProject(project: Project) {
 | |
|         return this.http.post(this.url + '/project/update/' + project.id, project, this.options);
 | |
|     }
 | |
| 
 | |
|     register(credentials: Credentials) {
 | |
|         return this.http.post(this.url + '/register', credentials, this.options);
 | |
|     }
 | |
| 
 | |
|     login(credentials: Credentials) {
 | |
|         return this.http.post(this.url + '/login', credentials, this.options);
 | |
|     }
 | |
| 
 | |
|     logout() {
 | |
|         return this.http.get(this.url + '/logout', this.options);
 | |
|     }
 | |
| 
 | |
|     getAccountDetails() {
 | |
|         return this.http.get(this.url + '/account', this.options);
 | |
|     }
 | |
| 
 | |
|     getMonitoringSnapshots(count: number, project: number) {
 | |
|         return this.http.get(this.url + `/project/monitoring/${project}?count=${count}`, this.options);
 | |
|     }
 | |
| 
 | |
|     getAssigneeStats(project: number) {
 | |
|         return this.http.get(this.url + `/project/assignees/${project}`, this.options);
 | |
|     }
 | |
| 
 | |
|     getWorkerStats() {
 | |
|         return this.http.get(this.url + `/worker/stats`, this.options);
 | |
|     }
 | |
| 
 | |
|     getProjectAccess(project: number) {
 | |
|         return this.http.get(this.url + `/project/access_list/${project}`, this.options);
 | |
|     }
 | |
| 
 | |
|     getManagerList() {
 | |
|         return this.http.get(this.url + '/manager/list', this.options);
 | |
|     }
 | |
| 
 | |
|     getManagerListWithRoleOn(project: number) {
 | |
|         return this.http.get(this.url + '/manager/list_for_project/' + project, this.options);
 | |
|     }
 | |
| 
 | |
|     promote(managerId: number) {
 | |
|         return this.http.get(this.url + `/manager/promote/${managerId}`, this.options);
 | |
|     }
 | |
| 
 | |
|     demote(managerId: number) {
 | |
|         return this.http.get(this.url + `/manager/demote/${managerId}`, this.options);
 | |
|     }
 | |
| 
 | |
|     acceptWorkerAccessRequest(wid: number, pid: number) {
 | |
|         return this.http.post(this.url + `/project/accept_request/${pid}/${wid}`, null, this.options);
 | |
|     }
 | |
| 
 | |
|     rejectWorkerAccessRequest(wid: number, pid: number) {
 | |
|         return this.http.post(this.url + `/project/reject_request/${pid}/${wid}`, null, this.options);
 | |
|     }
 | |
| 
 | |
|     setManagerRoleOnProject(pid: number, role: number, manager: number) {
 | |
|         return this.http.post(this.url + `/manager/set_role_for_project/${pid}`,
 | |
|             {'role': role, 'manager': manager}, this.options);
 | |
|     }
 | |
| 
 | |
|     getSecret(pid: number) {
 | |
|         return this.http.get(this.url + `/project/secret/${pid}`, this.options);
 | |
|     }
 | |
| 
 | |
|     setSecret(pid: number, secret: string) {
 | |
|         return this.http.post(this.url + `/project/secret/${pid}`, {'secret': secret}, this.options);
 | |
|     }
 | |
| 
 | |
|     getWebhookSecret(pid: number) {
 | |
|         return this.http.get(this.url + `/project/webhook_secret/${pid}`, this.options);
 | |
|     }
 | |
| 
 | |
|     setWebhookSecret(pid: number, secret: string) {
 | |
|         return this.http.post(this.url + `/project/webhook_secret/${pid}`, {'webhook_secret': secret}, this.options);
 | |
|     }
 | |
| 
 | |
|     resetFailedTasks(pid: number) {
 | |
|         return this.http.post(this.url + `/project/reset_failed_tasks/${pid}`, null, this.options);
 | |
|     }
 | |
| 
 | |
|     hardReset(pid: number) {
 | |
|         return this.http.post(this.url + `/project/hard_reset/${pid}`, null, this.options);
 | |
|     }
 | |
| 
 | |
|     reclaimAssignedTasks(pid: number) {
 | |
|         return this.http.post(this.url + `/project/reclaim_assigned_tasks/${pid}`, null, this.options);
 | |
|     }
 | |
| 
 | |
|     workerSetPaused(wid: number, paused: boolean) {
 | |
|         return this.http.post(this.url + '/worker/set_paused',
 | |
|             {'worker': wid, 'paused': paused}, this.options);
 | |
|     }
 | |
| 
 | |
|     getWorker(wid: number) {
 | |
|         return this.http.get(this.url + `/worker/get/${wid}`, this.options);
 | |
|     }
 | |
| 
 | |
| }
 |