Exemplo n.º 1
0
 public function testOffsetFromJob()
 {
     $client = RestClient::create();
     $config = new JobConfig('test', ['endpoint' => 'test', 'params' => ['startAt' => 3]]);
     $limit = 10;
     $scroller = new OffsetScroller(['limit' => $limit, 'offsetFromJob' => true, 'offsetParam' => 'startAt']);
     $first = $scroller->getFirstRequest($client, $config);
     self::assertEquals($config->getParams()['startAt'], $first->getParams()['startAt']);
     $response = new \stdClass();
     $response->data = array_fill(0, 10, (object) ['key' => 'value']);
     $second = $scroller->getNextRequest($client, $config, $response, $response->data);
     self::assertEquals($config->getParams()['startAt'] + $limit, $second->getParams()['startAt']);
 }
Exemplo n.º 2
0
 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;
     }
 }