diff options
author | steckbrief <steckbrief@chefmail.de> | 2018-10-17 22:08:12 +0200 |
---|---|---|
committer | steckbrief <steckbrief@chefmail.de> | 2018-10-17 22:08:12 +0200 |
commit | bc439cd988dd308a64d0111f766716d54d3648d5 (patch) | |
tree | 335ebb5f1e2db53035e959de1a95b96456e618b4 /storage-backend/lib/functions.http.inc.php | |
parent | 840bd494f97effaede00d2bbda3d1503887f1f83 (diff) |
adds common and http protocol functionalities
Diffstat (limited to 'storage-backend/lib/functions.http.inc.php')
-rw-r--r-- | storage-backend/lib/functions.http.inc.php | 115 |
1 files changed, 106 insertions, 9 deletions
diff --git a/storage-backend/lib/functions.http.inc.php b/storage-backend/lib/functions.http.inc.php index c508b20..2d4b2b2 100644 --- a/storage-backend/lib/functions.http.inc.php +++ b/storage-backend/lib/functions.http.inc.php @@ -6,16 +6,19 @@ * */ +require_once('functions.common.inc.php'); + /** * Inspired by https://github.com/owncloud/core/blob/master/lib/private/appframework/http/request.php#L523 */ function getServerProtocol() { - if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) { - if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], ',') !== false) { - $parts = explode(',', $_SERVER['HTTP_X_FORWARDED_PROTO']); + $protocol = getHeaderExtensionValue('FORWARDED_PROTO'); + if (isset($protocol)) { + if (strpos($protocol, ',') !== false) { + $parts = explode(',', $protocol); $proto = strtolower(trim($parts[0])); } else { - $proto = strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']); + $proto = strtolower($protocol); } // Verify that the protocol is always HTTP or HTTPS // default to http if an invalid value is provided @@ -31,10 +34,11 @@ function getServerProtocol() { } function getRequestHostname() { - if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { - return strtolower($_SERVER['HTTP_X_FORWARDED_HOST']); + $forwardedHost = getHeaderExtensionValue('FORWARDED_HOST'); + if (isset($forwardedHost)) { + return strtolower($forwardedHost); } - return strtolower($_SERVER['HTTP_HOST']); + return strtolower(getHeaderValue('HOST')); } function getRequestUriWithoutFilename() { @@ -45,7 +49,9 @@ function sendHttpReturnCodeAndJson($code, $data) { if (!is_array($data)) { $data = ['msg' => $data]; } - header('Content-Type: application/json'); + + setContentType('application/json'); + sendHttpReturnCodeAndMessage($code, json_encode($data)); } @@ -54,11 +60,102 @@ function sendHttpReturnCodeAndMessage($code, $text = '') { exit($text); } +function setContentType($contentType) { + header('Content-Type: '.$contentType); +} + +function getHeaderExtensionValue($headerName) { + $headerName = strtoupper($headerName); + if (!startsWith($headerName, 'HTTP_X_')) { + if (!startsWith($headerName, 'HTTP_')) { + $headerName = str_replace('HTTP_', 'HTTP_X_', $headerName); + } else { + $headerName = 'HTTP_X_'.$headerName; + } + } + + return getHeaderValue($headerName); +} + +function getHeaderValue($headerName) { + $headerName = strtoupper($headerName); + if (!startsWith($headerName, 'HTTP_')) { + $headerName = 'HTTP_'.$headerName; + } + + return getFromArray($headerName, $_SERVER); +} + +function getFileParameter($parameterName) { + return getFromArray($parameterName, $_FILES); +} + +function getOptionalFileParameter($parameterName, $default = NULL) { + $parameter = getFileParameter($parameterName); + + return handleOptionalParameter($parameter, $default); +} + +function getMandatoryFileParameter($parameterName, $message = '', $json = false) { + $parameter = getFileParameter($parameterName); + + return handleMandatoryParameter($parameterName, $parameter, $message, $json); +} + +function getPostParameter($parameterName) { + return getFromArray($parameterName, $_POST); +} + function getOptionalPostParameter($parameterName, $default = NULL) { - $parameter = $_POST[$parameterName]; + $parameter = getPostParameter($parameterName); + + return handleOptionalParameter($parameter, $default); +} + +function getMandatoryPostParameter($parameterName, $message = '', $json = false) { + $parameter = getPostParameter($parameterName); + + return handleMandatoryParameter($parameterName, $parameter, $message, $json); +} + +function getGetParameter($parameterName) { + return getFromArray($parameterName, $_GET); +} + +function getOptionalGetParameter($parameterName, $default = NULL) { + $parameter = getGetParameter($parameterName); + + return handleOptionalParameter($parameter, $default); +} + +function getMandatoryGetParameter($parameterName, $message = '', $json = false) { + $parameter = getGetParameter($parameterName); + + return handleMandatoryParameter($parameterName, $parameter, $message, $json); +} + +function handleOptionalParameter($parameter, $default) { if (!isset($parameter) || is_null($parameter) || empty($parameter)) { $parameter = $default; } return $parameter; } + +function handleMandatoryParameter($parameterName, $parameter, $message, $json) { + if (!isset($parameter) || is_null($parameter) || empty($parameter)) { + if (empty($message) || is_null($message)) { + if ($json) { + $message = ['msg' => 'Missing parameter.', 'parameters' => ['missing_parameter' => $parameterName]]; + } else { + $message = 'Missing mandatory parameter "'.$parameterName.'".'; + } + } + if (!$json) { + sendHttpReturnCodeAndMessage(400, $message); + } else { + sendHttpReturnCodeAndJson(400, $message); + } + } + return $parameter; +} ?> |