Spaces:
Paused
Paused
| import { WEBUI_API_BASE_URL } from '$lib/constants'; | |
| import { splitStream } from '$lib/utils'; | |
| export const uploadFile = async (token: string, file: File, metadata?: object | null) => { | |
| const data = new FormData(); | |
| data.append('file', file); | |
| if (metadata) { | |
| data.append('metadata', JSON.stringify(metadata)); | |
| } | |
| let error = null; | |
| const res = await fetch(`${WEBUI_API_BASE_URL}/files/`, { | |
| method: 'POST', | |
| headers: { | |
| Accept: 'application/json', | |
| authorization: `Bearer ${token}` | |
| }, | |
| body: data | |
| }) | |
| .then(async (res) => { | |
| if (!res.ok) throw await res.json(); | |
| return res.json(); | |
| }) | |
| .catch((err) => { | |
| error = err.detail || err.message; | |
| console.error(err); | |
| return null; | |
| }); | |
| if (error) { | |
| throw error; | |
| } | |
| if (res) { | |
| const status = await getFileProcessStatus(token, res.id); | |
| if (status && status.ok) { | |
| const reader = status.body | |
| .pipeThrough(new TextDecoderStream()) | |
| .pipeThrough(splitStream('\n')) | |
| .getReader(); | |
| while (true) { | |
| const { value, done } = await reader.read(); | |
| if (done) { | |
| break; | |
| } | |
| try { | |
| let lines = value.split('\n'); | |
| for (const line of lines) { | |
| if (line !== '') { | |
| console.log(line); | |
| if (line === 'data: [DONE]') { | |
| console.log(line); | |
| } else { | |
| let data = JSON.parse(line.replace(/^data: /, '')); | |
| console.log(data); | |
| if (data?.error) { | |
| console.error(data.error); | |
| res.error = data.error; | |
| } | |
| if (res?.data) { | |
| res.data = data; | |
| } | |
| } | |
| } | |
| } | |
| } catch (error) { | |
| console.log(error); | |
| } | |
| } | |
| } | |
| } | |
| if (error) { | |
| throw error; | |
| } | |
| return res; | |
| }; | |
| export const getFileProcessStatus = async (token: string, id: string) => { | |
| const queryParams = new URLSearchParams(); | |
| queryParams.append('stream', 'true'); | |
| let error = null; | |
| const res = await fetch(`${WEBUI_API_BASE_URL}/files/${id}/process/status?${queryParams}`, { | |
| method: 'GET', | |
| headers: { | |
| Accept: 'application/json', | |
| authorization: `Bearer ${token}` | |
| } | |
| }).catch((err) => { | |
| error = err.detail; | |
| console.error(err); | |
| return null; | |
| }); | |
| if (error) { | |
| throw error; | |
| } | |
| return res; | |
| }; | |
| export const uploadDir = async (token: string) => { | |
| let error = null; | |
| const res = await fetch(`${WEBUI_API_BASE_URL}/files/upload/dir`, { | |
| method: 'POST', | |
| headers: { | |
| Accept: 'application/json', | |
| authorization: `Bearer ${token}` | |
| } | |
| }) | |
| .then(async (res) => { | |
| if (!res.ok) throw await res.json(); | |
| return res.json(); | |
| }) | |
| .catch((err) => { | |
| error = err.detail; | |
| return null; | |
| }); | |
| if (error) { | |
| throw error; | |
| } | |
| return res; | |
| }; | |
| export const getFiles = async (token: string = '') => { | |
| let error = null; | |
| const res = await fetch(`${WEBUI_API_BASE_URL}/files/`, { | |
| method: 'GET', | |
| headers: { | |
| Accept: 'application/json', | |
| 'Content-Type': 'application/json', | |
| authorization: `Bearer ${token}` | |
| } | |
| }) | |
| .then(async (res) => { | |
| if (!res.ok) throw await res.json(); | |
| return res.json(); | |
| }) | |
| .then((json) => { | |
| return json; | |
| }) | |
| .catch((err) => { | |
| error = err.detail; | |
| console.error(err); | |
| return null; | |
| }); | |
| if (error) { | |
| throw error; | |
| } | |
| return res; | |
| }; | |
| export const getFileById = async (token: string, id: string) => { | |
| let error = null; | |
| const res = await fetch(`${WEBUI_API_BASE_URL}/files/${id}`, { | |
| method: 'GET', | |
| headers: { | |
| Accept: 'application/json', | |
| 'Content-Type': 'application/json', | |
| authorization: `Bearer ${token}` | |
| } | |
| }) | |
| .then(async (res) => { | |
| if (!res.ok) throw await res.json(); | |
| return res.json(); | |
| }) | |
| .then((json) => { | |
| return json; | |
| }) | |
| .catch((err) => { | |
| error = err.detail; | |
| console.error(err); | |
| return null; | |
| }); | |
| if (error) { | |
| throw error; | |
| } | |
| return res; | |
| }; | |
| export const updateFileDataContentById = async (token: string, id: string, content: string) => { | |
| let error = null; | |
| const res = await fetch(`${WEBUI_API_BASE_URL}/files/${id}/data/content/update`, { | |
| method: 'POST', | |
| headers: { | |
| Accept: 'application/json', | |
| 'Content-Type': 'application/json', | |
| authorization: `Bearer ${token}` | |
| }, | |
| body: JSON.stringify({ | |
| content: content | |
| }) | |
| }) | |
| .then(async (res) => { | |
| if (!res.ok) throw await res.json(); | |
| return res.json(); | |
| }) | |
| .then((json) => { | |
| return json; | |
| }) | |
| .catch((err) => { | |
| error = err.detail; | |
| console.error(err); | |
| return null; | |
| }); | |
| if (error) { | |
| throw error; | |
| } | |
| return res; | |
| }; | |
| export const getFileContentById = async (id: string) => { | |
| let error = null; | |
| const res = await fetch(`${WEBUI_API_BASE_URL}/files/${id}/content`, { | |
| method: 'GET', | |
| headers: { | |
| Accept: 'application/json' | |
| }, | |
| credentials: 'include' | |
| }) | |
| .then(async (res) => { | |
| if (!res.ok) throw await res.json(); | |
| return await res.blob(); | |
| }) | |
| .catch((err) => { | |
| error = err.detail; | |
| console.error(err); | |
| return null; | |
| }); | |
| if (error) { | |
| throw error; | |
| } | |
| return res; | |
| }; | |
| export const deleteFileById = async (token: string, id: string) => { | |
| let error = null; | |
| const res = await fetch(`${WEBUI_API_BASE_URL}/files/${id}`, { | |
| method: 'DELETE', | |
| headers: { | |
| Accept: 'application/json', | |
| 'Content-Type': 'application/json', | |
| authorization: `Bearer ${token}` | |
| } | |
| }) | |
| .then(async (res) => { | |
| if (!res.ok) throw await res.json(); | |
| return res.json(); | |
| }) | |
| .then((json) => { | |
| return json; | |
| }) | |
| .catch((err) => { | |
| error = err.detail; | |
| console.error(err); | |
| return null; | |
| }); | |
| if (error) { | |
| throw error; | |
| } | |
| return res; | |
| }; | |
| export const deleteAllFiles = async (token: string) => { | |
| let error = null; | |
| const res = await fetch(`${WEBUI_API_BASE_URL}/files/all`, { | |
| method: 'DELETE', | |
| headers: { | |
| Accept: 'application/json', | |
| 'Content-Type': 'application/json', | |
| authorization: `Bearer ${token}` | |
| } | |
| }) | |
| .then(async (res) => { | |
| if (!res.ok) throw await res.json(); | |
| return res.json(); | |
| }) | |
| .then((json) => { | |
| return json; | |
| }) | |
| .catch((err) => { | |
| error = err.detail; | |
| console.error(err); | |
| return null; | |
| }); | |
| if (error) { | |
| throw error; | |
| } | |
| return res; | |
| }; | |