Symfony 5 - A problem with package HTTP-Client (NativeHttpClient)

1.1k Views Asked by At

I have an error that I don't understand.

I'm trying to validate the creation of a MangoPay account and I'm using the Http-Client package for the APIs (I've also installed MangoPay's package).

When I try to create one, this error shows up:

Unsupported option "0" passed to "Symfony\Component\HttpClient\NativeHttpClient", did you mean "auth_basic", "auth_bearer", "query", "headers", "body", "json", "user_data", "max_redirects", "http_version", "base_uri", "buffer", "on_progress", "resolve", "proxy", "no_proxy", "timeout", "max_duration", "bindto", "verify_peer", "verify_host", "cafile", "capath", "local_cert", "local_pk", "passphrase", "ciphers", "peer_fingerprint", "capture_peer_cert_chain", "extra"?

That's the file I'm working on:

<?php 

namespace App\Service;

use Symfony\Contracts\HttpClient\HttpClientInterface;
use MangoPay;
use App\Service\MockStorage;

class CallApiService
{
  private $mangoPayApi;
  private $client;

    public function __construct(HttpClientInterface $httpClient)
    {
      $this->client = $httpClient;
      $this->mangoPayApi = new MangoPay\MangoPayApi();
      $this->mangoPayApi->Config->ClientId = $_ENV['CLIENT_ID'];
      $this->mangoPayApi->Config->ClientPassword = $_ENV['API_KEY'];
      // $this->mangoPayApi->Config->TemporaryFolder = 'mangotemp';
      $this->mangoPayApi->OAuthTokenManager->RegisterCustomStorageStrategy(new MockStorage());
    }

    public function createProfilMango($form)
    {
      $date = date_format($form['birthday']->getData(), "Ymd");

      $userMango = $this->client->request(
        'POST',
        $_ENV['SERVER_URL'] . '/' . $_ENV['VERSION'] . '/' . $_ENV['CLIENT_ID'] .'/users/natural',
        [

            $UserNatural = new MangoPay\UserNatural(),
            $UserNatural->FirstName = $form['firstname']->getData(),
            $UserNatural->LastName = $form['lastname']->getData(),
            $UserNatural->Email = $form['email']->getData(),
            $UserNatural->Address = new MangoPay\Address(),
            $UserNatural->Address->AddressLine1 = $form['streetNumber']->getData() . " " . $form['address']->getData(),
            $UserNatural->Address->AddressLine2 = "",
            $UserNatural->Address->City = $form['city']->getData(),
            $UserNatural->Address->Region = "",
            $UserNatural->Address->PostalCode = $form['zipCode']->getData(),
            $UserNatural->Address->Country = "FR",  
            $UserNatural->Birthday = intval($date),  
            $UserNatural->Nationality = $form['nationality']->getData(),
            $UserNatural->CountryOfResidence = "FR",
            $UserNatural->Capacity = "NORMAL",
            $Result = $this->mangoPayApi->Users->Create($UserNatural),
        ]
      );

      return $userMango;
    }
}

The CallApiService.php is called upon the signup controller of my website:

// RegistrationController.php

    [...]

    public function register(CallApiService $callApiService, User $user = null, Request $request, UserPasswordHasherInterface $userPasswordHasher, UserAuthenticatorInterface $userAuthenticator, AppCustomAuthenticator $authenticator, EntityManagerInterface $entityManager): Response
    {
        if(!$user){
            $user = new User();
        }

        $form = $this->createForm(RegistrationFormType::class, $user);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            // encode the plain password
            $user->setPassword(
            $userPasswordHasher->hashPassword(
                    $user,
                    $form->get('plainPassword')->getData()
                )
            );
            
           $callApiService->createProfilMango($form);

            // $entityManager = $this->getDoctrine()->getManager();
            $entityManager->persist($user);
            $entityManager->flush();
            // do anything else you need here, like send an email
            


            // return $userAuthenticator->authenticateUser(
            //     $user,
            //     $authenticator,
            //     $request,
            //     // 'main' // firewall name in security.yaml
            // );
        }

        return $this->render('registration/register.html.twig', [
            'registrationForm' => $form->createView(),
            'editMode'=> $user-> getId() !== null,
        ]);
    }

I've tried to change the $client value with new NativeHttpClient() and new CurlHttpClient() but the error doesn't change.

What's the error? How can I fix it?

0

There are 0 best solutions below