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
authorizedClient si client primesc un al doilea parametru optional $isStage care controleaza env direct din helper. $isStage e setat implicit false ca sa pastreze acelasi comportament ca pana acum pt backwards compatibility
$staging din Factory nu mai e static, iar valoarea se trimite ca parametru catre HttpTransporter -> Payload::toRequest. Practic se izoleaza valoarea environmentului la instanta curenta de Client
#PR
#52
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
Clientpornind de laAnaf::factory()eg: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
PayloadviaFactory::isStaging(), care in spate foloseste un bool static, asta inseamna caorice client nou o sa suprascrie stage-ul unui client vechi. *Edit: Problema nu e defapt ca se suprascrie, ci faptul ca$isStagingodata setattruenu se mai seteaza niciodata inapoifalse. Chiar si daca ar fi o metoda care sa reseteze valoarea, problema ramane, intrucat o sa fie o singura valoare indiferent de cate instante deClientexista.Solutie
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