php - Why does Instagram's pagination return the same page over and over? -


the code

i've created php class communicate instagram's api. using private function called api_request (shown below) communicate instagram's api:

private function api_request( $request = null ) {      if ( is_null( $request ) ) {         $request = $this->request["httprequest"];     }     $body = wp_remote_retrieve_body( wp_remote_get( $request, array(                 "timeout" => 10,                 "content-type" => "application/json"             )         )     );      try {         $response = json_decode( $body, true );         $this->data["pagination"] = $response["pagination"]["next_url"];         $this->data["response"] = $response["data"];          $this->setup_data( $this->data );      } catch ( exception $ex ) {         $this->data = null;     } } 

these 2 lines of code...

$this->data["pagination"] = $response["pagination"]["next_url"]; $this->data["response"] = $response["data"]; 

...sets data within array:

private $data = array (     "response"      => null,     "pagination"    => null,     "photos"        => array() ); 

the problem

whenever request next page, following function:

public function pagination_query() {     $this->api_request( $this->data["pagination"] );     $output = json_encode( $this->data["photos"] );      return $output; } 

instagram gives me first page, on , on , on gain. idea problem here?

update #1

i realized because setup_data function (used in api_request function) pushes photo objects onto end of $this->data["photos"] array:

private function setup_data( $data ) {      foreach ( $data["response"] $obj ) {          /* code parses api, goes here */           /* pushes new object onto photo stack */         array_push( $this->data["photos"], $new_obj );     } } 

...it necessary create empty array, when requesting new page:

public function pagination_query() {      $this->data["photos"] = array(); // kicks out old photo objects      $this->api_request( $this->data["pagination"] );     $output = json_encode( $this->data["photos"] );      return $output; } 

i'm able retrieve second page subsequent pagination_query calls return second page. ideas wrong?

update #2

i discovered using while statement, make api_request function call itself, allows me retrieve page after page fine:

private function api_request( $request = null ) {      if ( is_null( $request ) ) {         $request = $this->request["httprequest"];     }      $body = wp_remote_retrieve_body( wp_remote_get( $request, array(                 "timeout" => 18,                 "content-type" => "application/json"             )         )     );      try {         $response = json_decode( $body, true );          $this->data["response"] = $response["data"];         $this->data["next_page"] = $response["pagination"]["next_url"];          $this->setup_data( $this->data );          // while state returns page after page fine         while ( count( $this->data["photos"] ) < 80 ) {             $this-> api_request( $this->data["next_page"] );         }      } catch ( exception $ex ) {         $this->data = null;     } } 

however, doesn't fix pagination_query function , appears if try-catch block creating closure , i'm not sure make of this.

in first snippet of code have:

    $this->data["response"] = $response["data"];     $this->data["next_page"] = $response["pagination"]["next_url"]; 

note 2 keys: response , next_page

then in second snippet have:

    $this->data["pagination"] = $response["pagination"]["next_url"];     $this->data["response"] = $response["data"]; 

now next_page pagination

now if use

$this->api_request( $this->data["pagination"] ); 

but using $this->data["next_page"] = $response["pagination"]["next_url"]; of course not right results.

in case try var_dump content of of $request:

public function pagination_query() {     var_dump($this->data["pagination"]);     $this->api_request( $this->data["pagination"] );     $output = json_encode( $this->data["photos"] );      return $output; } 

if have debbugger check inside api_request url passed each time


Comments

Popular posts from this blog

javascript - gulp-nodemon - nodejs restart after file change - Error: listen EADDRINUSE events.js:85 -

Fatal Python error: Py_Initialize: unable to load the file system codec. ImportError: No module named 'encodings' -

javascript - oscilloscope of speaker input stops rendering after a few seconds -