Example #1
0
        private bool FindMatchingVersion(IResponse response, IRequest request, Stream output, out SiteHost proxy)
        {
            //Trace.TraceInformation("Currently loaded: " + _versionTable.VersionsAvailable());
            proxy = null;
            if (_versionTable.IsEmpty())
            {
                Trace.TraceInformation("Rejecting - no loaded APIs");
                response.StatusCode  = 503;
                response.ContentType = "text/plain";
                Write(output, "\r\nRejected: no APIs are loaded into the host");
                return(true);
            }

            var version    = request.Headers.Get("Version");
            var proxyCheck = _versionTable.GetForVersionHeader(version);

            if (proxyCheck == null || proxyCheck.IsFailure)
            {
                Trace.TraceInformation("Rejecting - no matching API");
                response.StatusCode  = 400;
                response.ContentType = "text/plain";
                Write(output, "\r\nRejected: You must supply a 'Version' header for a known major version");
                Write(output, "\r\nCurrently loaded: " + _versionTable.VersionsAvailable());
                return(true);
            }

            proxy = proxyCheck.ResultData;
            return(false);
        }