示例#1
0
文件: Rest.cs 项目: Pryaxis/Restful
        /// <summary>
        /// Creates a new instance of <see cref="Rest"/> listening on the given IP and port
        /// </summary>
        /// <param name="ip"><see cref="IPAddress"/> to listen on</param>
        /// <param name="port">Port to listen on</param>
        public Rest(IPAddress ip, int port)
        {
            Ip   = ip;
            Port = port;
            AssemblyName assembly = typeof(TShock).Assembly.GetName();

            serverHeader = new StringHeader("Server", $"{assembly.Name}/{assembly.Version}");
        }
示例#2
0
文件: Rest.cs 项目: Z0kc/TShockMobile
        /// <summary>
        /// Creates a new instance of <see cref="Rest"/> listening on the given IP and port
        /// </summary>
        /// <param name="ip"><see cref="IPAddress"/> to listen on</param>
        /// <param name="port">Port to listen on</param>
        public Rest(IPAddress ip, int port)
        {
            Ip   = ip;
            Port = port;
            AssemblyName assembly = this.GetType().Assembly.GetName();

            serverHeader = new StringHeader("Server", String.Format("{0}/{1}", assembly.Name, assembly.Version));
        }
        /// <summary>
        /// Read a UTF-8 encoded string request from a memory span
        /// </summary>
        /// <param name="from">Origin</param>
        /// <param name="data">UTF-8 string</param>
        /// <returns>Number of bytes read</returns>
        public static int ReadStringRequest(ReadOnlySpan <byte> from, out ReadOnlySpan <byte> data)
        {
            StringHeader header = MemoryMarshal.Cast <byte, StringHeader>(from)[0];

            // Read header
            int bytesRead = Marshal.SizeOf(header);

            // Read data
            data       = from.Slice(bytesRead, header.Length);
            bytesRead += header.Length;

            return(AddPadding(bytesRead));
        }
        /// <summary>
        /// Write a <see cref="StringHeader"/> to a memory span
        /// </summary>
        /// <param name="to">Destination</param>
        /// <param name="data">String data</param>
        /// <returns>Number of bytes written</returns>
        public static int WriteStringRequest(Span <byte> to, string data)
        {
            Span <byte> unicodeData = Encoding.UTF8.GetBytes(data);

            // Write header
            StringHeader request = new StringHeader
            {
                Length = (ushort)unicodeData.Length
            };

            MemoryMarshal.Write(to, ref request);
            int bytesWritten = Marshal.SizeOf(request);

            // Write data
            unicodeData.CopyTo(to.Slice(bytesWritten));
            bytesWritten += unicodeData.Length;
            return(AddPadding(to, bytesWritten));
        }
示例#5
0
文件: Response.cs 项目: wingcd/utnt
 /// <summary>
 /// Redirect user.
 /// </summary>
 /// <param name="uri">Where to redirect to.</param>
 /// <remarks>
 /// Any modifications after a redirect will be ignored.
 /// </remarks>
 public void Redirect(string uri)
 {
     Status = HttpStatusCode.Redirect;
     _headers["Location"] = new StringHeader("Location", uri);
 }