diff --git a/shortenviayourls.php b/shortenviayourls.php new file mode 100644 index 00000000..28022819 --- /dev/null +++ b/shortenviayourls.php @@ -0,0 +1,85 @@ +getKey( "basepath") . "/?")) { + + // Init the CURL session + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $conf->getKey( "apiurl", "yourls")); + curl_setopt($ch, CURLOPT_HEADER, 0); // No header in the result + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Return, do not echo result + curl_setopt($ch, CURLOPT_POST, 1); // This is a POST request + curl_setopt($ch, CURLOPT_POSTFIELDS, array( // Data to POST + 'signature' => $conf->getKey( "signature", "yourls"), + 'format' => 'json', + 'action' => 'shorturl', + 'url' => $originalUrl + )); + // Fetch and return content + $data = curl_exec($ch); + curl_close($ch); + if (!($data === FALSE) && is_string($data)) + { + $data = json_decode( $data, true); + + if (!is_null($data) && array_key_exists('statusCode', $data) + && array_key_exists('shorturl', $data) && ($data['statusCode'] == 200)) + { + $shortenedUrl = $data['shorturl']; + $opSuccess = TRUE; + } else { + // error with contents of YOURLS response. + $errCode = 3; + } + } else { + // error when calling YOURLS - probably a PrivateBin configuration issue, like wrong/missing apiurl or signature + $errCode = 2; + } + } else { + // trying to shorten a URL not pointing to our PrivateBin instance. + $errCode = 1; + } +} + +if ($opSuccess) +{ + print("
Your shortened paste is $shortenedUrl"); +} +else +{ + print("
Error: An error occured while trying to shorten the given URL (error code $errCode)"); +} + +function getGetData() { + $data = http_build_query($_GET); + return $data; +} + +function startsWith($haystack, $needle) +{ + $length = strlen($needle); + return (substr($haystack, 0, $length) === $needle); +} +?>