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); }
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); }
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); }
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)); }
public GetServicesResponse GetServices() { var response = new GetServicesResponse { Services = servicesConfiguration.Services }; return(response); }
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); }
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; }
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(); }); }
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); } }
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)); }
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)); }
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); }
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); }