ClientController.php 2.6 KB

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