public void SerializeWithEnums() { var request = new UserGetListInGroupRequest() { ServiceProviderId = "SP", GroupId = "Group", SearchCriteriaUserFirstName = new List <SearchCriteriaUserFirstName>() { new SearchCriteriaUserFirstName() { IsCaseInsensitive = false, Mode = SearchMode.EqualTo, Value = "John" } } }; var document = new BroadsoftDocument <UserGetListInGroupRequest>() { SessionId = "acbdf1234567890", Protocol = "OCI", Command = new List <UserGetListInGroupRequest>() { request } }; var xml = _serializer.Serialize(document); var diff = DiffBuilder.Compare(Input.FromFile(@"test-data/UserGetListInGroupRequest.xml")) .WithTest(xml).Build(); Assert.False(diff.HasDifferences()); }
/// <summary> /// Serialize the root object for a request. /// This should always be BroadsoftDocument /// </summary> /// <param name="document"></param> /// <returns></returns> private XElement SerializeRoot <T>(BroadsoftDocument <T> document) where T : OCICommand { var documentType = typeof(BroadsoftDocument <T>); var ns = XNamespace.None; // By default, element name will by the class name var elementName = "BroadsoftDocument"; // XmlRoot attribute will contain useful information such as namespace var xmlRootAttr = AttributeUtil.Get <XmlRootAttribute>(documentType); if (xmlRootAttr != null) { // Override defaults if attribute properties are set if (xmlRootAttr.Namespace != null) { ns = xmlRootAttr.Namespace; } if (!string.IsNullOrEmpty(xmlRootAttr.ElementName)) { elementName = xmlRootAttr.ElementName; } } // Element contents is an object contianing all attributes and elements under this element return(new XElement(ns + elementName, new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"), new XAttribute(XNamespace.Xmlns + "xsd", "http://www.w3.org/2001/XMLSchema"), GetElementContentsForInstance(documentType, document))); }
public void TestNillableAbstractProperty() { var request = new UserModifyRequest22() { UserId = "*****@*****.**", Extension = "999", PhoneNumber = null, Department = null }; var document = new BroadsoftDocument <UserModifyRequest22>() { SessionId = "636956952081463406", Protocol = "OCI", Command = new List <UserModifyRequest22>() { request } }; var xml = _serializer.Serialize(document); var diff = DiffBuilder.Compare(Input.FromFile(@"test-data/UserModifyRequest22-nulldepartment.xml")) .WithTest(xml).Build(); Assert.False(diff.HasDifferences()); }
public void SerializeWithListOfEnums() { var request = new UserServiceAssignListRequest() { UserId = "*****@*****.**", ServiceName = new List <UserService>() { UserService.AdviceOfCharge, UserService.AlternateNumbers, UserService.AnonymousCallRejection, UserService.AttendantConsole } }; var document = new BroadsoftDocument <UserServiceAssignListRequest>() { SessionId = "acbdf1234567890", Protocol = "OCI", Command = new List <UserServiceAssignListRequest>() { request } }; var xml = _serializer.Serialize(document); var diff = DiffBuilder.Compare(Input.FromFile(@"test-data/UserServiceAssignListRequest.xml")) .WithTest(xml).Build(); Assert.False(diff.HasDifferences()); }
/// <summary> /// Serialize a BroadsoftDocument object /// </summary> /// <param name="document"></param> /// <returns></returns> public string Serialize <T>(BroadsoftDocument <T> document) where T : OCICommand { var rootElement = new XDocument( new XDeclaration("1.0", "utf-8", null), SerializeRoot(document) ); return(rootElement.Declaration + Environment.NewLine + rootElement.ToString()); }
/// <summary> /// Serializes the given list of commands to XML /// </summary> /// <param name="commands"></param> /// <returns></returns> public string SerializeCommands <T>(IEnumerable <T> commands) where T : OCICommand { var broadsoftDocument = new BroadsoftDocument <T> { SessionId = _sessionId, Protocol = "OCI", Command = commands.ToList() }; return(_serializer.Serialize(broadsoftDocument)); }
/// <summary> /// Executes multiple commands /// </summary> /// <param name="commands"></param> /// <exception cref="BadResponseException">Thrown when server returns something that isn't expected.</exception> /// <exception cref="ErrorResponseException">Thrown when server returns an ErrorResponse object.</exception> /// <returns></returns> private async Task <IEnumerable <OCIResponse> > ExecuteCommandsAsync(IEnumerable <OCIRequest> commands, CancellationToken cancellationToken = default) { ValidateCommands(commands); var xml = SerializeCommands(commands); BroadsoftDocument <OCIResponse> response = null; var responseXml = await Transport.SendAsync(xml, cancellationToken).ConfigureAwait(false); if (responseXml.Length == 0) { throw new BadResponseException("Response is empty."); } try { response = _serializer.Deserialize <OCIResponse>(responseXml); } catch (Exception e) { throw new BadResponseException("Unable to deserialize response.", e); } if (!(response is BroadsoftDocument <OCIResponse>)) { throw new BadResponseException("Response did not include a BroadsoftDocument element."); } if (response.Command.Count == 0) { throw new BadResponseException("Response does not include any commands."); } foreach (var command in response.Command) { if (command is ErrorResponse) { throw new ErrorResponseException(command as ErrorResponse); } } return(response.Command); }
public void SerializeWithInheritedProperties() { var request = new GroupUserCallForwardingSettingsGetListRequest() { ServiceProviderId = "SP", GroupId = "GRP", CallForwardingService = CallForwardingService.CallForwardingAlways, ResponsePagingControl = new ResponsePagingControl { ResponsePageSize = 10, ResponseStartIndex = 1 }, SortByExtension = new SortByExtension { IsAscending = false, IsCaseSensitive = false } }; var document = new BroadsoftDocument <GroupUserCallForwardingSettingsGetListRequest>() { SessionId = "acbdf1234567890", Protocol = "OCI", Command = new List <GroupUserCallForwardingSettingsGetListRequest>() { request } }; var xml = _serializer.Serialize(document); var diff = DiffBuilder.Compare(Input.FromFile(@"test-data/GroupUserCallForwardingSettingsGetListRequest.xml")) .WithTest(xml).Build(); Assert.False(diff.HasDifferences()); }
public void SerializeGroupOutgoingCallingPlanRedirectingModifyListRequest() { var departmentKey = new GroupDepartmentKey() { ServiceProviderId = "Service Provider ID", GroupId = "Group ID", Name = "Department Name" }; var permissions = new OutgoingCallingPlanRedirectingPermissionsModify() { Group = true, Local = true, TollFree = true, Toll = true, International = false, OperatorAssisted = false, ChargeableDirectoryAssisted = false, SpecialServicesI = false, SpecialServicesII = false, PremiumServicesI = false, PremiumServicesII = false, Casual = false, UrlDialing = false, Unknown = false }; var departmentPermission = new OutgoingCallingPlanRedirectingDepartmentPermissionsModify() { DepartmentKey = departmentKey, Permissions = permissions }; var request = new GroupOutgoingCallingPlanRedirectingModifyListRequest() { ServiceProviderId = "Service Provider ID", GroupId = "Group ID", DepartmentPermissions = new List <OutgoingCallingPlanRedirectingDepartmentPermissionsModify>() { departmentPermission } }; var document = new BroadsoftDocument <GroupOutgoingCallingPlanRedirectingModifyListRequest>() { SessionId = "636956952081463406", Protocol = "OCI", Command = new List <GroupOutgoingCallingPlanRedirectingModifyListRequest>() { request } }; var xml = _serializer.Serialize(document); var diff = DiffBuilder.Compare(Input.FromFile(@"test-data/GroupOutgoingCallingPlanRedirectingModifyListRequest.xml")) .WithTest(xml).Build(); Assert.False(diff.HasDifferences()); }