+++ /dev/null
-<?php
-
-/**
-* Instagram PHP
-* @author Galen Grover <galenjr@gmail.com>
-* @license http://opensource.org/licenses/mit-license.php The MIT License
-*/
-
-namespace Instagram;
-
-use \Instagram\Collection\MediaSearchCollection;
-use \Instagram\Collection\TagCollection;
-use \Instagram\Collection\TagMediaCollection;
-use \Instagram\Collection\UserCollection;
-use \Instagram\Collection\MediaCollection;
-use \Instagram\Collection\LocationCollection;
-use \Instagram\CurrentUser;
-use \Instagram\User;
-use \Instagram\Media;
-use \Instagram\Tag;
-use \Instagram\Location;
-
-/**
- * Instagram!
- *
- * All objects are created through this object
- */
-class Instagram extends \Instagram\Core\BaseObjectAbstract {
-
- /**
- * Constructor
- *
- * You can supply a client, proxy, and an access token via the config array
- *
- * @param string $access_token Instagram access token obtained through authentication
- * @param \Instagram\Net\ClientInterface $client Client object used to connect to the API
- * @access public
- */
- public function __construct( $access_token = null, \Instagram\Net\ClientInterface $client = null ) {
- $this->proxy = new \Instagram\Core\Proxy( $client ?: new \Instagram\Net\CurlClient, $access_token ?: null );
- }
-
- /**
- * Set the access token
- *
- * Most API calls require an access ID
- *
- * @param string $access_token
- * @access public
- */
- public function setAccessToken( $access_token ) {
- $this->proxy->setAccessToken( $access_token );
- }
-
- /**
- * Set the client ID
- *
- * Some API calls can be called with only a Client ID
- *
- * @param string $client_id Client ID
- * @access public
- */
- public function setClientID( $client_id ) {
- $this->proxy->setClientId( $client_id );
- }
-
- /**
- * Logout
- *
- * This doesn't actually work yet, waiting for Instagram to implement it in their API
- *
- * @access public
- */
- public function logout() {
- $this->proxy->logout();
- }
-
- /**
- * Get user
- *
- * Retrieve a user given his/her ID
- *
- * @param int $id ID of the user to retrieve
- * @return \Instagram\User
- * @access public
- */
- public function getUser( $id ) {
- $user = new User( $this->proxy->getUser( $id ), $this->proxy );
- return $user;
- }
-
- /**
- * Get user by Username
- *
- * Retrieve a user given their username
- *
- * @param string $username Username of the user to retrieve
- * @return \Instagram\User
- * @access public
- * @throws \Instagram\ApiException
- */
- public function getUserByUsername( $username ) {
- $user = $this->searchUsers( $username, array( 'count' => 1 ) )->getItem( 0 );
- if ( $user ) {
- try {
- return $this->getUser( $user->getId() );
- } catch( \Instagram\Core\ApiException $e ) {
- if ( $e->getType() == $e::TYPE_NOT_ALLOWED ) {
- return $user;
- }
- }
- }
- throw new \Instagram\Core\ApiException( 'username not found', 400, 'InvalidUsername' );
- }
-
- /**
- * Check if a user is private
- *
- * @return bool
- * @access public
- */
- public function isUserPrivate( $user_id ) {
- $relationship = $this->proxy->getRelationshipToCurrentUser( $user_id );
- return (bool)$relationship->target_user_is_private;
- }
-
- /**
- * Get media
- *
- * Retreive a media object given it's ID
- *
- * @param int $id ID of the media to retrieve
- * @return \Instagram\Media
- * @access public
- */
- public function getMedia( $id ) {
- $media = new Media( $this->proxy->getMedia( $id ), $this->proxy );
- return $media;
- }
-
- /**
- * Get Tag
- *
- * @param string $tag Tag to retrieve
- * @return \Instagram\Tag
- * @access public
- */
- public function getTag( $tag ) {
- $tag = new Tag( $this->proxy->getTag( $tag ), $this->proxy );
- return $tag;
- }
-
- /**
- * Get location
- *
- * Retreive a location given it's ID
- *
- * @param int $id ID of the location to retrieve
- * @return \Instagram\Location
- * @access public
- */
- public function getLocation( $id ) {
- $location = new Location( $this->proxy->getLocation( $id ), $this->proxy );
- return $location;
- }
-
- /**
- * Get current user
- *
- * Returns the current user wrapped in a CurrentUser object
- *
- * @return \Instagram\CurrentUser
- * @access public
- */
- public function getCurrentUser() {
- $current_user = new CurrentUser( $this->proxy->getCurrentUser(), $this->proxy );
- return $current_user;
- }
-
- /**
- * Get popular media
- *
- * Returns current popular media
- *
- * @return \Instagram\Collection\MediaCollection
- * @access public
- */
- public function getPopularMedia() {
- $popular_media = new MediaCollection( $this->proxy->getPopularMedia(), $this->proxy );
- return $popular_media;
- }
-
- /**
- * Search users
- *
- * Search the users by username
- *
- * @param string $query Search query
- * @param array $params Optional params to pass to the endpoint
- * @return \Instagram\Collection\UserCollection
- * @access public
- */
- public function searchUsers( $query, array $params = null ) {
- $params = (array)$params;
- $params['q'] = $query;
- $user_collection = new UserCollection( $this->proxy->searchUsers( $params ), $this->proxy );
- return $user_collection;
- }
-
- /**
- * Search Media
- *
- * Returns media that is a certain distance from a given lat/lng
- *
- * To specify a distance, pass the distance (in meters) in the $params
- *
- * Default distance is 1000m
- *
- * @param float $lat Latitude of the search
- * @param float $lng Longitude of the search
- * @param array $params Optional params to pass to the endpoint
- * @return \Instagram\Collection\MediaSearchCollection
- * @access public
- */
- public function searchMedia( $lat, $lng, array $params = null ) {
- $params = (array)$params;
- $params['lat'] = (float)$lat;
- $params['lng'] = (float)$lng;
- $media_collection = new MediaSearchCollection( $this->proxy->searchMedia( $params ), $this->proxy );
- return $media_collection;
- }
-
- /**
- * Search for tags
- *
- * @param string $query Search query
- * @param array $params Optional params to pass to the endpoint
- * @return \Instagram\Collection\TagCollection
- * @access public
- */
- public function searchTags( $query, array $params = null ) {
- $params = (array)$params;
- $params['q'] = $query;
- $tag_collection = new TagCollection( $this->proxy->searchTags( $params ), $this->proxy );
- return $tag_collection;
- }
-
- /**
- * Search Locations
- *
- * Returns locations that are a certain distance from a given lat/lng
- *
- * To specify a distance, pass the distance (in meters) in the $params
- *
- * Default distance is 1000m
- *
- * @param float $lat Latitude of the search
- * @param float $lng Longitude of the search
- * @param array $params Optional params to pass to the endpoint
- * @return \Instagram\LocationCollection
- * @access public
- */
- public function searchLocations( $lat, $lng, array $params = null ) {
- $params = (array)$params;
- $params['lat'] = (float)$lat;
- $params['lng'] = (float)$lng;
- $location_collection = new LocationCollection( $this->proxy->searchLocations( $params ), $this->proxy );
- return $location_collection;
- }
-
- /**
- * Get tag media
- *
- * @param string $tag
- * @param array $params Optional params to pass to the endpoint
- * @return TagMediaCollection
- */
- public function getTagMedia( $tag, array $params = null ) {
- $params = (array)$params;
- return new TagMediaCollection( $this->proxy->getTagMedia( $tag, $params ), $this->proxy );
- }
-
-}