<?php

namespace Drupal\user_provisioning\ProviderSpecific\ResponseProcessor;

use Psr\Http\Message\ResponseInterface;

/**
 * Defines response processors for user provisioning resource APIs.
 */
interface moResourceResponseProcessorInterface {

  /**
   * Processes GET responses.
   *
   * @param \Psr\Http\Message\ResponseInterface $response
   *   The HTTP response returned by the provider.
   *
   * @return mixed
   *   The processed response payload.
   */
  public function get(ResponseInterface $response);

  /**
   * Processes POST responses.
   *
   * @param \Psr\Http\Message\ResponseInterface $response
   *   The HTTP response returned by the provider.
   *
   * @return mixed
   *   The processed response payload.
   */
  public function post(ResponseInterface $response);

  /**
   * Processes PATCH responses.
   *
   * @param \Psr\Http\Message\ResponseInterface $response
   *   The HTTP response returned by the provider.
   *
   * @return mixed
   *   The processed response payload.
   */
  public function patch(ResponseInterface $response);

  /**
   * Processes PUT responses.
   *
   * @param \Psr\Http\Message\ResponseInterface $response
   *   The HTTP response returned by the provider.
   *
   * @return mixed
   *   The processed response payload.
   */
  public function put(ResponseInterface $response);

  /**
   * Processes DELETE responses.
   *
   * @param \Psr\Http\Message\ResponseInterface $response
   *   The HTTP response returned by the provider.
   *
   * @return mixed
   *   The processed response payload.
   */
  public function delete(ResponseInterface $response);

  /**
   * Processes deactivation responses.
   *
   * @param \Psr\Http\Message\ResponseInterface $response
   *   The HTTP response returned by the provider.
   *
   * @return mixed
   *   The processed response payload.
   */
  public function deactivate(ResponseInterface $response);

}
