All files / src/apps/sources api.ts

14.29% Statements 1/7
0% Branches 0/8
0% Functions 0/6
14.29% Lines 1/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70                      1x                                                                                                                    
import {
  EditableSourceFields,
  NewAPISource,
  SourceVersion,
  APISourceVersion
} from "./types";
import { authenticatedInstance, unAuthenticatedInstance } from "../../api";
import { AxiosResponse } from "axios";
import { buildPartialSearchQuery } from "../../utils";
import { default as containerAPI } from "../containers/api";
 
const api = {
  ...containerAPI,
  create: (ownerUrl: string, data: NewAPISource) =>
    authenticatedInstance.post(`${ownerUrl}sources/`, data),
  update: (sourceUrl: string, data: EditableSourceFields) =>
    authenticatedInstance.put(sourceUrl, data),
  sources: {
    retrieve: {
      private: (
        sourcesUrl: string,
        q: string = "",
        limit = 20,
        page = 1,
        verbose = true
      ) =>
        authenticatedInstance.get(sourcesUrl, {
          params: {
            limit,
            page,
            verbose: true,
            q: buildPartialSearchQuery(q),
            timestamp: new Date().getTime() // work around seemingly unhelpful caching
          }
        }),
      public: (
        sourcesUrl: string,
        q: string = "",
        limit = 20,
        page = 1,
        verbose = true
      ) =>
        unAuthenticatedInstance.get(sourcesUrl, {
          params: {
            limit,
            page,
            verbose: true,
            q: buildPartialSearchQuery(q),
            timestamp: new Date().getTime() // work around seemingly unhelpful caching
          }
        })
    }
  },
  versions: {
    ...containerAPI.versions,
    create: (
      sourceUrl: string,
      data: SourceVersion
    ): Promise<AxiosResponse<APISourceVersion>> =>
      authenticatedInstance.post(`${sourceUrl}versions/`, data),
    update: (
      sourceUrl: string,
      data: SourceVersion
    ): Promise<AxiosResponse<APISourceVersion>> =>
      authenticatedInstance.put(`${sourceUrl}${data.id}/`, data)
  }
};
 
export default api;