api.ts 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. import axios from "axios";
  2. import { apiUrl } from "@/env";
  3. import type { IUserProfile, IUserProfileUpdate, IUserProfileCreate, Video, VideoCreate, ArticleCreate, ImageDownload, VideoUploaded, YTViewsUserData, PaymentData, VideoContent } from "@/interfaces";
  4. import type { StringOptionsWithImporter } from "sass";
  5. function authHeaders(token: string) {
  6. return {
  7. headers: {
  8. Authorization: `Bearer ${token}`,
  9. },
  10. };
  11. }
  12. export const api = {
  13. async logInGetToken(username: string, password: string) {
  14. const params = new URLSearchParams();
  15. params.append("username", username);
  16. params.append("password", password);
  17. return axios.post(`${apiUrl}/api/v1/login/access-token`, params);
  18. },
  19. async qrLogInGetToken(username: string, password: string, ser_no: string) {
  20. const params = new URLSearchParams();
  21. params.append("username", username);
  22. params.append("password", password);
  23. return axios.post(`${apiUrl}/api/v1/login/access-token?add_time_code=${ser_no}`, params);
  24. },
  25. async googleLogin(username: string) {
  26. const params = new URLSearchParams();
  27. params.append("username", username);
  28. params.append("password", "google");
  29. return axios.post(`${apiUrl}/api/v1/login/google/access-token`, params);
  30. },
  31. async qrGoogleLogin(username: string, ser_no: string) {
  32. const params = new URLSearchParams();
  33. params.append("username", username);
  34. params.append("password", "google");
  35. return axios.post(`${apiUrl}/api/v1/login/google/access-token?add_time_code=${ser_no}`, params);
  36. },
  37. async qrAddTime(token: string, code: string) {
  38. return axios.get(`${apiUrl}/api/v1/ser_nos/add-time?code=${code}`, authHeaders(token));
  39. },
  40. async getMe(token: string) {
  41. return axios.get<IUserProfile>(`${apiUrl}/api/v1/users/me`, authHeaders(token));
  42. },
  43. async updateMe(token: string, data: IUserProfileUpdate) {
  44. return axios.put<IUserProfile>(
  45. `${apiUrl}/api/v1/users/me`,
  46. data,
  47. authHeaders(token),
  48. );
  49. },
  50. async getUsers(token: string) {
  51. return axios.get<IUserProfile[]>(`${apiUrl}/api/v1/users/`, authHeaders(token));
  52. },
  53. async updateUser(token: string, userId: number, data: IUserProfileUpdate) {
  54. return axios.put(`${apiUrl}/api/v1/users/${userId}`, data, authHeaders(token));
  55. },
  56. async createUser(token: string, data: IUserProfileCreate) {
  57. return axios.post(`${apiUrl}/api/v1/users/create`, data, authHeaders(token));
  58. },
  59. async passwordRecovery(email: string) {
  60. return axios.post(`${apiUrl}/api/v1/password-recovery/${email}`);
  61. },
  62. async resetPassword(token: string, password: string) {
  63. return axios.post(`${apiUrl}/api/v1/reset-password/`, {
  64. token: token,
  65. new_password: password,
  66. });
  67. },
  68. async registerUser(data: IUserProfileCreate) {
  69. return axios.post(`${apiUrl}/api/v1/users/open`, data);
  70. },
  71. async testCeleryMsg(token: string, data: { msg: string }) {
  72. return axios.post<{ msg: string }>(`${apiUrl}/api/v1/utils/test-celery/msg`, data, authHeaders(token));
  73. },
  74. async testCeleryFile(token: string, file: File) {
  75. const formData = new FormData();
  76. formData.append("file", file)
  77. return axios.post<{ msg: string }>(`${apiUrl}/api/v1/utils/test-celery/file`, formData, authHeaders(token));
  78. },
  79. async uploadPlot(token: string, video_data: VideoCreate, file: File) {
  80. const formData = new FormData();
  81. formData.append("upload_file", file)
  82. return axios.post<VideoUploaded>(`${apiUrl}/api/v1/videos/v1/?title=${video_data.title}&character_id=1&style_id=1&lang=1&voice_id=1`, formData, authHeaders(token));
  83. },
  84. // async uploadPlot(token: string, video_data: VideoCreate, file: File) {
  85. // const formData = new FormData();
  86. // formData.append("title", video_data.title)
  87. // formData.append("anchor", video_data.anchor)
  88. // formData.append("style", video_data.style)
  89. // formData.append("lang", video_data.lang)
  90. // formData.append("upload_file", file)
  91. // return axios.post<VideoUploaded>(`${apiUrl}/api/v1/videos/`, formData, authHeaders(token));
  92. // },
  93. async uploadImage(token: string, file: File[]) {
  94. const formData = new FormData();
  95. for (let i = 0; i < file.length; i++) {
  96. const element = file[i];
  97. formData.append("upload_files", element);
  98. }
  99. return axios.post<{ filenames: string[] }>(`${apiUrl}/api/v1/images/sr`, formData, authHeaders(token));
  100. },
  101. // async getImage(token: string, data: ImageDownload) {
  102. // axios({
  103. // url: `${apiUrl}/api/v1/images/sr?stored_file_name=${data.stored_file_name}&file_name=${data.file_name}`,
  104. // method: 'GET',
  105. // responseType: 'blob',
  106. // headers: {
  107. // 'Authorization': `Bearer ${token}`
  108. // },
  109. // }).then((response) => {
  110. // const href = URL.createObjectURL(response.data);
  111. // const link = document.createElement('a');
  112. // link.href = href;
  113. // link.setAttribute('download', `${data.file_name}_hr.png`);
  114. // document.body.appendChild(link);
  115. // link.click();
  116. // document.body.removeChild(link);
  117. // URL.revokeObjectURL(href);
  118. // });
  119. // },
  120. async downloadImage(token: string, data: ImageDownload) {
  121. return axios({
  122. url: `${apiUrl}/api/v1/images/sr?stored_file_name=${data.stored_file_name}&file_name=${data.file_name}`,
  123. method: 'GET',
  124. responseType: 'blob',
  125. headers: {
  126. 'Authorization': `Bearer ${token}`
  127. },
  128. }).then((response) => {
  129. return response;
  130. });
  131. },
  132. async uploadArticle(token: string, article_data: ArticleCreate) {
  133. const formData = new FormData();
  134. formData.append("title", article_data.title)
  135. formData.append("link", article_data.link)
  136. formData.append("content", article_data.content)
  137. return axios.post<{ msg: string }>(`${apiUrl}/api/v1/reputations/`, formData, authHeaders(token));
  138. },
  139. async getVideos(token: string) {
  140. return axios.get<Video[]>(`${apiUrl}/api/v1/videos/`, authHeaders(token));
  141. },
  142. async ecpayPaymentHTML(token: string, amount: number) {
  143. const formData = new FormData();
  144. formData.append("amount", amount.toString());
  145. return axios.post<string>(`${apiUrl}/api/v1/payment/ecpayTestPay`, formData, authHeaders(token))
  146. },
  147. async YTViewsPayment(user_data: YTViewsUserData, lang: string) {
  148. const config = {
  149. params: {
  150. lang: lang
  151. }
  152. };
  153. return axios.post<string>(`${apiUrl}/api/v1/payment/ytviews-ecpay-payment?lang=${lang}`, user_data);
  154. },
  155. async YTViewsTestPayment(user_data: YTViewsUserData, lang: string) {
  156. return axios.post<string>(`${apiUrl}/api/v1/payment/ytviews-ecpay-test-payment?lang=${lang}`, user_data);
  157. },
  158. async getYTViewsList() {
  159. return axios.get(`${apiUrl}/api/v1/payment/ytviews-list-all`);
  160. },
  161. async Payment(payment_data: PaymentData, token: string, lang: string) {
  162. const config = {
  163. params: {
  164. lang: lang
  165. }
  166. };
  167. return axios.post<string>(`${apiUrl}/api/v1/payment/ecpay-payment?lang=${lang}`, payment_data, authHeaders(token));
  168. },
  169. async TestPayment(payment_data: PaymentData, token: string, lang: string) {
  170. return axios.post<string>(`${apiUrl}/api/v1/payment/ecpay-test-payment?lang=${lang}`, payment_data, authHeaders(token));
  171. },
  172. async getPaymentList() {
  173. return axios.get(`${apiUrl}/api/v1/payment/list-all`);
  174. },
  175. async uploadVideoContent(content: string, file: []) {
  176. // let content = "";
  177. console.log('api content',content);
  178. console.log('api file',file);
  179. const formData = new FormData();
  180. for (let index = 0; index < file.length; index++) {
  181. const element = file[index];
  182. formData.append("input_model", element)
  183. }
  184. return axios.post(`${apiUrl}/api/v1/videos/phone_input_json?text=${content}`, formData);
  185. },
  186. };