summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuuso Lapinlampi <wub@partyvan.eu>2016-01-06 14:41:30 +0100
committerJuuso Lapinlampi <wub@partyvan.eu>2016-01-06 14:41:30 +0100
commit24ca593462cebdbddf660c4ef13532e93f90d97e (patch)
tree19d721f3c239bcadd91180ac3b41371376f1dbfa
parentd6345a667436fd29d81552aed55ca51a5506673b (diff)
parentb94ac9a9bc957623687bf3cd21548569b96d4a01 (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.
-rwxr-xr-xstatic/classes/Response.class.php92
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;
+ }
}