BaseApiController.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use Auth;
  4. use App\{Like, Profile, Status};
  5. use League\Fractal;
  6. use Illuminate\Http\Request;
  7. use App\Http\Controllers\Controller;
  8. use App\Util\Webfinger\Webfinger;
  9. use App\Transformer\Api\{
  10. AccountTransformer,
  11. StatusTransformer
  12. };
  13. use League\Fractal\Serializer\ArraySerializer;
  14. class BaseApiController extends Controller
  15. {
  16. protected $fractal;
  17. public function __construct()
  18. {
  19. $this->middleware('auth');
  20. $this->fractal = new Fractal\Manager();
  21. $this->fractal->setSerializer(new ArraySerializer());
  22. }
  23. public function accounts(Request $request, $id)
  24. {
  25. $profile = Profile::findOrFail($id);
  26. $resource = new Fractal\Resource\Item($profile, new AccountTransformer);
  27. $res = $this->fractal->createData($resource)->toArray();
  28. return response()->json($res, 200, [], JSON_PRETTY_PRINT);
  29. }
  30. public function accountFollowers(Request $request, $id)
  31. {
  32. $profile = Profile::findOrFail($id);
  33. $followers = $profile->followers;
  34. $resource = new Fractal\Resource\Collection($followers, new AccountTransformer);
  35. $res = $this->fractal->createData($resource)->toArray();
  36. return response()->json($res, 200, [], JSON_PRETTY_PRINT);
  37. }
  38. public function accountFollowing(Request $request, $id)
  39. {
  40. $profile = Profile::findOrFail($id);
  41. $following = $profile->following;
  42. $resource = new Fractal\Resource\Collection($following, new AccountTransformer);
  43. $res = $this->fractal->createData($resource)->toArray();
  44. return response()->json($res, 200, [], JSON_PRETTY_PRINT);
  45. }
  46. public function accountStatuses(Request $request, $id)
  47. {
  48. $profile = Profile::findOrFail($id);
  49. $statuses = $profile->statuses()->orderBy('id', 'desc')->paginate(20);
  50. $resource = new Fractal\Resource\Collection($statuses, new StatusTransformer);
  51. $res = $this->fractal->createData($resource)->toArray();
  52. return response()->json($res, 200, [], JSON_PRETTY_PRINT);
  53. }
  54. public function followSuggestions(Request $request)
  55. {
  56. $followers = Auth::user()->profile->recommendFollowers();
  57. $resource = new Fractal\Resource\Collection($followers, new AccountTransformer);
  58. $res = $this->fractal->createData($resource)->toArray();
  59. return response()->json($res);
  60. }
  61. }