dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] CVS: pnetlib/System/Net WebClient.cs,1.1,1.2


From: Gopal.V <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnetlib/System/Net WebClient.cs,1.1,1.2
Date: Sun, 25 May 2003 03:24:33 -0400

Update of /cvsroot/dotgnu-pnet/pnetlib/System/Net
In directory subversions:/tmp/cvs-serv6252/System/Net

Modified Files:
        WebClient.cs 
Log Message:
WebClient non-ecma utility class 


Index: WebClient.cs
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnetlib/System/Net/WebClient.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** WebClient.cs        14 May 2003 18:48:23 -0000      1.1
--- WebClient.cs        25 May 2003 07:24:31 -0000      1.2
***************
*** 33,44 ****
                private WebRequest webrequest=null;
                private WebResponse webresponse=null;
  
!               private void WriteToStream(Stream inStream, Stream outStream)
                {
                        byte[] buf = new byte [4096];
                        int read;
                        while((read=inStream.Read(buf, 0 , 4096)) > 0)
                        {
                                outStream.Write(buf,0,read);
                        }
                }
--- 33,71 ----
                private WebRequest webrequest=null;
                private WebResponse webresponse=null;
+               private String baseAddress=null;
  
!               private void CreateWebrequest(String str)
!               {
!                       if(str == null)
!                       {
!                               throw new ArgumentNullException(str);
!                       }
!                       if(webrequest!=null)
!                       {
!                               throw new WebException("Multiple connection 
attempts");
!                       }
!                       Uri uri = new Uri(str);
!                       webrequest = WebRequest.Create(uri);
!                       if(webrequest is HttpWebRequest)
!                       {
!                               (webrequest as HttpWebRequest).KeepAlive = 
false;
!                       }
!                       this.baseAddress = str;
!               }
! 
!               private void WriteToStream(Stream inStream, Stream outStream,
!                                                                       long 
maxBytes) 
                {
                        byte[] buf = new byte [4096];
                        int read;
+                       bool checkMax = (maxBytes != -1);
                        while((read=inStream.Read(buf, 0 , 4096)) > 0)
                        {
                                outStream.Write(buf,0,read);
+                               maxBytes -= read;
+                               if(checkMax && maxBytes <= 0)
+                               {
+                                       break;  
+                               }
                        }
                }
***************
*** 48,53 ****
                        Stream stream = OpenRead(address);
                        MemoryStream memory = new MemoryStream();
!                       WriteToStream(stream, memory);
!                       return memory.GetBuffer();
                }
  
--- 75,83 ----
                        Stream stream = OpenRead(address);
                        MemoryStream memory = new MemoryStream();
!                       WriteToStream(stream, memory,webresponse.ContentLength);
!                       byte[] retval = new byte[memory.Length];
!                       Array.Copy(memory.GetBuffer(),retval,retval.Length);
!                       memory.Close();
!                       return retval;
                }
  
***************
*** 56,60 ****
                        Stream stream = OpenRead(address);
                        FileStream file = File.OpenWrite(fileName);
!                       WriteToStream(stream, file);
                }
  
--- 86,91 ----
                        Stream stream = OpenRead(address);
                        FileStream file = File.OpenWrite(fileName);
!                       WriteToStream(stream, file, webresponse.ContentLength);
!                       file.Close();
                }
  
***************
*** 62,106 ****
                public Stream OpenRead(String address)
                {
!                       Uri uri= new Uri(address);
!                       webrequest = WebRequest.CreateDefault(uri);     
                        webresponse = webrequest.GetResponse();
                        return webresponse.GetResponseStream();
                }
  
-               [TODO]
                public Stream OpenWrite(String address)
                {
!                       // POST ?
!                       throw new NotImplementedException("OpenWrite");
                }
  
-               [TODO]
                public Stream OpenWrite(String address, String method)
                {
!                       throw new NotImplementedException("OpenWrite");
                }
! 
!               [TODO]
                public byte[] UploadData(String address, byte[] data)
                {
!                       throw new NotImplementedException("UploadData");
                }
  
!               [TODO]
                public byte[] UploadData(String address, String method, byte[] 
data)
                {
!                       throw new NotImplementedException("UploadData");
                }
  
-               [TODO]
                public byte[] UploadFile(String address, String fileName)
                {
!                       throw new NotImplementedException("UploadFile");
                }
  
-               [TODO]
                public byte[] UploadFile(String address, String method, String 
fileName)
                {
!                       throw new NotImplementedException("UploadFile");
                }
  
--- 93,164 ----
                public Stream OpenRead(String address)
                {
!                       CreateWebrequest(address);
                        webresponse = webrequest.GetResponse();
                        return webresponse.GetResponseStream();
                }
  
                public Stream OpenWrite(String address)
                {
!                       return OpenWrite(address, "POST");
                }
  
                public Stream OpenWrite(String address, String method)
                {
!                       CreateWebrequest(address);
!                       webrequest.Method = method;
!                       return webrequest.GetRequestStream();
                }
!       
                public byte[] UploadData(String address, byte[] data)
                {
!                       return UploadData(address, "POST", data);
                }
  
!               /* TODO : someday I'm going to implement Chunked data sends 
!                               this way */
                public byte[] UploadData(String address, String method, byte[] 
data)
                {
!                       CreateWebrequest(address);
!                       webrequest.Method = method;
!                       webrequest.ContentLength = data.Length;
!                       Stream stream = webrequest.GetRequestStream();
!                       stream.Write(data,0,data.Length);
!                       webresponse = webrequest.GetResponse();
!                       MemoryStream memory = new MemoryStream(1024);
!                       WriteToStream(webresponse.GetResponseStream(),memory, 
!                                                               
webresponse.ContentLength);
!                       byte [] retval = new byte[memory.Length];
!                       Array.Copy(memory.GetBuffer(), retval, retval.Length);
!                       memory.Close();
!                       return retval;
                }
  
                public byte[] UploadFile(String address, String fileName)
                {
!                       return UploadFile(address, "POST", fileName);
                }
  
                public byte[] UploadFile(String address, String method, String 
fileName)
                {
!                       CreateWebrequest(address);
!                       webrequest.Method = method;
!                       Stream file = File.OpenRead(fileName);
!                       try
!                       {
!                               webrequest.ContentLength = file.Length;
!                       }
!                       catch
!                       {
!                       }
!                       Stream stream = webrequest.GetRequestStream();
!                       WriteToStream(file,stream, -1);
!                       webresponse = webrequest.GetResponse();
!                       MemoryStream memory = new MemoryStream(1024);
!                       WriteToStream(webresponse.GetResponseStream(),memory, 
!                                                       
webresponse.ContentLength);
!                       byte [] retval = new byte[memory.Length];
!                       Array.Copy(memory.GetBuffer(), retval, retval.Length);
!                       memory.Close();
!                       return retval;
                }
  
***************
*** 117,130 ****
                }
  
-               [TODO]
                public String BaseAddress 
                {
                        get
                        {
!                               throw new 
NotImplementedException("BaseAddress");
                        }
                        set
                        {
!                               throw new 
NotImplementedException("BaseAddress");
                        }
                }
--- 175,187 ----
                }
  
                public String BaseAddress 
                {
                        get
                        {
!                               return this.baseAddress;
                        }
                        set
                        {
!                               this.baseAddress=value;
                        }
                }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]