Home Reference Source

js/models/Request/ImgurUpload.js

import Request, { HTTPMethod } from '~/models/Request/Request';
import Data from '~/models/Data';

export const IMGUR_CLIENT_ID = Data.shared.envValueForKey('IMGUR_CLIENT_ID');
export const IMGUR_UPLOAD_HOST = 'https://api.imgur.com';
export const IMGUR_UPLOAD_ENDPOINT = '/3/image';

/**
 * Uploads to imgur
 * @extends {Request}
 */
export default class ImgurUpload extends Request {
    /**
     * Returns the URL of the new image
     * @param {Object} data
     * @return {?string}
     */
    format({ data }) {
        return data.link;
    }

    /**
     * Pass as object
     * @param {string} url - URL of imgur thing to upload
     * @param {File} file - File object to upload
     */
    constructor({ url, file } = {}) {
        let data = new FormData();

        if (url) {
            data.append('image', url);
            data.append('type', 'URL');
        }

        if (file) {
            data.append('image', file);
            data.append('type', 'file');
        }

        super({
            host: IMGUR_UPLOAD_HOST,
            path: IMGUR_UPLOAD_ENDPOINT,
            method: HTTPMethod.POST,
            auth: `Client-ID ${IMGUR_CLIENT_ID}`,
            data: data
        });
    }
}