EscolaLMS/sdk

View on GitHub
src/services/project.ts

Summary

Maintainability
A
0 mins
Test Coverage
import request, { RequestOptionsInit } from "umi-request";
import * as API from "../types/api";
import { currentTimezone } from "../utils";

export async function addProject(
  apiUrl: string,
  token: string,
  body: API.AddProjectBody,
  options?: RequestOptionsInit
) {
  const formData = new FormData();
  Object.entries(body).forEach(([key, val]) => {
    formData.append(key, val);
  });

  return request<API.DefaultResponse<API.ProjectFile>>(
    `${apiUrl}/api/topic-project-solutions`,
    {
      method: "POST",
      headers: {
        Accept: "application/json",
        Authorization: `Bearer ${token}`,
        "Current-timezone": currentTimezone(),
      },
      data: formData,
      ...(options || {}),
    }
  );
}

export async function fetchProjects(
  apiUrl: string,
  token: string,
  { per_page, page, ...params }: API.ProjectParams,
  options?: RequestOptionsInit
) {
  return request<API.DefaultMetaResponse<API.ProjectFile>>(
    `${apiUrl}/api/topic-project-solutions`,
    {
      method: "GET",
      headers: {
        Accept: "application/json",
        "Content-Type": "application/json",
        Authorization: `Bearer ${token}`,
        "Current-timezone": currentTimezone(),
      },
      params: { per_page: per_page ?? 15, page: page ?? 1, ...params },
      ...(options || {}),
    }
  );
}
export async function removeProject(
  apiUrl: string,
  token: string,
  project_file_id: number,
  options?: RequestOptionsInit
) {
  return request<API.DefaultResponse<undefined>>(
    `${apiUrl}/api/topic-project-solutions/${project_file_id}`,
    {
      method: "DELETE",
      headers: {
        Accept: "application/json",
        "Content-Type": "application/json",
        Authorization: `Bearer ${token}`,
        "Current-timezone": currentTimezone(),
      },
      ...(options || {}),
    }
  );
}