コード例 #1
0
        public virtual Func <string, WebContent> Getter(Content <Stream> content)
        {
            var graph = this.ThingGraph;
            var thing = this.Thing;

            WebContent    = GetContentFromContent(content, GetUri(thing));
            IsStreamOwner = WebContent.IsStreamOwner;

            Done = false;

            Func <string, WebContent> getter =
                (s) => {
                WebContent result = null;
                try {
                    var request = new Uri(s);
                    if (WebContent.Uri.AbsoluteUri == request.AbsoluteUri)
                    {
                        if (!WebContent.ContentIsEmpty)
                        {
                            result = WebContent;
                        }
                        else if (WebContent.ClearContentAfterServing)
                        {
                            if (GetUri(thing).AbsoluteUri == request.AbsoluteUri)
                            {
                                WebContent = GetContentFromThing(graph, thing);
                                result     = WebContent;
                            }
                        }
                    }
                    else
                    {
                        result = this.GetContentFromGraph(graph, thing, request);
                        if (result == null)
                        {
                            // if not requesting the internal server, get content from the web
                            if (request.Host != BaseUri.Host && request.Port != BaseUri.Port)
                            {
                                if (DoWebRequest)
                                {
                                    result = new WebRequestContent();
                                }
                            }
                        }
                    }
                } catch (Exception ex) {
                    Trace.WriteLine("request denied:" + s);
                    Debug.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
                    result = null;
                } finally {
                    Done = true;
                }
                return(result);
            };

            //);


            return(getter);
        }
コード例 #2
0
ファイル: WebRequestClass.cs プロジェクト: msuarz/zunzun
        public string Post(string Url, WebRequestContent Content)
        {
            var Request = NewRequest(Url, Content);

            using (var RequestStream = Request.GetRequestStream()) {
                RequestStream.Write(Content.Data, 0, Content.Length);

                using (var Response = Request.GetResponse())
                    using (var Reader = new StreamReader(Response.GetResponseStream()))
                        return Reader.ReadToEnd();
            }
        }
コード例 #3
0
ファイル: WebRequestClass.cs プロジェクト: msuarz/zunzun
        public HttpWebRequest NewRequest(string Url, WebRequestContent Content)
        {
            var Request = (HttpWebRequest) System.Net.WebRequest.Create(Url);

            Request.PreAuthenticate = true;
            Request.AllowWriteStreamBuffering = true;
            Request.ContentType = string.Format("multipart/form-data; boundary={0}", Content.Boundary);
            Request.Method = "POST";
            Request.ContentLength = Content.Length;

            return Request;
        }