Added data download ability

This commit is contained in:
2023-02-19 21:10:00 +00:00
parent 48f080de7c
commit c850726f91
64 changed files with 12734 additions and 2 deletions

View File

@@ -0,0 +1,33 @@
export const login = async (email: string, password: string) => {
const response = await fetch(`${process.env.REACT_APP_API_URL}/auth/login`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
email,
password,
}),
});
if (!response.ok) {
throw new Error("Login failed");
}
const data = await response.json();
// save access token to local storage
localStorage.setItem("accessToken", data.access_token);
localStorage.setItem("refresh_token", data.refresh_token);
// calculate expiration date
const expirationDate = new Date(
new Date().getTime() + data.access_token_expiry * 1000
);
// save expiration date to local storage
localStorage.setItem("expirationDate", expirationDate.toISOString());
return data;
};

View File

@@ -0,0 +1,91 @@
const getSigns = async () => {
// get access token from local storage
const token = localStorage.getItem('accessToken');
// make request to get signs
const response = await fetch(`${process.env.REACT_APP_API_URL}/signs/`, {
headers: {
Authorization: `Bearer ${token}`
}
});
// return the response
return response.json();
};
const addSign = async (url: string) => {
// get access token from local storage
const token = localStorage.getItem('accessToken');
// make request to add sign
const response = await fetch(`${process.env.REACT_APP_API_URL}/signs/`, {
method: 'POST',
headers: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ "url": url })
});
if (!response.ok) {
throw new Error("Invalid url or sign already exists");
}
// return the response
return response.json();
};
const getSign = async (id: number) => {
// get access token from local storage
const token = localStorage.getItem('accessToken');
// make request to get sign
const response = await fetch(`${process.env.REACT_APP_API_URL}/signs/${id}`, {
headers: {
Authorization: `Bearer ${token}`
}
});
if (!response.ok) {
throw new Error("Sign not found");
}
// return the response
return response.json();
};
const downloadSigns = async () => {
// get access token from local storage
const token = localStorage.getItem('accessToken');
// make request to download signs
const response = await fetch(`${process.env.REACT_APP_API_URL}/signs/download/all`, {
headers: {
Authorization: `Bearer ${token}`
}
});
if (!response.ok) {
throw new Error("Something went wrong");
}
// return the response
return response.blob();
};
const deleteSign = async (id: number) => {
// get access token from local storage
const token = localStorage.getItem('accessToken');
// make request to delete sign
const response = await fetch(`${process.env.REACT_APP_API_URL}/signs/${id}`, {
method: 'DELETE',
headers: {
Authorization: `Bearer ${token}`
}
});
if (!response.ok) {
throw new Error("Sign not found");
}
// return the response
return response.json();
};
export { addSign, getSigns, getSign, downloadSigns, deleteSign };

View File

@@ -0,0 +1,94 @@
import axios from 'axios';
const uploadSignVideo = async (id: number, recordedBlob: Blob, onUploadProgress: ((arg0: number) => void)) => {
// get access token from local storage
const token = localStorage.getItem('accessToken');
let formData = new FormData();
formData.append('video', recordedBlob);
// make request to get signs
const response = await axios.post(`${process.env.REACT_APP_API_URL}/signs/${id}/video/`, formData, {
headers: {
Authorization: `Bearer ${token}`,
ContentType: 'multipart/form-data',
},
onUploadProgress: (progressEvent) => {
onUploadProgress(
Math.round((progressEvent.loaded * 100) / (progressEvent.total || 1))
);
}
});
// return the response
return response.data;
};
const getThumbail = async (sign_id: number, video_id: number) => {
// get access token from local storage
const token = localStorage.getItem('accessToken');
// make request to get signs
const response = await axios.get(`${process.env.REACT_APP_API_URL}/signs/${sign_id}/video/${video_id}/thumbnail/`, {
headers: {
Authorization: `Bearer ${token}`,
},
// response blob
responseType: 'blob'
});
// return the response
console.log(response)
return response.data;
};
const getVideo = async (sign_id: number, video_id: number) => {
// get access token from local storage
const token = localStorage.getItem('accessToken');
// make request to get signs
const response = await axios.get(`${process.env.REACT_APP_API_URL}/signs/${sign_id}/video/${video_id}/`, {
headers: {
Authorization: `Bearer ${token}`,
},
// response blob
responseType: 'blob'
});
// return the response
return response.data;
};
const acceptVideo = async (sign_id: number, video_id: number, approved: boolean = false) => {
// get access token from local storage
const token = localStorage.getItem('accessToken');
// make request to get signs
const response = await axios.patch(`${process.env.REACT_APP_API_URL}/signs/${sign_id}/video/${video_id}/`, { "approved": approved }, {
headers: {
Authorization: `Bearer ${token}`,
"Access-Control-Allow-Methods": '*',
},
});
// return the response
return response.data;
};
const deleteVideo = async (sign_id: number, video_id: number) => {
// get access token from local storage
const token = localStorage.getItem('accessToken');
// make request to get signs
const response = await axios.delete(`${process.env.REACT_APP_API_URL}/signs/${sign_id}/video/${video_id}/`, {
headers: {
Authorization: `Bearer ${token}`,
},
});
// return the response
return response.data;
};
export { uploadSignVideo, getThumbail, getVideo, acceptVideo, deleteVideo };