protected static function createScroller(array $config) { if (empty($config['method'])) { return NoScroller::create([]); } switch ($config['method']) { case 'offset': return OffsetScroller::create($config); case 'response.param': return ResponseParamScroller::create($config); case 'response.url': return ResponseUrlScroller::create($config); case 'zendesk.response.url': return ZendeskResponseUrlScroller::create($config); case 'facebook.response.url': return FacebookResponseUrlScroller::create($config); case 'pagenum': return PageScroller::create($config); case 'cursor': return CursorScroller::create($config); case 'multiple': return MultipleScroller::create($config); default: $method = is_string($config['method']) ? $config['method'] : json_encode($config['method']); throw new UserException("Unknown pagination method '{$method}'"); break; } }
public function testGetNextRequestQueryParams() { $pagingNext = (new DateTime())->modify('-30 days'); $client = RestClient::create(); $config = $this->getConfig(); $response = (object) ['data' => [], 'scroll' => '?b=v&since=' . $pagingNext->getTimestamp()]; $scroller = new FacebookResponseUrlScroller(['urlKey' => 'scroll', 'paramIsQuery' => true, 'includeParams' => true]); $nextRequest = $scroller->getNextRequest($client, $config, $response, $response->data); $expected = $client->createRequest(['endpoint' => 'test', 'params' => ['since' => $pagingNext->getTimestamp(), 'a' => 1, 'b' => 'v']]); self::assertEquals($expected, $nextRequest); }