123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- const axios = require('axios')
- var toBlob = require('data-uri-to-blob')
- var db = require('./db.js')
- var currentPage = null
- var configFile = require('./.config.js')
- const setCurrentPage = function (value) {
- //set current page on the script so that api calls may notify user of errors
- //using quasar notification framework
- currentPage = value
- }
- const apiHostname = configFile.apiHostname
- // const apiHostname = 'http://66.228.50.176:80/'
- const apiPath = apiHostname + 'api/scanapp/'
- const login = function (path, data) {
- var options = {
- url: apiHostname + path,
- method: 'POST',
- data: data
- }
- return axios(options)
- }
- const register = function (data) {
- var options = {
- url: apiHostname + 'rest-auth/registration/',
- method: 'POST',
- data: data
- }
- return axios(options)
- }
- const prepare = function (url, method, payload, locale, token) {
- // All requests pass through here except the login request
- var options = {
- method: method,
- data: payload,
- headers: {
- 'Authorization': token
- }
- }
- options.url = apiHostname + url.replace('{LANG}', locale)
- return new Promise((resolve, reject) => {
- axios(options)
- .then((data) => resolve(data))
- .catch((err => {
- if (err.response) {
- if (err.response.status === 401) {
- currentPage.$q.notify('Authorization error, Redirecting to login page')
- currentPage.$router.push('/login')
- }
- else {
- reject(err)
- }
- }
- }))
- })
- }
- const configure = function (endpoint, method, payload) {
- // This add saved authentication data and locale to the request
- return db.getLang().then(langData => {
- return db.getToken().then(tokenData => prepare(endpoint, method, payload, langData.lang, tokenData.token))
- })
- }
- var get = function (url){
- return configure(url, 'get', {})
- }
- var getAndSaveList = function (url) {
- // All list request to the server pass through here
- return new Promise((resolve, reject) => {
- configure(url, 'get', {})
- .then((result) => {
- db.saveData(url + '.list', result.data)
- .then((data) => { resolve(result.data) })
- .catch((err) => { })
- })
- .catch(err => { })
- window.setTimeout(() => {
- db.getData(url + '.list')
- .then((data => { resolve(data) }))
- }, 5000)
- })
- }
- var getAndSaveDetail = function (url) {
- return new Promise((resolve, reject) => {
- configure(url, 'get', {})
- .catch(err => { })
- .then(result => {
- db.saveData(url + '.detail', result.data)
- .then(data => { resolve(result.data) })
- .catch(err => { reject(err) })
- })
- window.setTimeout(() => {
- db.getData(url + '.detail')
- .then((data) => { resolve(data) })
- }, 5000)
- })
- }
- var create = function (url, data) {
- return configure(url, 'post', data)
- }
- var uploadImage = function (id, name, image) {
- var formData = new FormData()
- formData.append('name', name)
- formData.append('image', toBlob(image))
- formData.append('product', Number(id))
- return create('scanapp/{LANG}/product_pictures/', formData)
- }
- export {
- get,
- getAndSaveList,
- getAndSaveDetail,
- apiHostname,
- uploadImage,
- create,
- login,
- register,
- setCurrentPage
- }
|