server.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { encodeHex } from "$encoding/hex.ts";
  2. import { crypto, DigestAlgorithm } from "$crypto/mod.ts";
  3. import { setCookie, getCookies, deleteCookie } from "$http/cookie.ts";
  4. import { find } from "utils/db.ts";
  5. export async function getCryptoString(rawString: string, cryptoMethod: string) {
  6. const buffer = await crypto.subtle.digest(
  7. cryptoMethod as DigestAlgorithm,
  8. new TextEncoder().encode(rawString)
  9. );
  10. return encodeHex(buffer);
  11. }
  12. export function checkToken(req: Request) {
  13. const cookies = getCookies(req.headers);
  14. if (cookies) {
  15. const token = find(
  16. "Token",
  17. {
  18. token: cookies["pd-user-token"] || "",
  19. },
  20. ["user_id"]
  21. );
  22. if (token.length > 0) {
  23. return token[0][0] as string;
  24. }
  25. }
  26. return false;
  27. }
  28. export function setToken(res: Response, token: string) {
  29. setCookie(res.headers, {
  30. name: "pd-user-token",
  31. value: token,
  32. path: "/",
  33. });
  34. }
  35. export function clearToken(res: Response) {
  36. deleteCookie(res.headers, "pd-user-token", { path: "/" });
  37. }
  38. export function makeSuccessResponse(
  39. data:
  40. | Record<string, unknown>
  41. | Record<string, unknown>[]
  42. | string
  43. | number
  44. | boolean
  45. ) {
  46. return new Response(
  47. JSON.stringify({
  48. success: true,
  49. data: data,
  50. }),
  51. {
  52. headers: { "Content-Type": "application/json" },
  53. }
  54. );
  55. }
  56. export function makeErrorResponse() {
  57. return new Response(
  58. JSON.stringify({
  59. success: false,
  60. }),
  61. {
  62. headers: { "Content-Type": "application/json" },
  63. }
  64. );
  65. }