import Product from "../models/product"; import PhotoSet from "../models/photo_set"; import ApiError from "./error"; export default class Dichroism { _base_addr = "http://localhost:8000/"; async createPhoto(file) { const fd = new FormData(); fd.append(file.name, file); const options = { method: "POST", body: fd }; const photos = await self._sendRequest("photos", options); return photos.map(p => new PhotoSet(p)); } async getProducts() { const products = await self._sendRequest("products", null); return products.map(p => new Product(p)); } async updateProduct(fieldDiff) { const options = { method: "PATCH", body: fieldDiff }; const product = await self._sendRequest("products", options); return new Product(product); } async createProduct(newProduct) { const options = { method: "POST", body: newProduct }; const product = await self._sendRequest("products", options); return new Product(product); } async _sendRequest(endpoint, options) { const response = await fetch(self.base_addr + endpoint, options); if (response.ok) { return await response.json(); } else { return new ApiError(await response.text()); } } }