nsmcp::Server method http (public)

 <instance of nsmcp::Server[i]> http

Defined in /usr/local/ns/tcl/nsmcp/lib/transport.tcl

Testcases:
No testcase defined.
Source code:
set headers {}
set input [ns_conn headers]
for {set i 0} {$i < [ns_set size $input]} {incr i} {
    set name [string tolower [ns_set key $input $i]]
    # Do not silently select one of several authentication/origin headers.
    if {[dict exists $headers $name] && $name in {authorization origin content-type mcp-protocol-version}} {
        ns_return 400 text/plain "Duplicate request header"
        return
    }
    if {[dict exists $headers $name]} {
        dict append headers $name , [ns_set value $input $i]
    } else {
        dict set headers $name [ns_set value $input $i]
    }
}
if {[ns_conn contentlength] > [${:transport} maxBodyBytes]} {
    ns_return 413 text/plain "Request body too large"
    return
}
try {
    set response [${:transport} request [ns_conn method] $headers  [ns_conn content] [ns_conn server]]
    set contentType text/plain
    dict for {key value} [dict get $response headers] {
        if {[string equal -nocase $key Content-Type]} {
            set contentType $value
        } else {
            ns_set put [ns_conn outputheaders] $key $value
        }
    }
    ns_set put [ns_conn outputheaders] Cache-Control no-store
    ns_return [dict get $response status] $contentType [dict get $response body]
} on error {message options} {
    ns_log error "nsmcp: HTTP adapter failed"
    ns_return 500 text/plain "Internal error"
} finally {
    ::nsmcp::cleanup
}
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: