159 lines
3.8 KiB
JavaScript
159 lines
3.8 KiB
JavaScript
import axios from "axios";
|
|
|
|
export const getSuperboxApiConfig = (address) => {
|
|
const PORT = 8000;
|
|
const BASE_ROUTE = "/api/v1";
|
|
const LOGIN_ROUTE = BASE_ROUTE + "/auth/login";
|
|
const LOGOUT_ROUTE = BASE_ROUTE + "/auth/logout";
|
|
const CAMERA_ROUTE = BASE_ROUTE + "/camera/cameras";
|
|
const EVENTS_ROUTE = BASE_ROUTE + "/event/events";
|
|
const ALGORITHM_ROUTE = BASE_ROUTE + "/algorithms";
|
|
|
|
let addr = address;
|
|
if (!addr) {
|
|
addr = window.location.host.replace(/:\d+/, "");
|
|
}
|
|
const superboxAddress = "http://" + addr + ":" + PORT.toString();
|
|
|
|
return {
|
|
base: superboxAddress + BASE_ROUTE,
|
|
login: superboxAddress + LOGIN_ROUTE,
|
|
logout: superboxAddress + LOGOUT_ROUTE,
|
|
cameras: superboxAddress + CAMERA_ROUTE,
|
|
events: superboxAddress + EVENTS_ROUTE,
|
|
algorithms: superboxAddress + ALGORITHM_ROUTE,
|
|
};
|
|
/*return {
|
|
base: "/api/v1",
|
|
login: "/api/v1/auth/login",
|
|
logout: "/api/v1/auth/logout",
|
|
cameras: "/api/v1/camera/cameras",
|
|
events: "/api/v1/event/events",
|
|
};*/
|
|
};
|
|
|
|
axios.defaults.withCredentials = true;
|
|
export const login = (username, password, address = null) => {
|
|
return new Promise((resolve, reject) => {
|
|
const api = getSuperboxApiConfig(address);
|
|
axios
|
|
.post(
|
|
api.login,
|
|
{
|
|
username: username,
|
|
password: password,
|
|
cookieless: false,
|
|
},
|
|
{
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
}
|
|
)
|
|
.then((res) => {
|
|
if (res.data.err.ec === 0) {
|
|
resolve(res.data.ret.token);
|
|
}
|
|
reject(res.data.err);
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
});
|
|
};
|
|
|
|
export const getCameras = (token, address = null) => {
|
|
return new Promise((resolve, reject) => {
|
|
const api = getSuperboxApiConfig(address);
|
|
axios
|
|
.get(api.cameras, {
|
|
withCredentials: true,
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
Authorization: `Bearer ${token}`,
|
|
},
|
|
})
|
|
.then((res) => {
|
|
if (res.data.err.ec === 0) {
|
|
resolve(res.data.ret.results);
|
|
}
|
|
reject(res.data.err);
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
});
|
|
};
|
|
|
|
export const getEvents = (token, address = null) => {
|
|
return new Promise((resolve, reject) => {
|
|
const api = getSuperboxApiConfig(address);
|
|
axios
|
|
.get(api.events, {
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
Authorization: `Bearer ${token}`,
|
|
},
|
|
})
|
|
.then((res) => {
|
|
if (res.data.err.ec === 0) {
|
|
resolve(res.data.ret.results);
|
|
}
|
|
reject(res.data.err);
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
});
|
|
};
|
|
|
|
export const getAlgorithms = (token, address = null) => {
|
|
return new Promise((resolve, reject) => {
|
|
const api = getSuperboxApiConfig(address);
|
|
axios
|
|
.get(api.algorithms, {
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
Authorization: `Bearer ${token}`,
|
|
},
|
|
})
|
|
.then((res) => {
|
|
if (res.data.err.ec === 0) {
|
|
resolve(res.data.ret);
|
|
}
|
|
reject(res.data.err);
|
|
})
|
|
.catch((err) => {
|
|
reject(err);
|
|
});
|
|
});
|
|
};
|
|
|
|
var codeNameMap = {};
|
|
|
|
export const initCodeNameMap = async (token, address = null) => {
|
|
try {
|
|
const algorithms = await getAlgorithms(token, address);
|
|
algorithms.forEach((algorithm) => {
|
|
codeNameMap[algorithm.code_name] = algorithm.name;
|
|
});
|
|
return true;
|
|
} catch (err) {
|
|
console.log(err);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
export const codenameTranslate = (codeName) => {
|
|
return codeNameMap[codeName];
|
|
};
|
|
|
|
export default {
|
|
login,
|
|
getCameras,
|
|
getEvents,
|
|
getSuperboxApiConfig,
|
|
initCodeNameMap,
|
|
codenameTranslate,
|
|
};
|