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());
        }
Esempio n. 2
0
        /// <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());
        }
Esempio n. 5
0
        /// <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());
        }