# give/4.15.1/src/MigrationLog/Admin/Migrations/api.js

GiveWP – Donation Plugin and Fundraising Platform, version 4.15.1. 49 lines.

- Page: https://pluginprobe.com/plugins/give/4.15.1/code/src/MigrationLog/Admin/Migrations/api.js
- Raw: https://pluginprobe.com/plugins/give/4.15.1/raw/src/MigrationLog/Admin/Migrations/api.js
- Modified: 2021-11-23T23:55:18+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/give/4.15.1/code/src/MigrationLog/Admin/Migrations/api.js#L10-L20`.

```javascript
import axios from 'axios';
import useSWR from 'swr';

const API = axios.create({
    baseURL: window.GiveMigrations.apiRoot,
    headers: {
        'Content-Type': 'application/json',
        'X-WP-Nonce': window.GiveMigrations.apiNonce,
    },
});

export default API;

export const CancelToken = axios.CancelToken.source();

// SWR Fetcher
export const Fetcher = (endpoint) =>
    API.get(endpoint).then((res) => {
        const {data, ...rest} = res.data;
        return {
            data,
            response: rest,
        };
    });

export const useMigrationFetcher = (endpoint, params = {}) => {
    const {data, error, mutate} = useSWR(endpoint, Fetcher, params);
    return {
        data: data ? data.data : undefined,
        isLoading: !error && !data,
        isError: error,
        response: data ? data.response : undefined,
        mutate,
    };
};

// GET endpoint with additional parameters
export const getEndpoint = (endpoint, data) => {
    if (data) {
        const queryString = new URLSearchParams(data);
        // pretty url?
        const separator = window.GiveMigrations.apiRoot.indexOf('?') === -1 ? '?' : '&';

        return endpoint + separator + queryString.toString();
    }

    return endpoint;
};

```
