Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }