public void GetMetadata_ShouldBeSuccessful(string fullMessage, SmsMetadata expectedData) { //Act var result = _smsParser.GetMetadata(fullMessage); //Assert result.IsFailure.ShouldBeFalse(); result.Value.Position.ShouldNotBeNull(); result.Value.Position.Latitude.ShouldBe(expectedData.Position.Latitude); result.Value.Position.Longitude.ShouldBe(expectedData.Position.Longitude); result.Value.Timestamp.ShouldBe(expectedData.Timestamp); result.Value.Radius.ShouldBe(expectedData.Radius); result.Value.InnerRadius.ShouldBe(expectedData.InnerRadius); result.Value.OuterRadius.ShouldBe(expectedData.OuterRadius); result.Value.OpeningAngle.ShouldBe(expectedData.OpeningAngle); result.Value.StartAngle.ShouldBe(expectedData.StartAngle); }
/// <summary> /// Получение XML из SMS Body /// </summary> /// <param name="body"></param> /// <returns></returns> public Result <SmsMetadata> GetMetadata(string body) { var result = Parse(body, SmsXmlRegexPattern, SmsXmlRegexPatternGroupName); if (result.IsFailure) { _logger.Warning($"Error getting metadata from sms body. {result.ErrorMessage}"); return(Result.Failure <SmsMetadata>(ErrorCodes.ParsingError)); } var xml = result.Value; var doc = new XmlDocument(); doc.LoadXml(xml); var root = doc.DocumentElement; var timestamp = GetMetadataField(root, XmlTimestampTagName, _fieldParser.EmptyParser); var position = GetMetadataField(root, XmlPositionTagName, _fieldParser.PositionParser); var radius = GetMetadataField(root, XmlRadiusTagName, _fieldParser.IntParser); var innerRadius = GetMetadataField(root, XmlInnerRadiusTagName, _fieldParser.IntParser); var outerRadius = GetMetadataField(root, XmlOuterRadiusTagName, _fieldParser.IntParser); var startAngle = GetMetadataField(root, XmlStartAngleTagName, _fieldParser.IntParser); var openingAngle = GetMetadataField(root, XmlOpeningAngleTagName, _fieldParser.IntParser); var data = new SmsMetadata() { Timestamp = timestamp, Position = position, Radius = radius, OuterRadius = outerRadius, InnerRadius = innerRadius, StartAngle = startAngle, OpeningAngle = openingAngle }; return(Result.Success(data)); }
private void NotifyAboutNewSms(Guid smsId, string senderExtension, string smsText, SmsMetadata smsMetadata) { _logger.Debug($"Отправка SMS в шину. SenderExtension: {senderExtension}"); var position = smsMetadata.Position == null ? null : new Position { Latitude = smsMetadata.Position.Latitude, Longitude = smsMetadata.Position.Longitude }; var smsEvent = new IncomingSmsIntegrationEvent { CallerExtension = senderExtension, Sms = new Sms { Message = smsText, Timestamp = smsMetadata.Timestamp, Location = new Location { InnerRadius = smsMetadata.InnerRadius, OpeningAngle = smsMetadata.OpeningAngle, OuterRadius = smsMetadata.OuterRadius, Radius = smsMetadata.Radius, StartAngle = smsMetadata.StartAngle, Position = position } }, SmsId = smsId }; _queueSender.Publish(smsEvent); }