add frontend apikey service

This commit is contained in:
rubikscraft
2022-09-03 15:41:56 +02:00
parent 47dd528778
commit bfbc6fc8e3
2 changed files with 75 additions and 0 deletions

View File

@@ -78,6 +78,13 @@ export class ApiService {
});
}
public async postEmpty<T extends z.AnyZodObject>(
type: ZodDtoStatic<T>,
url: string,
): AsyncFailable<z.infer<T>> {
return this.fetchSafeJson(type, url, { method: 'POST' });
}
public async postForm<T extends z.AnyZodObject>(
receiveType: ZodDtoStatic<T>,
url: string,

View File

@@ -0,0 +1,68 @@
import { Injectable } from '@angular/core';
import {
ApiKeyCreateResponse,
ApiKeyDeleteRequest,
ApiKeyDeleteResponse,
ApiKeyInfoRequest,
ApiKeyInfoResponse,
ApiKeyListRequest,
ApiKeyListResponse
} from 'picsur-shared/dist/dto/api/apikeys.dto';
import { EApiKey } from 'picsur-shared/dist/entities/apikey.entity';
import { AsyncFailable, Open } from 'picsur-shared/dist/types';
import { ApiService } from './api.service';
@Injectable({
providedIn: 'root',
})
export class ApiKeysService {
constructor(private readonly api: ApiService) {}
public async getApiKeys(
count: number,
page: number,
userID?: string,
): AsyncFailable<EApiKey[]> {
const response = await this.api.post(
ApiKeyListRequest,
ApiKeyListResponse,
'/api/apikeys/list',
{
count,
page,
user_id: userID,
},
);
return Open(response, 'results');
}
public async getApiKey(key: string): AsyncFailable<EApiKey> {
return await this.api.post(
ApiKeyInfoRequest,
ApiKeyInfoResponse,
'/api/apikeys/info',
{
key,
},
);
}
public async createApiKey(): AsyncFailable<EApiKey> {
return await this.api.postEmpty(
ApiKeyCreateResponse,
'/api/apikeys/create',
);
}
public async deleteApiKey(key: string): AsyncFailable<EApiKey> {
return await this.api.post(
ApiKeyDeleteRequest,
ApiKeyDeleteResponse,
'/api/apikeys/delete',
{
key,
},
);
}
}