function api_output_utils_start_headers($rsp, $more = array()) { $defaults = array('is_error' => 0); $more = array_merge($defaults, $more); $codes = http_codes(); $status_code = 200; if (isset($more['is_error']) && $more['is_error']) { $code = $rsp['error']['code']; $status_code = isset($codes[$code]) ? $code : 500; } else { if (isset($more['created'])) { $status_code = 201; } else { } } $status = "{$status_code} {$codes[$status_code]}"; $enc_status = htmlspecialchars($status); utf8_headers(); header("HTTP/1.1 {$enc_status}"); header("Status: {$enc_status}"); if (isset($more['is_error'])) { header("X-api-error-code: " . htmlspecialchars($rsp['error']['code'])); header("X-api-error-message: " . htmlspecialchars($rsp['error']['message'])); } }
function _api_output_rest_send_json_headers() { $content_type = 'application/json'; if (request_isset('_jsondebug')) { $content_type = 'text/plain'; } utf8_headers($content_type); }
function api_output_send($rsp, $more = array()) { $json = json_encode($rsp); utf8_headers(); # TO DO: these don't always appear to be being set correctly if (isset($more['is_error'])) { header("HTTP 500 Server Error"); header("Status: 500 Server Error"); } if (isset($more['cors_allow'])) { header("Access-Control-Allow-Origin: " . htmlspecialchars($more['cors_allow'])); } if (!isset($more['inline'])) { header("Content-Type: text/json"); } header("Content-Length: " . strlen($json)); echo $json; exit; }