55namespace OWC \PrefillGravityForms \Controllers ;
66
77use Exception ;
8+ use OWC \PrefillGravityForms \Abstracts \PostController ;
89use OWC \PrefillGravityForms \Services \CacheService ;
910
10- class WeAreFrankController extends BaseController
11+ class WeAreFrankController extends PostController
1112{
1213 public function handle (array $ form ): array
1314 {
@@ -22,9 +23,7 @@ public function handle(array $form): array
2223 }
2324
2425 $ expand = rgar ($ form , 'owc-iconnect-expand ' , '' );
25- $ preparedData = $ this ->prepareData ($ bsn , $ expand );
26-
27- $ firstPerson = $ this ->fetchPersonData ($ preparedData , $ bsn );
26+ $ firstPerson = $ this ->fetchPersonData ($ bsn , $ expand );
2827
2928 if (empty ($ firstPerson )) {
3029 return $ form ;
@@ -45,7 +44,7 @@ protected function makeRequest(): array
4544
4645 $ preparedData = $ this ->prepareData ($ bsn );
4746
48- return $ this ->fetchPersonData ($ preparedData , $ bsn );
47+ return $ this ->fetchPersonData ($ bsn );
4948 }
5049
5150 /**
@@ -120,9 +119,9 @@ protected function extractBSN(array $response): string
120119 return (string ) $ bsn ;
121120 }
122121
123- protected function fetchPersonData (array $ preparedData , string $ bsn ): array
122+ protected function fetchPersonData (string $ bsn , string $ expand = '' ): array
124123 {
125- $ apiResponse = $ this ->request ($ preparedData , $ bsn );
124+ $ apiResponse = $ this ->request ($ bsn , $ expand );
126125 $ personData = $ apiResponse ['personen ' ] ?? [];
127126 $ firstPerson = reset ($ personData ); // Response is in a multidimensional array which differs from other suppliers.
128127
@@ -138,14 +137,36 @@ protected function fetchPersonData(array $preparedData, string $bsn): array
138137 return [];
139138 }
140139
140+ foreach (array_filter (explode (', ' , $ expand )) as $ expandItem ) {
141+ $ firstPerson = $ this ->supplementEmbeddedByLinks ($ firstPerson , trim ($ expandItem ));
142+ }
143+
141144 return $ firstPerson ;
142145 }
143146
144- protected function request (array $ data = [], string $ bsn = '' ): array
147+ protected function request (string $ bsn = '' , string $ expand = '' ): array
148+ {
149+ $ curlArgs = [
150+ CURLOPT_URL => $ this ->settings ->getBaseURL (),
151+ CURLOPT_POSTFIELDS => json_encode ($ this ->prepareData ($ bsn , $ expand )),
152+ CURLOPT_HTTPHEADER => [
153+ 'Content-Type: application/json ' ,
154+ 'Accept: application/json ' ,
155+ sprintf ('%s: %s ' , $ this ->settings ->getAPITokenUsername (), $ this ->settings ->getAPITokenPassword ()),
156+ ],
157+ ];
158+
159+ return $ this ->handleCurl ($ curlArgs , CacheService::formatTransientKey ($ bsn ));
160+ }
161+
162+ /**
163+ * This one breaks the contract, fix later.
164+ */
165+ protected function requestEmbedded (string $ bsn = '' ): array
145166 {
146167 $ curlArgs = [
147168 CURLOPT_URL => $ this ->settings ->getBaseURL (),
148- CURLOPT_POSTFIELDS => json_encode ($ data ),
169+ CURLOPT_POSTFIELDS => json_encode ($ this -> prepareData ( $ bsn ) ),
149170 CURLOPT_HTTPHEADER => [
150171 'Content-Type: application/json ' ,
151172 'Accept: application/json ' ,
0 commit comments