diff options
| author | Juuso Lapinlampi <wub@partyvan.eu> | 2016-01-06 14:41:30 +0100 |
|---|---|---|
| committer | Juuso Lapinlampi <wub@partyvan.eu> | 2016-01-06 14:41:30 +0100 |
| commit | 24ca593462cebdbddf660c4ef13532e93f90d97e (patch) | |
| tree | 19d721f3c239bcadd91180ac3b41371376f1dbfa /static/classes | |
| parent | d6345a667436fd29d81552aed55ca51a5506673b (diff) | |
| parent | b94ac9a9bc957623687bf3cd21548569b96d4a01 (diff) | |
Merge WubTheCaptain's branch 'refactor-response-api'
Clean up a lot of the cruft in Response class.
Gyazo is deprecated and falls back to 'text' for similar functionality,
reducing code duplication. It will be removed in a future release.
CSV gets a text/csv Content-Type. CSV linebreaks are also now CRLF, and
values are wrapped in quotes.
The default error is now a JSON response instead of a generic 400 Bad
Request in plaintext.
output=json is now explicit and no longer undefined behavior.
Diffstat (limited to 'static/classes')
| -rwxr-xr-x | static/classes/Response.class.php | 92 |
1 files changed, 42 insertions, 50 deletions
diff --git a/static/classes/Response.class.php b/static/classes/Response.class.php index 53fadef..812d29b 100755 --- a/static/classes/Response.class.php +++ b/static/classes/Response.class.php @@ -31,21 +31,30 @@ class Response { switch ($response_type) { case 'csv': + header('Content-Type: text/csv; charset=UTF-8'); + $this->type = $response_type; + break; + case 'html': + header('Content-Type: text/html; charset=UTF-8'); + $this->type = $response_type; + break; + case 'json': + header('Content-Type: application/json; charset=UTF-8'); + $this->type = $response_type; + break; case 'gyazo': + // Deprecated API since version 2.0.0, fallback to similar text API header('Content-Type: text/plain; charset=UTF-8'); - $this->type = $response_type; + $this->type = 'text'; break; case 'text': header('Content-Type: text/plain; charset=UTF-8'); $this->type = $response_type; break; - case 'html': - header('Content-Type: text/html; charset=UTF-8'); - $this->type = $response_type; - break; default: header('Content-Type: application/json; charset=UTF-8'); $this->type = 'json'; + $this->error(400, 'Invalid response type. Valid options are: csv, html, json, text.'); break; } } @@ -58,18 +67,15 @@ class Response case 'csv': $response = $this->csv_error($desc); break; - case 'gyazo': - $response = $this->gyazo_error($code, $desc); - break; - case 'text': - $response = $this->text_error($code, $desc); - break; case 'html': $response = $this->html_error($code, $desc); break; - default: + case 'json': $response = $this->json_error($code, $desc); break; + case 'text': + $response = $this->text_error($code, $desc); + break; } http_response_code($code); @@ -81,21 +87,18 @@ class Response $response = null; switch ($this->type) { - case 'html': - $response = $this->html_success($files); - break; case 'csv': $response = $this->csv_success($files); break; - case 'gyazo': - $response = $this->gyazo_success($files); + case 'html': + $response = $this->html_success($files); + break; + case 'json': + $response = $this->json_success($files); break; case 'text': $response = $this->text_success($files); break; - default: - $response = $this->json_success($files); - break; } http_response_code(200); @@ -104,41 +107,17 @@ class Response private static function csv_error($description) { - return "error\n".$description."\n"; + return '"error"'."\r\n"."\"$description\""."\r\n"; } private static function csv_success($files) { - $result = "name,url,hash,size\n"; + $result = '"name","url","hash","size"'."\r\n"; foreach ($files as $file) { - $result .= $file['name'].','. - $file['url'].','. - $file['hash'].','. - $file['size']."\n"; - } - - return $result; - } - - private static function gyazo_error($code, $description) - { - return 'ERROR: ('.$code.') '.$description; - } - - private static function gyazo_success($files) - { - return POMF_URL.$files[0]['url']; - } - - private static function text_error($code, $description) - { - return 'ERROR: ('.$code.') '.$description; - } - - private static function text_success($files) - { - foreach ($files as $file) { - $result .= $file['url']."\n"; + $result .= '"'.$file['name'].'"'.','. + '"'.$file['url'].'"'.','. + '"'.$file['hash'].'"'.','. + '"'.$file['size'].'"'."\r\n"; } return $result; @@ -174,4 +153,17 @@ class Response 'files' => $files, ), JSON_PRETTY_PRINT); } + private static function text_error($code, $description) + { + return 'ERROR: ('.$code.') '.$description; + } + + private static function text_success($files) + { + foreach ($files as $file) { + $result .= $file['url']."\n"; + } + + return $result; + } } |
