From 2431e4802fbb04cf04a73aacbe26c43cd1dbe165 Mon Sep 17 00:00:00 2001 From: Angelo Magtoto <19201.magtoto.angelo.l@gmail.com> Date: Sat, 8 Oct 2022 22:09:42 +0800 Subject: [PATCH] intrn(front): semester fetcher --- common_front-end/fetchers/semester.ts | 54 +++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 common_front-end/fetchers/semester.ts diff --git a/common_front-end/fetchers/semester.ts b/common_front-end/fetchers/semester.ts new file mode 100644 index 000000000..48faa73a5 --- /dev/null +++ b/common_front-end/fetchers/semester.ts @@ -0,0 +1,54 @@ +import { JSON_API_MEDIA_TYPE } from "$/types/server" +import type { Response } from "$@/types/independent" +import type { + SemesterResourceIdentifier, + SemesterAttributes, + SemesterResource, + DeserializedSemesterResource, + SemesterDocument, + SemesterListDocument, + DeserializedSemesterDocument, + DeserializedSemesterListDocument +} from "$/types/documents/semester" + +import { SEMESTER_LINK } from "$/constants/template_links" + +import BaseFetcher from "$@/fetchers/base" + +export default class SemesterFetcher extends BaseFetcher< + SemesterResourceIdentifier<"read">, + SemesterAttributes<"serialized">, + SemesterAttributes<"deserialized">, + SemesterResource, + DeserializedSemesterResource, + SemesterDocument, + SemesterListDocument, + DeserializedSemesterDocument, + DeserializedSemesterListDocument +> { + constructor() { + super(SEMESTER_LINK) + } + + async createWithFile(details: FormData): Promise, + SemesterAttributes<"serialized">, + SemesterAttributes<"deserialized">, + SemesterResource, + DeserializedSemesterResource, + DeserializedSemesterDocument + >> { + const headers = new Headers({ "Accept": JSON_API_MEDIA_TYPE }) + + return await this.handleResponse( + this.postTo(this.links.unbound, details, headers) + ) as Response< + SemesterResourceIdentifier<"read">, + SemesterAttributes<"serialized">, + SemesterAttributes<"deserialized">, + SemesterResource, + DeserializedSemesterResource, + DeserializedSemesterDocument + > + } +}