48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
import { ScanFactory } from './factories/scanFactory.js'
|
|
import { userService } from './userService.js'
|
|
|
|
export const uploadService = {
|
|
async scan(file) {
|
|
const config = useRuntimeConfig()
|
|
const form = new FormData()
|
|
form.append('file', file)
|
|
|
|
const token = userService.getToken()
|
|
const res = await fetch(`${config.public.apiBase}/api/scan`, {
|
|
method: 'POST',
|
|
headers: token ? { Authorization: `Bearer ${token}` } : {},
|
|
body: form,
|
|
})
|
|
|
|
if (!res.ok) {
|
|
const err = await res.json().catch(() => ({ message: 'Scan failed. Please try again.' }))
|
|
throw new Error(err.message || 'Scan failed.')
|
|
}
|
|
|
|
const data = await res.json()
|
|
return ScanFactory.fromApiResponse(data)
|
|
},
|
|
|
|
async convert(sessionId, filename = 'idconvert_export.json') {
|
|
const config = useRuntimeConfig()
|
|
const token = userService.getToken()
|
|
|
|
const res = await fetch(`${config.public.apiBase}/api/convert`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
|
},
|
|
body: JSON.stringify({ session_id: sessionId, filename }),
|
|
})
|
|
|
|
if (!res.ok) {
|
|
const err = await res.json().catch(() => ({ message: 'Conversion failed. Please try again.' }))
|
|
if (err.error === 'INSUFFICIENT_CREDITS') throw new Error('INSUFFICIENT_CREDITS')
|
|
throw new Error(err.message || 'Conversion failed.')
|
|
}
|
|
|
|
return res.json()
|
|
},
|
|
}
|