CollectionWriter.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace Mpociot\ApiDoc\Postman;
  3. use Ramsey\Uuid\Uuid;
  4. use Illuminate\Support\Collection;
  5. class CollectionWriter
  6. {
  7. /**
  8. * @var Collection
  9. */
  10. private $routeGroups;
  11. /**
  12. * CollectionWriter constructor.
  13. *
  14. * @param Collection $routeGroups
  15. */
  16. public function __construct(Collection $routeGroups)
  17. {
  18. $this->routeGroups = $routeGroups;
  19. }
  20. public function getCollection()
  21. {
  22. $collection = [
  23. 'variables' => [],
  24. 'info' => [
  25. 'name' => '',
  26. '_postman_id' => Uuid::uuid4()->toString(),
  27. 'description' => '',
  28. 'schema' => 'https://schema.getpostman.com/json/collection/v2.0.0/collection.json',
  29. ],
  30. 'item' => $this->routeGroups->map(function ($routes, $groupName) {
  31. return [
  32. 'name' => $groupName,
  33. 'description' => '',
  34. 'item' => $routes->map(function ($route) {
  35. $mode = $route['methods'][0] === 'PUT' ? 'urlencoded' : 'formdata';
  36. return [
  37. 'name' => $route['title'] != '' ? $route['title'] : url($route['uri']),
  38. 'request' => [
  39. 'url' => url($route['uri']),
  40. 'method' => $route['methods'][0],
  41. 'body' => [
  42. 'mode' => $mode,
  43. $mode => collect($route['bodyParameters'])->map(function ($parameter, $key) {
  44. return [
  45. 'key' => $key,
  46. 'value' => isset($parameter['value']) ? $parameter['value'] : '',
  47. 'type' => 'text',
  48. 'enabled' => true,
  49. ];
  50. })->values()->toArray(),
  51. ],
  52. 'description' => $route['description'],
  53. 'response' => [],
  54. ],
  55. ];
  56. })->toArray(),
  57. ];
  58. })->values()->toArray(),
  59. ];
  60. return json_encode($collection);
  61. }
  62. }