using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.IO; using MontoyaTech.Rest.Net; using System.Net.Mime; namespace MontoyaTech.Rest.Net.Example { public class Program { public class User { public string Name = null; public List List = null; public ulong Property { get; set; } public User() { } public User(string name) { this.Name = name; } } public static void Main(string[] args) { File.WriteAllText("test.txt", "hello from a file"); var listener = new RouteListener(8080, new Route(HttpRequestMethod.Get, "/status", Status), new Route(HttpRequestMethod.Post, "/add/{a}/{b}", Add), new Route(HttpRequestMethod.Get, "/compress", Compress), new Route(HttpRequestMethod.Get, "/file/compress", CompressFile), new Route(HttpRequestMethod.Get, "/auth/{username}", Exists), new Route(HttpRequestMethod.Post, "/auth/signup", Signup), new Route(HttpRequestMethod.Get, "/auth/", Json) ); string code = listener.GenerateCSharpClient(); Console.WriteLine(code); Console.WriteLine(); string staticCode = listener.GenerateCSharpClient("StaticClient", staticCode: true); Console.WriteLine(staticCode); listener.RequestPreProcessEvent += (HttpListenerContext context) => { Console.WriteLine($"[{context.Request.HttpMethod}] Request start: " + context.Request.RawUrl); return true; }; listener.RequestPostProcessEvent += (HttpListenerContext context) => { Console.WriteLine($"[{context.Request.HttpMethod}] Request end: " + context.Request.RawUrl); }; listener.Start(); Console.WriteLine("Available routes:"); foreach (var route in listener.Routes) Console.WriteLine($"- [{route.Method}] {route.Syntax}"); Console.WriteLine($"Rest api server running at {listener.BaseUrl}"); listener.Block(); } [RouteGroup("Test")] [RouteResponse(typeof(string))] public static HttpListenerResponse Status(HttpListenerContext context) { return context.Response.WithStatus(HttpStatusCode.OK).WithText("Everything is operational. 👍"); } [RouteGroup("Test")] [RouteResponse(typeof(string))] public static HttpListenerResponse Add(HttpListenerContext context, double a, double b) { return context.Response.WithStatus(HttpStatusCode.OK).WithText((a + b).ToString()); } [RouteGroup("Test")] [RouteResponse(typeof(string))] public static HttpListenerResponse Compress(HttpListenerContext context) { return context.Response.WithStatus(HttpStatusCode.OK).WithCompressedText("hello world"); } [RouteGroup("Test")] [RouteResponse(typeof(string))] public static HttpListenerResponse CompressFile(HttpListenerContext context) { return context.Response.WithStatus(HttpStatusCode.OK).WithCompressedFile("test.txt"); } [RouteGroup("Test")] [RouteRequest(typeof(User))] public static HttpListenerResponse SignupRequest(HttpListenerContext context) { return context.Response.WithStatus(HttpStatusCode.OK); } [RouteGroup("Auth")] [RouteName("UserExists")] [RouteResponse(typeof(bool), Json = false)] public static HttpListenerResponse Exists(HttpListenerContext context, string name) { Console.WriteLine("Auth.Exists called, name:" + name); return context.Response.WithStatus(HttpStatusCode.OK).WithText("true"); } [RouteGroup("Auth")] [RouteRequest(typeof(User))] public static HttpListenerResponse Signup(HttpListenerContext context) { return context.Response.WithStatus(HttpStatusCode.OK); } [RouteGroup("Auth")] [RouteName("Get")] [RouteResponse(typeof(User))] public static HttpListenerResponse Json(HttpListenerContext context) { return context.Response.WithStatus(HttpStatusCode.OK).WithJson(new User("Rest.Net")); } } }