// Declare the class class GoogleUrlApi { // Constructor function GoogleURLAPI($key,$apiURL = 'https://www.googleapis.com/urlshortener/v1/url') { // Keep the API Url $this->apiURL = $apiURL.'?key='.$key; } // Shorten a URL function shorten($url) { // Send information along $response = $this->send($url); // Return the result return isset($response['id']) ? $response['id'] : false; } // Expand a URL function expand($url) { // Send information along $response = $this->send($url,false); // Return the result return isset($response['longUrl']) ? $response['longUrl'] : false; } // Send information to Google function send($url,$shorten = true) { // Create cURL $ch = curl_init(); // If we're shortening a URL... if($shorten) { curl_setopt($ch,CURLOPT_URL,$this->apiURL); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode(array("longUrl"=>$url))); curl_setopt($ch,CURLOPT_HTTPHEADER,array("Content-Type: application/json")); } else { curl_setopt($ch,CURLOPT_URL,$this->apiURL.'&shortUrl='.$url); } curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); // Execute the post $result = curl_exec($ch); // Close the connection curl_close($ch); // Return the result return json_decode($result,true); } }
The constructor requires your Google API key. A second argument may be provided to the URL of the Google API. As the API is currently in version 1, changing this URL would be more harmful than useful. The class features two main methods: shorten and expand. Each method takes the long or short URL, contacts Google, and returns its counterpart. If no counterpart is found, or the Google URL Shortener API is down, a result of false is returned, so please be sure to use your own error handling. Now let's create an instance of GoogleUrlApi to shorten and then expand a URL:
// Create instance with key $key = 'xhjkhzkhfuh38934hfsdajkjaf'; $googer = new GoogleURLAPI($key); // Test: Shorten a URL $shortDWName = $googer->shorten("http://davidwalsh.name"); echo $shortDWName; // returns http://goo.gl/i002 // Test: Expand a URL $longDWName = $googer->expand($shortDWName); echo $longDWName; // returns http://davidwalsh.name
沒有留言:
張貼留言