public async Task <List <ServiceIdentifier> > GetServicesAsync(Uri securityServerUri, SubSystemIdentifier client, SubSystemIdentifier source) { var soapEnvelope = SoapEnvelope.Prepare() .Body(new ListMethodsRequest()) .WithHeaders( new List <SoapHeader> { IdHeader.Random, UserIdHeader, ProtocolVersionHeader.Version40, (XRoadClient)client, new XRoadService { Instance = source.Instance, MemberClass = source.MemberClass, MemberCode = source.MemberCode, SubSystemCode = source.SubSystemCode, ServiceCode = "listMethods" } }); var soapClient = SoapClient.Prepare(); var envelope = await soapClient.SendAsync(securityServerUri.ToString(), string.Empty, soapEnvelope); soapClient.Dispose(); envelope.ThrowIfFaulted(); return(envelope.Body <ListMethodsResponse>().Services.Select(o => (ServiceIdentifier)o).ToList()); }
public async Task <byte[]> GetWsdlAsync(Uri securityServerUri, SubSystemIdentifier subSystemId, ServiceIdentifier targetService) { byte[] wsdlFileBytes = { }; var client = SoapClient.Prepare() .WithHandler(new DelegatingSoapHandler { OnHttpResponseAsyncAction = async(soapClient, httpContext, cancellationToken) => { if (httpContext.Response.Content.IsMimeMultipartContent()) { var streamProvider = await httpContext.Response.Content.ReadAsMultipartAsync(cancellationToken); var contentCursor = streamProvider.Contents.GetEnumerator(); contentCursor.MoveNext(); var soapResponse = contentCursor.Current; contentCursor.MoveNext(); var wsdlFile = contentCursor.Current; contentCursor.Dispose(); wsdlFileBytes = await wsdlFile.ReadAsByteArrayAsync(); httpContext.Response.Content = soapResponse; } } }); var body = SoapEnvelope.Prepare().Body(new GetWsdlRequest { ServiceCode = targetService.ServiceCode, ServiceVersion = targetService.ServiceVersion }).WithHeaders(new List <SoapHeader> { IdHeader.Random, UserIdHeader, ProtocolVersionHeader.Version40, (XRoadClient)subSystemId, new XRoadService { Instance = targetService.Instance, MemberClass = targetService.MemberClass, MemberCode = targetService.MemberCode, SubSystemCode = targetService.SubSystemCode, ServiceCode = "getWsdl", ServiceVersion = "v1" } }); var result = await client.SendAsync(securityServerUri.ToString(), string.Empty, body); client.Dispose(); result.ThrowIfFaulted(); return(wsdlFileBytes); }
protected bool Equals(SubSystemIdentifier other) { return(base.Equals(other) && string.Equals(SubSystemCode, other.SubSystemCode)); }