ClientController.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Controllers;
  3. use App\Database\Queries\UserQuery;
  4. use Psr\Http\Message\ResponseInterface as Response;
  5. use Psr\Http\Message\ServerRequestInterface as Request;
  6. class ClientController extends Controller
  7. {
  8. /**
  9. * @param Request $request
  10. * @param Response $response
  11. * @param int $id
  12. *
  13. * @return Response
  14. */
  15. public function getShareXConfig(Request $request, Response $response, int $id): Response
  16. {
  17. $user = make(UserQuery::class)->get($request, $id, true);
  18. if ($user->token === null || $user->token === '') {
  19. $this->session->alert(lang('no_upload_token'), 'danger');
  20. return redirect($response, $request->getHeaderLine('Referer'));
  21. }
  22. $json = [
  23. 'DestinationType' => 'ImageUploader, TextUploader, FileUploader',
  24. 'RequestURL' => route('upload'),
  25. 'FileFormName' => 'upload',
  26. 'Arguments' => [
  27. 'file' => '$filename$',
  28. 'text' => '$input$',
  29. 'token' => $user->token,
  30. ],
  31. 'URL' => '$json:url$',
  32. 'ThumbnailURL' => '$json:url$/raw',
  33. 'DeletionURL' => '$json:url$/delete/'.$user->token,
  34. ];
  35. return json($response, $json, 200, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
  36. ->withHeader('Content-Disposition', 'attachment;filename="'.$user->username.'-ShareX.sxcu"');
  37. }
  38. /**
  39. * @param Request $request
  40. * @param Response $response
  41. * @param int $id
  42. *
  43. * @return Response
  44. * @throws \Twig\Error\LoaderError
  45. * @throws \Twig\Error\RuntimeError
  46. * @throws \Twig\Error\SyntaxError
  47. */
  48. public function getBashScript(Request $request, Response $response, int $id): Response
  49. {
  50. $user = make(UserQuery::class)->get($request, $id, true);
  51. if ($user->token === null || $user->token === '') {
  52. $this->session->alert(lang('no_upload_token'), 'danger');
  53. return redirect($response, $request->getHeaderLine('Referer'));
  54. }
  55. return view()->render($response->withHeader('Content-Disposition', 'attachment;filename="xbackbone_uploader_'.$user->username.'.sh"'),
  56. 'scripts/xbackbone_uploader.sh.twig',
  57. [
  58. 'username' => $user->username,
  59. 'upload_url' => route('upload'),
  60. 'token' => $user->token,
  61. ]
  62. );
  63. }
  64. }