-
Notifications
You must be signed in to change notification settings - Fork 21
Description
Hello, am deschis un PR care abordeaza 2 probleme/optimizari:
Problema 1
Daca doresc sa creez o instanta de client stage, fie el autentificat sau nu, singura varianta este sa initializez eu manual un Client pornind de la Anaf::factory() eg:
Anaf::factory()
->staging()
->withBaseUri(...)
...
->make() Acum treaba asta pune responsabilitatea administrarii url-urilor pe cel care consuma library-ul. In mod normal ar trebui sa poti sa creezi o instanta de client/authClient atat in prod cat si in stage fara sa fie nevoie sa stii ce se intampla in spate.
Problema 2
Pentru ca verificarea fata de stage se face la nivel de Payload via Factory::isStaging(), care in spate foloseste un bool static, asta inseamna ca orice client nou o sa suprascrie stage-ul unui client vechi. *Edit: Problema nu e defapt ca se suprascrie, ci faptul ca $isStaging odata setat true nu se mai seteaza niciodata inapoi false. Chiar si daca ar fi o metoda care sa reseteze valoarea, problema ramane, intrucat o sa fie o singura valoare indiferent de cate instante de Client exista.
/** Prod Unauth Client */
$firstClient = $client = Anaf::client();
/** Stage Auth Client */
$secondClient= Anaf::factory()
->withApiKey($apiKey)
->staging()
->withBaseUri('https://webservicesp.anaf.ro')
->make();
/** Request-ul se va duce in stage, chiar daca $firstClient a fost initializat ca prod, pentru ca ultimul client initializat a fost $secondClient care e setat sa dea in stage */
$firstClient->efactura()->upload(...);Solutie
- Metodele
authorizedClientsiclientprimesc un al doilea parametru optional$isStagecare controleaza env direct din helper.$isStagee setat implicitfalseca sa pastreze acelasi comportament ca pana acum pt backwards compatibility $stagingdinFactorynu mai e static, iar valoarea se trimite ca parametru catreHttpTransporter->Payload::toRequest. Practic se izoleaza valoarea environmentului la instanta curenta de Client
#PR
#52