diff --git a/api/info.php b/api/info.php new file mode 100644 index 0000000..6f10f85 --- /dev/null +++ b/api/info.php @@ -0,0 +1,45 @@ +'err','reason'=>'File not found'))); +} +else +{ + $answer = getInfoAboutHash($hash); + $answer['status'] = 'ok'; + exit(json_encode($answer)); +} + + +function getInfoAboutHash($hash) +{ + $file = ROOT.DS.'data'.DS.$hash.DS.$hash; + $size = filesize($file); + $size_hr = renderSize($size); + $content_type = exec("file -bi " . escapeshellarg($file)); + if($content_type && $content_type!=$type && strpos($content_type,'/')!==false && strpos($content_type,';')!==false) + { + $type = $content_type; + $c = explode(';',$type); + $type = $c[0]; + } + + return array('hash'=>$hash,'size_bytes'=>$size,'size_interpreted'=>$size_hr,'type'=>$type,'type_interpreted'=>getTypeOfFile($file)); +} \ No newline at end of file diff --git a/inc/core.php b/inc/core.php index cca4110..5040323 100644 --- a/inc/core.php +++ b/inc/core.php @@ -298,9 +298,11 @@ function getTypeOfFile($url) $type = $a2[1]; } - if($type=='octet-stream' && (new VideoController())->isProperMP4($url)) return 'mp4'; - if($type=='mp4' && !(new VideoController())->isProperMP4($url)) - return false; + if($type=='octet-stream') + if((new VideoController())->isProperMP4($url)) return 'mp4'; + if($type=='mp4') + if(!(new VideoController())->isProperMP4($url)) + return false; return $type; } diff --git a/rtfm/API.md b/rtfm/API.md index e1dbce6..c130bfb 100644 --- a/rtfm/API.md +++ b/rtfm/API.md @@ -1,6 +1,6 @@ # API -## upload.php +# upload.php - URL https://pictshare.net/api/upload.php - Method: POST file @@ -9,7 +9,7 @@ If the upload was successful answer will look like this -``` +```json { "status":"ok", "hash":"y1b6hr.jpg", @@ -19,7 +19,7 @@ If the upload was successful answer will look like this If there is an error the server will answer with status:err and a reason -``` +```json { "status":"err", "reason":"Unsupported filetype" @@ -33,18 +33,76 @@ If there is an error the server will answer with status:err and a reason ```curl -F "file=@test.jpg" https://pictshare.net/api/upload.php``` Answer from the server: -```{"status":"ok","hash":"y1b6hr.jpg","url":"https://pictshare.net/y1b6hr.jpg"}``` +```json +{"status":"ok","hash":"y1b6hr.jpg","url":"https://pictshare.net/y1b6hr.jpg"} +``` -2. Uploading a file called test.jpg via curl and requesting a custom hash +# geturl.php -```curl -F "file=@test.jpg" -F "hash=helloworld.jpg" https://pictshare.net/api/upload.php``` +- URL https://pictshare.net/api/geturl.php +- Method: GET +- Var name: url +- Answer type: JSON + +Upload content by providing a link to the content. If the link points to a website, the HTML of the page is uploaded as a text bin. + +```json +{ + "status":"ok", + "hash":"y1b6hr.jpg", + "url":"https://pictshare.net/y1b6hr.jpg", + "delete_code": "aqxqlv3kqokxd15xpkqp8zjljpqerveu", + "delete_url": "https://pictshare.net/delete_aqxqlv3kqokxd15xpkqp8zjljpqerveu/2mr2va.txt" +} +``` + +If there is an error the server will answer with status:err and a reason + +```json +{ + "status":"err", + "reason":"Unsupported filetype" +} +``` + +### Examples + +1. Uploading the HTML of xkcd.com + +```curl -s https://pictshare.net/api/geturl.php?url=https://xkcd.com``` Answer from the server: -```{"status":"ok","hash":"helloworld.jpg","url":"https://pictshare.net/helloworld.jpg"}``` +```json +{ + "status": "ok", + "hash": "2mr2va.txt", + "url": "https://pictshare.net/2mr2va.txt", + "filetype": "text", + "delete_code": "aqxqlv3kqokxd15xpkqp8zjljpqerveu", + "delete_url": "https://pictshare.net/delete_aqxqlv3kqokxd15xpkqp8zjljpqerveu/2mr2va.txt" +} +``` + +2. Uploading a Video from Imgur + +```curl https://pictshare.net/api/geturl.php?url=https://i.imgur.com/qQstLQt.mp4``` + +Answer from the server: + +```json +{ + "status": "ok", + "hash": "u0ni1m.mp4", + "url": "https://pictshare.net/u0ni1m.mp4", + "filetype": "mp4", + "delete_code": "aqxqlv3kqokxd15xpkqp8zjljpqerveu", + "delete_url": "https://pictshare.net/delete_aqxqlv3kqokxd15xpkqp8zjljpqerveu/u0ni1m.mp4" +} +``` --- -## pasetebin.php +# pasetebin.php - URL https://pictshare.net/api/pastebin.php - Method: POST/GET text - Post var name: api_paste_code @@ -56,7 +114,32 @@ This API can be used to directly post text. Server responds with the URL to the Creating a new text bin that ready "Hello World" -```url -F "api_paste_code=Hello World" https://pictshare.net/api/pastebin.php``` +```curl -F "api_paste_code=Hello World" https://pictshare.net/api/pastebin.php``` Answer from the server: -```https://pictshare.net/vekjy4e5rr.txt``` \ No newline at end of file +```https://pictshare.net/vekjy4e5rr.txt``` + +# info.php +- URL https://pictshare.net/api/info.php +- Method: POST/GET text +- Query var name: hash +- Answer: JSON + +This API will get information about any given hash. + +## Example + +```curl https://pictshare.net/api/info.php?hash=9k3rbw.mp4``` + +Answer from the server: + +```json +{ + "status": "ok", + "hash": "9k3rbw.mp4", + "size_bytes": 2513225, + "size_interpreted": "2.4 MB", + "type": "video/mp4", + "type_interpreted": "mp4" +} +``` \ No newline at end of file