nsmcp::CodeUpstreamTool method get (protected)
<instance of nsmcp::CodeUpstreamTool> get endpoint accept
Defined in /usr/local/ns/tcl/nsmcp/code-upstream.tcl
- Parameters:
- endpoint (required)
- accept (required)
- Testcases:
- No testcase defined.
Source code: if {![regexp {^/repos/[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+/(commits|contents)(/|\?)} $endpoint] || [regexp {[\r\n]} $endpoint]} {error "invalid-github-endpoint"} if {[incr :requests]>5} {error "upstream-request-limit"} set url https://api.github.com$endpoint # Small successful-response cache, server-local and size bounded. set cache nsmcp:upstream-cache:[ns_info server] set key [ns_crypto::md string -digest sha256 -- [list $url $accept]] if {[nsv_exists $cache $key]} { set cached [nsv_get $cache $key] if {[clock seconds]-[dict get $cached at]<60} {return [dict get $cached body]} } if {[catch {:http $url $accept} reply]} {error "github-transport-failed"} set status [dict get $reply status] if {$status!=200} {error "github-http-$status"} set body [dict get $reply body] if {[string bytelength $body]>1048576} {error "github-response-too-large"} if {[llength [nsv_array names $cache]]>=16} {nsv_unset -nocomplain $cache} nsv_set $cache $key [dict create at [clock seconds] body $body] return $bodyXQL Not present: Generic, PostgreSQL, Oracle
![[i]](/resources/acs-subsite/ZoomIn16.gif)