コード例 #1
0
        public void Process()
        {
            var builder = new UriBuilder(BaseRequestUri)
            {
                Path = "/files/" + mFileName.Replace('\\', '/')
            };
            var request = WebRequest.CreateHttp(builder.Uri);

            if (mBaseFile != null)
            {
                if (mEntry.Hash.HasValue == false)
                {
                    mEntry.Hash = mBaseFile.CalculateHash();
                }

                request.Headers.Add("X-Local-Version", "" + mEntry.Hash.Value);
            }

            if (!string.IsNullOrEmpty(AuthorizationHeader))
            {
                request.Headers.Add("Authorization", AuthorizationHeader);
            }

            request.Method = "GET";
            HttpWebResponse response;

            try {
                response = request.GetResponse() as HttpWebResponse;
            } catch (WebException ex) {
                if (ex.Response == null)
                {
                    throw;
                }

                response = ex.Response as HttpWebResponse;
            }

            if (response == null)
            {
                Exists = false;
                return;
            }

            switch (response.StatusCode)
            {
            case HttpStatusCode.OK:
                OnNewFileReceived(response);
                break;

            case HttpStatusCode.NotModified:
                if (mBaseFile != null)
                {
                    Exists      = true;
                    inputStream = mBaseFile.DataStream;
                }
                else
                {
                    Exists = false;
                }
                break;

            default:
                Exists = false;
                break;
            }
        }