<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing

namespace MailPoet\Util;

if (!defined('ABSPATH')) exit;


class Request {
  public function isPost(): bool {
    return isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'POST' || count($_POST) > 0;
  }

  public function getStringParam(string $key): ?string {
    if ($this->isPost()) {
      return $this->getSanitizedParam($_POST, $key, 'sanitize_text_field');
    }
    return $this->getSanitizedParam($_GET, $key, 'sanitize_text_field');
  }

  public function getTextareaParam(string $key): ?string {
    if ($this->isPost()) {
      return $this->getSanitizedParam($_POST, $key, 'sanitize_textarea_field');
    }
    return $this->getSanitizedParam($_GET, $key, 'sanitize_textarea_field');
  }

  private function getSanitizedParam(array $source, string $key, callable $sanitize): ?string {
    if (!isset($source[$key]) || !is_scalar($source[$key])) {
      return null;
    }
    return $sanitize(wp_unslash((string)$source[$key]));
  }
}