public async Task <HttpListener> CreateListener(string connectAddress, int connectPort) { var request = new RequestBuilder(Api); var connectAddresses = new List <string>(); var profileName = "CustomHttpProfile"; var profile = await request.GetProfileByName(profileName); var listenerTypeName = "HTTP"; var listenerType = await request.GetListenerTypeByName(listenerTypeName); connectAddresses.Add(connectAddress); var urls = new List <string>(); urls.Add($"http://{connectAddress}:{connectPort}"); HttpListener httpListener = new HttpListener(); httpListener.Name = "default"; httpListener.Description = "Default Listener"; httpListener.Guid = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 10); httpListener.BindAddress = "0.0.0.0"; httpListener.BindPort = connectPort; httpListener.Urls = urls; httpListener.ConnectAddresses = connectAddresses; httpListener.ConnectPort = connectPort; httpListener.ProfileId = (int)profile.Id; httpListener.ListenerTypeId = (int)listenerType.Id; httpListener.Status = ListenerStatus.Active; httpListener.UseSSL = false; httpListener.Validate(); Console.WriteLine("Creating listener..."); HttpListener listener = await request.CreateHttpListener(httpListener); Console.WriteLine("Listener created"); return(listener); }
public async Task <HttpListener> RunAsync(dynamic httpListenerData) { var request = new RequestBuilder(Api); int profileId; int listenerTypeId; if (httpListenerData.ProfileId == 0 && !string.IsNullOrEmpty(httpListenerData.ProfileName)) { Profile pulledProfile = await request.GetProfileByName(httpListenerData.ProfileName); profileId = (int)pulledProfile.Id; } else { profileId = httpListenerData.ProfileId; } if (httpListenerData.ListenerTypeId == 0 && !string.IsNullOrEmpty(httpListenerData.ListenerTypeName)) { ListenerType pulledListenerType = await request.GetListenerTypeByName(httpListenerData.ListenerTypeName); listenerTypeId = (int)pulledListenerType.Id; } else { listenerTypeId = httpListenerData.ListenerTypeId; } ListenerStatus status; if (httpListenerData.Status == "Active") { status = ListenerStatus.Active; } else { status = ListenerStatus.Uninitialized; } HttpListener httpListener = new HttpListener( httpListenerData.UseSSL, httpListenerData.Urls, httpListenerData.Name, httpListenerData.Guid, httpListenerData.Description, httpListenerData.BindAddress, httpListenerData.BindPort, httpListenerData.ConnectAddresses, httpListenerData.ConnectPort, profileId, listenerTypeId, status ); Console.WriteLine($"Name: {httpListener.Name}"); Console.WriteLine($"Guid: {httpListener.Guid}"); Console.WriteLine($"Description: {httpListener.Description}"); Console.WriteLine($"UseSSL: {httpListener.UseSSL}"); Console.WriteLine($"Urls: {String.Join(",", httpListener.Urls)} ({httpListener.Urls.Count})"); Console.WriteLine($"BindAddress: {httpListener.BindAddress}"); Console.WriteLine($"BindPort: {httpListener.BindPort}"); Console.WriteLine($"ConnectAddresses: {String.Join(",", httpListener.ConnectAddresses)} ({httpListener.ConnectAddresses.Count})"); Console.WriteLine($"ConnectPort: {httpListener.ConnectPort}"); httpListener.Validate(); JsonSerializerSettings SerializationSettings = new JsonSerializerSettings { Formatting = Newtonsoft.Json.Formatting.Indented, DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat, DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize, ContractResolver = new ReadOnlyJsonContractResolver(), Converters = new List <JsonConverter> { new Iso8601TimeSpanConverter() } }; var _requestContent = SafeJsonConvert.SerializeObject(httpListener, SerializationSettings); var strReq = new StringContent(_requestContent, System.Text.Encoding.UTF8); Console.WriteLine("Request Data:"); Console.WriteLine(await strReq.ReadAsStringAsync()); HttpListener listener = await request.CreateHttpListener(httpListener); return(listener); }