migrate_plus-8.x-5.x-dev/tests/modules/migrate_plus_http_test/src/Controller/HttpResponses.php

tests/modules/migrate_plus_http_test/src/Controller/HttpResponses.php
<?php

namespace Drupal\migrate_plus_http_test\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Url;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

/**
 * An example controller.
 */
class HttpResponses extends ControllerBase {

  /**
   * Returns a render-able array for a test page.
   */
  public function content(): JsonResponse {

    $url = Url::fromRoute('migrate_plus_http_test.json_second', [], ['absolute' => TRUE]);

    $data = [
      "status" => "ok",
      'nextUrl' => $url->toString(),
      "data" => $this->generateRowsData(3),
    ];

    return new JsonResponse($data);
  }

  /**
   * Callback.
   */
  public function second(): JsonResponse {
    $data = [
      "status" => "ok",
      'nextUrl' => NULL,
      "data" => $this->generateRowsData(3, 4),
    ];

    return new JsonResponse($data);
  }

  /**
   * Callback.
   */
  public function third(Request $request): JsonResponse {
    $page = $request->query->get('page') ?? 0;
    $first = $page * 3 + 1;

    $data = [
      "status" => "ok",
      'currentPage' => $page,
      'numPages' => 2,
      'nextPage' => $page + 1,
      "data" => $this->generateRowsData(3, $first),
    ];

    if ($page == 2) {
      unset($data['nextPage']);
    }

    return new JsonResponse($data);
  }

  /**
   * Callback.
   */
  public function fourth(Request $request): JsonResponse {
    $page = $request->query->get('cursor') ?? 0;
    $first = $page * 3 + 1;

    $data = [
      "status" => "ok",
      'nextPage' => $page + 1,
      "data" => $this->generateRowsData(3, $first),
    ];

    if ($page == 2) {
      unset($data['nextPage']);
    }

    return new JsonResponse($data);
  }

  /**
   * Callback.
   */
  public function fifth(Request $request): JsonResponse {
    $page = $request->query->get('page') ?? 0;
    $first = $page * 3 + 1;

    $data = [
      "status" => "ok",
      'numItems' => 3,
      "data" => $this->generateRowsData(3, $first),
    ];

    if ($page == 2) {
      $data['numItems'] = 0;
      $data["data"] = [];
    }

    if ($page == 3) {
      throw new NotFoundHttpException();
    }

    return new JsonResponse($data);
  }

  /**
   * Callback.
   */
  protected function generateRowsData(int $length, int $first = 1): array {
    $data = [];
    $last = $first + $length;
    for ($i = $first; $i < $last; $i++) {
      $data[] = [
        "id" => $i,
      ];
    }

    return $data;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc