示例#1
0
        public static async Task WriteStreetName(
            this ISyndicationFeedWriter writer,
            IOptions <ResponseOptions> responseOptions,
            AtomFormatter formatter,
            string category,
            StreetNameSyndicationQueryResult streetName)
        {
            var item = new SyndicationItem
            {
                Id          = streetName.Position.ToString(CultureInfo.InvariantCulture),
                Title       = $"{streetName.ChangeType}-{streetName.Position}",
                Published   = streetName.RecordCreatedAt.ToBelgianDateTimeOffset(),
                LastUpdated = streetName.LastChangedOn.ToBelgianDateTimeOffset(),
                Description = BuildDescription(streetName, responseOptions.Value.Naamruimte)
            };

            // TODO: Hier moet prolly version nog ergens in
            if (streetName.PersistentLocalId.HasValue)
            {
                item.AddLink(
                    new SyndicationLink(
                        new Uri($"{responseOptions.Value.Naamruimte}/{streetName.PersistentLocalId.Value}"),
                        AtomLinkTypes.Related));

                item.AddLink(
                    new SyndicationLink(
                        new Uri(string.Format(responseOptions.Value.DetailUrl, streetName.PersistentLocalId.Value)),
                        AtomLinkTypes.Self));

                item.AddLink(
                    new SyndicationLink(
                        new Uri(string.Format($"{responseOptions.Value.DetailUrl}.xml", streetName.PersistentLocalId.Value)),
                        AtomLinkTypes.Alternate)
                {
                    MediaType = MediaTypeNames.Application.Xml
                });

                item.AddLink(
                    new SyndicationLink(
                        new Uri(string.Format($"{responseOptions.Value.DetailUrl}.json", streetName.PersistentLocalId.Value)),
                        AtomLinkTypes.Alternate)
                {
                    MediaType = MediaTypeNames.Application.Json
                });
            }

            item.AddCategory(
                new SyndicationCategory(category));

            item.AddContributor(
                new SyndicationPerson(
                    "agentschap Informatie Vlaanderen",
                    "*****@*****.**",
                    AtomContributorTypes.Author));

            await writer.Write(item);
        }
示例#2
0
        public static async Task WriteStreetName(
            this ISyndicationFeedWriter writer,
            IOptions <ResponseOptions> responseOptions,
            AtomFormatter formatter,
            string category,
            StreetNameSyndicationQueryResult streetName)
        {
            var item = new SyndicationItem
            {
                Id          = streetName.Position.ToString(CultureInfo.InvariantCulture),
                Title       = $"{streetName.ChangeType}-{streetName.Position}",
                Published   = streetName.RecordCreatedAt.ToBelgianDateTimeOffset(),
                LastUpdated = streetName.LastChangedOn.ToBelgianDateTimeOffset(),
                Description = BuildDescription(streetName, responseOptions.Value.Naamruimte)
            };

            if (streetName.PersistentLocalId.HasValue)
            {
                item.AddLink(
                    new SyndicationLink(
                        new Uri($"{responseOptions.Value.Naamruimte}/{streetName.PersistentLocalId.Value}"),
                        AtomLinkTypes.Related));

                //item.AddLink(
                //    new SyndicationLink(
                //        new Uri(string.Format(responseOptions.Value.DetailUrl, streetName.PersistentLocalId.Value)),
                //        AtomLinkTypes.Self));

                //item.AddLink(
                //    new SyndicationLink(
                //            new Uri(string.Format($"{responseOptions.Value.DetailUrl}.xml", streetName.PersistentLocalId.Value)),
                //            AtomLinkTypes.Alternate)
                //    { MediaType = MediaTypeNames.Application.Xml });

                //item.AddLink(
                //    new SyndicationLink(
                //            new Uri(string.Format($"{responseOptions.Value.DetailUrl}.json", streetName.PersistentLocalId.Value)),
                //            AtomLinkTypes.Alternate)
                //    { MediaType = MediaTypeNames.Application.Json });
            }

            item.AddCategory(
                new SyndicationCategory(category));

            item.AddContributor(
                new SyndicationPerson(
                    streetName.Organisation == null ? Organisation.Unknown.ToName() : streetName.Organisation.Value.ToName(),
                    string.Empty,
                    AtomContributorTypes.Author));

            await writer.Write(item);
        }
示例#3
0
        private static string BuildDescription(StreetNameSyndicationQueryResult streetName, string naamruimte)
        {
            if (!streetName.ContainsEvent && !streetName.ContainsObject)
            {
                return("No data embedded");
            }

            var content = new SyndicationContent();

            if (streetName.ContainsObject)
            {
                content.Object = new StreetNameSyndicationContent(
                    streetName.StreetNameId.Value,
                    naamruimte,
                    streetName.PersistentLocalId,
                    streetName.Status,
                    streetName.NisCode,
                    streetName.NameDutch,
                    streetName.NameFrench,
                    streetName.NameGerman,
                    streetName.NameEnglish,
                    streetName.HomonymAdditionDutch,
                    streetName.HomonymAdditionFrench,
                    streetName.HomonymAdditionEnglish,
                    streetName.HomonymAdditionGerman,
                    streetName.IsComplete,
                    streetName.LastChangedOn.ToBelgianDateTimeOffset(),
                    streetName.Organisation,
                    streetName.Reason);
            }

            if (streetName.ContainsEvent)
            {
                var doc = new XmlDocument();
                doc.LoadXml(streetName.EventDataAsXml);
                content.Event = doc.DocumentElement;
            }

            return(content.ToXml());
        }