コード例 #1
0
 public function testParseMediaSearch()
 {
     // Get sample response
     $sampleResponse = $this->sampleResponses['get-media-search.json'];
     $response = new Response($sampleResponse, 'json');
     // Get parser
     $parser = new InstagramParser($response);
     // Parse data
     $parser->parseMediaSearch();
     // Test posts
     $posts = $parser->getPosts();
     $this->assertEquals(2, count($posts));
 }
コード例 #2
0
ファイル: Instagram.php プロジェクト: jenalgit/social-api
 /**
  * {@inheritdoc}
  */
 public function search(QueryInterface $query)
 {
     // Get library service
     $libService = $this->getLibService();
     // Build request params
     $requestParams = array();
     $qFrom = $query->getFrom();
     $qTo = $query->getTo();
     if (is_null($query->getHashtag())) {
         if (!is_null($qFrom)) {
             $requestParams['min_timestamp'] = $qFrom->getCreated();
         }
         if (!is_null($qTo)) {
             $requestParams['max_timestamp'] = $qTo->getCreated();
         }
     } else {
         if (!is_null($qFrom)) {
             // Return media before/newer than this min ID
             $paginationId = $qFrom->getPaginationId();
             $paginationId = is_null($paginationId) ? $qFrom->getId() : $paginationId;
             $requestParams['min_tag_id'] = $paginationId;
         }
         if (!is_null($qTo)) {
             // Return media after/older than this max ID
             $paginationId = $qTo->getPaginationId();
             $paginationId = is_null($paginationId) ? $qTo->getId() : $paginationId;
             $requestParams['max_tag_id'] = $qTo->getPaginationId();
         }
         if (!is_null($query->getNumResults())) {
             $requestParams['count'] = $query->getNumResults();
         }
     }
     // Build request url
     if (is_null($query->getHashtag())) {
         $requestUrl = 'media/search?';
         $parseMethod = 'parseMediaSearch';
     } else {
         $requestUrl = 'tags/' . urlencode($query->getHashtag()) . '/media/recent?';
         $parseMethod = 'parseTagsMediaRecent';
     }
     $requestUrl .= http_build_query($requestParams, null, '&', PHP_QUERY_RFC3986);
     // Search api
     try {
         $response = new Response($libService->request($requestUrl), 'json');
     } catch (\Exception $e) {
         $this->propogateException($e);
     }
     // Parse response
     $parser = new InstagramParser($response);
     $parser->{$parseMethod}();
     $posts = $parser->getPosts();
     // Filter posts
     $filteredPosts = array();
     if (!is_null($query->getMedia())) {
         $mediaTypes = array();
         foreach ($query->getMedia() as $media) {
             switch ($media) {
                 case 'images':
                     $mediaTypes[] = 'image';
                     break;
                 case 'videos':
                     $mediaTypes[] = 'video';
                     break;
             }
         }
         foreach ($posts as $i => $post) {
             if (in_array($post->getMediaType(), $mediaTypes)) {
                 $filteredPosts[$i] = $post;
             }
         }
     } else {
         $filteredPosts = $posts;
     }
     return $filteredPosts;
 }