h4kuna / fio

Read and send payment order for FIO bank, PSR-17 ready
54 stars 25 forks source link

Kouknou na možnost zadat více účtů a přepínat mezi nimi. #10

Closed h4kuna closed 8 years ago

h4kuna commented 9 years ago

Možnost přidat token jinak než přes config.

foxycode commented 9 years ago

Také bych ocenil. Mohu i implementovat, ale potřebuji nakopnout, jakým způsobem to realizovat.

h4kuna commented 9 years ago

V neposlední řadě

větev multi-accounts

foxycode commented 9 years ago

Prozatím jsem to provizorně vyřešil přímo v kódu, ale přijde mi to moc ukecané:

$queue = new Fio\Request\Queue($this->getHelper('container')->getContainer()->parameters['tempDir'].'/fio');
$statementFactory = new Fio\Response\Read\JsonStatementFactory();

foreach ($accounts as $account)
{
    $context = new Fio\Utils\Context($account->api_token, $queue);
    $fioRead = new Fio\FioRead($context, $statementFactory);
}

Přijde mi celý ten koncept nastavování pomocí extension zbytečně složitý. Raději bych to viděl jako service a o zbytek ať se postará autoloading. Nebo mít jako extension třeba jen nějaký context, ale bez závislosti na konkrétním tokenu. Účty mám v db, tak je tam potřebuju nějak dostat z modelu, např. takto:

services:
    fioReader: h4kuna\Fio\FioRead( @bankAccountRepository::getFioAccounts() )

Pokud bych to chtěl nastavovat v configu, tak mi aliasy asi k ničemu nebudou, ale to je čistě subjektivní.

Trochu je mi také záhadou proč se "stahovač" jmenuje Queue, to mi přijde zavádějící. Nazval bych to raději např. CurlHttpClient a tu závislost na Kdyby\Curl bych raději viděl jako nepovinnou, používám spíš Guzzle.

h4kuna commented 9 years ago

Rozumím že pro stahování ti jsou aliasy k ničemu, protože chceš stáhnout všechny, ale když mám definovanou nějakou sadu účtů tak, když to použiju pro platbu tak musím zvolit jakým účtem budu platit.

Mě by se líbilo kdyby se účty uložili do třídy kde budou v kolekci, tím ty můžeš takovou kolekci předat z modelu. A pokud to nebude definovaný tak se vyrobí nějaká defaultní.

Ok Queue má zjišťovat zda je možné poslat request na čtení nebo platbu, ale ok může se přejmenovat, ale tím tedy bude potřeba definovat nějaké rozhraní aby to nebylo závislé na Kdyby ani Guzzle.

Každý účet má unikátní token a může mít víc tokenů, nikoliv jeden token nemůže být k více účtům, nebo se pletu?

foxycode commented 9 years ago
  1. To je pravda, tedy klidně s aliasy, to mi v ničem nevadí.
  2. Může být, ale z modelu bych raději předával array do nějaké CollectionFactory, aby model nebyl závislý na konkrétním balíku.
  3. Můžeme např. udělat interface IHttpClient a v defaultu mít přímo v balíku jen HttpClient používající file_get_contents. Ten CurlHttpClient bych pak vyčlenil do samostatného balíku fio-httpclient-curl nebo fio-httpclient-guzzle, ať se každý rozhodne sám, co tam chce, ale funguje to i bez toho.
  4. Ano, jeden token nemůže být k více účtům, ale účet může mít více tokenů. Nenapadá mě ale, proč bych chtěl mít u účtu více tokenů.

Také mě napadlo zda tu DI extension nevyčlenit do samostatného balíku fio-nette se závislostí na základní balík. Bylo by fajn, kdyby to šlo používat i samostatně.

Jinak bych tu debatu možná přesunul někam online, jabber damien@jabber.cz nebo skype tomas.jacik