Пример #1
0
        public static Dictionary <Uri, ServiceProfile> GetServices <T>()
        {
            Dictionary <Uri, ServiceProfile> services = new Dictionary <Uri, ServiceProfile>();

            GetServicesRequest request = new GetServicesRequest();

            request.ServiceName = typeof(T).FullName;

            GetServicesResponse response = MessageSender.Send <IServiceDiscoveryService, GetServicesResponse, GetServicesRequest>(
                delegate(IServiceDiscoveryService s, GetServicesRequest r)
            {
                return(s.GetServices(r));
            },
                request);

            if (response.Services != null)
            {
                foreach (var service in response.Services)
                {
                    ServiceProfile profile = new ServiceProfile()
                    {
                        Name         = service.Name,
                        ContractName = service.ContractName,
                        Binding      = service.Binding,
                        Address      = service.Address,
                        HostName     = service.HostName,
                        Uri          = service.Uri,
                    };
                    services.Add(profile.Uri, profile);
                }
            }

            return(services);
        }
Пример #2
0
        public static GetServicesResponse Unmarshall(UnmarshallerContext context)
        {
            GetServicesResponse getServicesResponse = new GetServicesResponse();

            getServicesResponse.HttpResponse = context.HttpResponse;
            getServicesResponse.RequestId    = context.StringValue("GetServices.RequestId");

            GetServicesResponse.GetServices_Data data = new GetServicesResponse.GetServices_Data();

            List <string> data_services = new List <string>();

            for (int i = 0; i < context.Length("GetServices.Data.Services.Length"); i++)
            {
                data_services.Add(context.StringValue("GetServices.Data.Services[" + i + "]"));
            }
            data.Services = data_services;

            List <GetServicesResponse.GetServices_Data.GetServices_DetailsItem> data_details = new List <GetServicesResponse.GetServices_Data.GetServices_DetailsItem>();

            for (int i = 0; i < context.Length("GetServices.Data.Details.Length"); i++)
            {
                GetServicesResponse.GetServices_Data.GetServices_DetailsItem detailsItem = new GetServicesResponse.GetServices_Data.GetServices_DetailsItem();
                detailsItem.ServiceName = context.StringValue("GetServices.Data.Details[" + i + "].ServiceName");
                detailsItem.Pid         = context.StringValue("GetServices.Data.Details[" + i + "].Pid");
                detailsItem.RegionId    = context.StringValue("GetServices.Data.Details[" + i + "].RegionId");

                data_details.Add(detailsItem);
            }
            data.Details             = data_details;
            getServicesResponse.Data = data;

            return(getServicesResponse);
        }
Пример #3
0
        public GetServicesResponse GetServices(GetServicesRequest request)
        {
            var response = new GetServicesResponse();

            response.ServiceInfoList = new List <ServiceInfo>();

            //response.ServiceInfoList =
            //    _allInfo.Where(w => w.ServerName == request.ServerName || request.AllServices).Distinct().ToList();

            var deneme =
                _allInfo.Where(w => w.ServerName == request.ServerName || request.AllServices)
                .GroupBy(g => g.ApplicationName)
                .Select(group => new { ApplicationName = group.Key, Items = group.ToList() })
                .ToList();

            foreach (var item in deneme)
            {
                var serviceInfo = item.Items.FirstOrDefault();
                if (serviceInfo != null)
                {
                    response.ServiceInfoList.Add(new ServiceInfo()
                    {
                        ServerName         = serviceInfo.ServerName,
                        ApplicationName    = item.ApplicationName,
                        FirstHeartBeatDate = serviceInfo.FirstHeartBeatDate,
                        LastHeartBeatDate  = serviceInfo.LastHeartBeatDate
                    });
                }
            }


            return(response);
        }
Пример #4
0
        private async void btnGetServices_Click(object sender, EventArgs e)
        {
            Collivery collivery = new Collivery()
            {
                auth = new AuthenticateRequest()
                {
                    email    = txtEmail.Text,
                    password = txtPassword.Text
                }
            };

            GetServicesResponse townsResp = await collivery.get_services(new GetServicesRequest()
            {
                token = authResp.token
            });

            if (townsResp.error != null)
            {
                txtResult.Text = "Error - " + townsResp.error.error;
            }
            else
            {
                txtResult.Text = "Success - Services Returned: " + townsResp.services.Count;
            }
        }
        public async Task <ActionResult> Get()
        {
            GetServicesRequest request = new GetServicesRequest();

            GetServicesResponse response = await _getServiceHandler.Handle(request);

            return(Ok(response));
        }
Пример #6
0
        public GetServicesResponse GetServices()
        {
            var response = new GetServicesResponse
            {
                Services = servicesConfiguration.Services
            };

            return(response);
        }
Пример #7
0
        public override async Task <GetServicesResponse> GetServices(GetServicesRequest request, ServerCallContext context)
        {
            var serviceName = await _ServiceQuery.GetServices(context.CancellationToken);

            GetServicesResponse getServicesResponse = new GetServicesResponse();

            getServicesResponse.Services.Add(serviceName.Distinct().ToArray());
            return(getServicesResponse);
        }
Пример #8
0
 public Media20Services(string Hostname, string User, string Password)
 {
     m_services                = null;
     m_mediaClient             = null;
     m_profiles                = null;
     m_Hostname                = Hostname;
     m_User                    = User;
     m_Password                = Password;
     m_BasicBasicAuthBehaviour = new BasicAuthBehaviour(m_User, m_Password);
     m_PasswordDigestBehavior  = new PasswordDigestBehavior(m_User, m_Password, 0);
     m_ErrorMessage            = "";
     m_deviceInformations      = null;
     m_HostnameInformation     = null;
 }
Пример #9
0
        public void Execute_ShouldReturnUrlOfService()
        {
            const string testServiceName = "Test Service";
            const string version         = "v1";
            const string url             = "http://bogus/";

            var services = new List <ServiceConfigurationDto>
            {
                new ServiceConfigurationDto
                {
                    Name    = testServiceName,
                    Url     = url,
                    Version = version
                }
            };

            var repositoryResponse = new GetServicesResponse
            {
                Services = services
            };

            var repositoryMock = new Mock <IServiceRepository>();

            repositoryMock.Setup(x => x.GetServices()).Returns(repositoryResponse);

            ScopeAction action = scope =>
            {
                var request = new GetServiceUrlRequest()
                {
                    ServiceName = testServiceName, ServiceVersion = version
                };

                var response = scope.Resolve <GetServiceUrlCommand>().Execute(request, new Dictionary <string, object>());

                Assert.IsNotNull(response);
                Assert.AreEqual(url, response.ServiceUrl);
            };

            RunAction(action, builder =>
            {
                builder.RegisterInstance(repositoryMock.Object).As <IServiceRepository>();

                builder.RegisterType <GetServiceUrlCommand>()
                .AsImplementedInterfaces()
                .AsSelf()
                .PropertiesAutowired();
            });
        }
Пример #10
0
        public OnVifDevice(string Hostname, string User, string Password)
        {
            m_services = null;

            m_Hostname = Hostname;
            m_User     = User;
            m_Password = Password;
            m_BasicBasicAuthBehaviour = new BasicAuthBehaviour(m_User, m_Password);
            m_PasswordDigestBehavior  = new PasswordDigestBehavior(m_User, m_Password, 0);
            m_ErrorMessage            = "";
            m_deviceInformations      = null;
            m_HostnameInformation     = null;
            m_Capabilities            = null;
            m_device = null;
            m_capabilitiesResponse = null;
            m_SystemDateTime       = null;
        }
        public GetServicesResponse GetServices(GetServicesRequest request)
        {
            try
            {
                if (request == null)
                {
                    throw new ArgumentNullException("request");
                }

                GetServicesResponse response = new GetServicesResponse();
                response.Services = new List <ServiceData>();

                Type contractType = (from c in contracts
                                     where c.ContractType.FullName == request.ServiceName
                                     select c.ContractType).FirstOrDefault();
                if (contractType != null)
                {
                    IList <ServiceEndpoint> endpoints = EndpointProvider.GetEndpoints(contractType);
                    foreach (var endpoint in endpoints)
                    {
                        ServiceData service = new ServiceData()
                        {
                            Name         = endpoint.Name,
                            ContractName = endpoint.Contract.ContractType.FullName,
                            Binding      = endpoint.Binding.Name,
                            Address      = endpoint.Address.Uri.ToString(),
                            HostName     = endpoint.ListenUri.Host,
                            Uri          = endpoint.ListenUri,
                        };
                        response.Services.Add(service);
                    }
                }

                return(response);
            }
            catch (Exception ex)
            {
                throw new FaultException <ServiceDiscoveryServiceFault>(new ServiceDiscoveryServiceFault(ex.Message, ex), ex.Message);
            }
        }
Пример #12
0
        public static T GetService <T>(string hostName, string uri) where T : class
        {
            GetServicesRequest request = new GetServicesRequest();

            request.ServiceName = typeof(T).FullName;

            GetServicesResponse response = MessageSender.Send <IServiceDiscoveryService, GetServicesResponse, GetServicesRequest>(
                delegate(IServiceDiscoveryService s, GetServicesRequest r)
            {
                return(s.GetServices(r));
            },
                request);

            if (response.Services != null && response.Services.Count > 0)
            {
                ChannelFactory <T> channelFactory = new ChannelFactory <T>(new NetTcpBinding(ServiceConfiguration.DefaultNetTcpBindingName));
                T client = channelFactory.CreateChannel(new EndpointAddress(response.Services.Find(s => s.Uri.Host == hostName && s.Uri.ToString() == uri).Uri));
                return(client);
            }

            throw new ContractNotFoundException(string.Format(CultureInfo.InvariantCulture, "Cannot find service type [{0}] by hostname [{1}].", typeof(T).FullName, hostName));
        }
Пример #13
0
        public static T GetService <T, C>(C callback) where T : class
        {
            GetServicesRequest request = new GetServicesRequest();

            request.ServiceName = typeof(T).FullName;

            GetServicesResponse response = MessageSender.Send <IServiceDiscoveryService, GetServicesResponse, GetServicesRequest>(
                delegate(IServiceDiscoveryService s, GetServicesRequest r)
            {
                return(s.GetServices(r));
            },
                request);

            if (response.Services != null && response.Services.Count > 0)
            {
                Locator.Remove <T>();

                DuplexChannelFactory <T> channelFactory = new DuplexChannelFactory <T>(new InstanceContext(callback), new NetTcpBinding(ServiceConfiguration.DefaultNetTcpBindingName));
                T client = channelFactory.CreateChannel(new EndpointAddress(response.Services[0].Uri));
                return(client);
            }

            throw new ContractNotFoundException(string.Format(CultureInfo.InvariantCulture, "Cannot find service type [{0}].", typeof(T).FullName));
        }
Пример #14
0
        public async Task <bool> GetServicesAsync()
        {
            try
            {
                if (m_services != null)
                {
                    return(true);
                }


                HttpTransportBindingElement httpBinding = new HttpTransportBindingElement();
                httpBinding.AuthenticationScheme = AuthenticationSchemes.Digest;
                var messageElement = new TextMessageEncodingBindingElement();
                messageElement.MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None);
                CustomBinding binding = new CustomBinding(messageElement, httpBinding);

                EndpointAddress address = new EndpointAddress($@"http://{m_Hostname}/onvif/device_service");

                DeviceClient device = new DeviceClient(binding, address);

                bool   useAuth = !string.IsNullOrEmpty(m_BasicBasicAuthBehaviour.Username) && !string.IsNullOrEmpty(m_BasicBasicAuthBehaviour.Password);
                double diff    = 0;
                if (useAuth)
                {
                    device.Endpoint.EndpointBehaviors.Add(m_BasicBasicAuthBehaviour);
                }
                try
                {
                    device.Endpoint.EndpointBehaviors.Add(m_PasswordDigestBehavior);
                    //ensure date and time are in sync
                    //add basic auth for compat with some cameras
                    var sdt = await device.GetSystemDateAndTimeAsync();

                    var d = sdt.UTCDateTime.Date;
                    var t = sdt.UTCDateTime.Time;

                    var dt = new System.DateTime(d.Year, d.Month, d.Day, t.Hour, t.Minute, t.Second);

                    diff = (System.DateTime.UtcNow - dt).TotalSeconds;
                    m_PasswordDigestBehavior.TimeOffset = diff;

                    GetDeviceInformationRequest request = new GetDeviceInformationRequest();


                    m_deviceInformations = await device.GetDeviceInformationAsync(request);


                    m_HostnameInformation = await device.GetHostnameAsync();
                }
                catch (Exception ex)
                {
                    m_ErrorMessage = ex.Message;
                    return(false);
                }



                //   device.InnerChannel.OperationTimeout = TimeSpan.FromMinutes(1);
                binding.SendTimeout = binding.CloseTimeout = binding.ReceiveTimeout = binding.OpenTimeout = TimeSpan.FromSeconds(5);

                m_services = await device.GetServicesAsync(true);



                foreach (var service in m_services.Service)
                {
                    if (service.Namespace == "http://www.onvif.org/ver10/media/wsdl")
                    {
                    }
                }
            }

            catch (Exception ex)
            {
                m_ErrorMessage = ex.Message;
                return(false);
            }
            return(true);
        }
Пример #15
0
        public async Task <bool> InitalizeDeviceAsync()
        {
            try
            {
                if (m_services != null)
                {
                    return(true);
                }


                HttpTransportBindingElement httpBinding = new HttpTransportBindingElement();
                httpBinding.AuthenticationScheme = AuthenticationSchemes.Digest;
                var messageElement = new TextMessageEncodingBindingElement();
                messageElement.MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None);
                CustomBinding binding = new CustomBinding(messageElement, httpBinding);

                EndpointAddress address = new EndpointAddress($@"http://{m_Hostname}/onvif/device_service");

                binding.SendTimeout = binding.CloseTimeout = binding.ReceiveTimeout = binding.OpenTimeout = TimeSpan.FromSeconds(15);

                m_device = new DeviceClient(binding, address);
                //    var discoverymode = m_device.GetRemoteDiscoveryModeAsync();

                bool   useAuth = !string.IsNullOrEmpty(m_BasicBasicAuthBehaviour.Username) && !string.IsNullOrEmpty(m_BasicBasicAuthBehaviour.Password);
                double diff    = 0;


                if (useAuth)
                {
                    m_device.Endpoint.EndpointBehaviors.Add(m_BasicBasicAuthBehaviour);
                    m_device.Endpoint.EndpointBehaviors.Add(m_PasswordDigestBehavior);
                }

                //ensure date and time are in sync
                //add basic auth for compat with some cameras
                m_SystemDateTime = await m_device.GetSystemDateAndTimeAsync();


                var d = m_SystemDateTime.UTCDateTime.Date;
                var t = m_SystemDateTime.UTCDateTime.Time;

                var dt = new System.DateTime(d.Year, d.Month, d.Day, t.Hour, t.Minute, t.Second);

                diff = (System.DateTime.UtcNow - dt).TotalSeconds;
                m_PasswordDigestBehavior.TimeOffset = diff;

                GetDeviceInformationRequest request = new GetDeviceInformationRequest();
                m_deviceInformations = await m_device.GetDeviceInformationAsync(request);

                this.m_HostnameInformation = await m_device.GetHostnameAsync();

                m_services = await m_device.GetServicesAsync(true);
            }

            catch (Exception ex)
            {
                m_ErrorMessage = ex.Message;
                throw new OnVifException("OnVifDevice.InitalizeDeviceAsync", ex);
                //            return false;
            }

            return(m_services != null);
        }