Example #1
0
        private FeedAttribute GetGenericFeedAttribute(
            CombinedAsset <FeedAttribute> feedAsset,
            IDictionary <Type, ExternalSystemAttribute> externalSystems)
        {
            FeedAttribute genericFeedAttribute = null;

            if (feedAsset.AssetAttributes.Count() == 1)
            {
                FeedAttribute singleAttribute =
                    feedAsset.AssetAttributes.Single();
                if (singleAttribute.SourceSystem != null &&
                    singleAttribute.EntityTypes.Count() > 0)
                {
                    this.ValidateExternalSystem(
                        singleAttribute.SourceSystem, externalSystems);
                    genericFeedAttribute = singleAttribute;
                }
            }
            if (genericFeedAttribute == null)
            {
                throw new InvalidOperationException(string.Format(
                                                        Resources.InvalidGenericFeedAttribute,
                                                        feedAsset.AssetType.FullName));
            }
            return(genericFeedAttribute);
        }
Example #2
0
        private IEnumerable <FeedAttribute> GetFeedAttributes(
            Type assetType,
            Type entityType,
            FeedAttribute defaultAttribute,
            IDictionary <Type, FeedAttribute> entityTypeFeedAttributes)
        {
            var feedAttributes = new List <FeedAttribute>();

            if (entityTypeFeedAttributes.TryGetValue(
                    entityType, out FeedAttribute feedAttribute))
            {
                feedAttributes.Add(feedAttribute);
                entityTypeFeedAttributes.Remove(entityType);
            }
            if (defaultAttribute != null)
            {
                feedAttributes.Add(defaultAttribute);
            }
            if (feedAttributes.Count == 0)
            {
                throw new InvalidOperationException(string.Format(
                                                        Resources.NoFeedAttributeForEntityType,
                                                        assetType.FullName,
                                                        entityType.FullName));
            }
            return(feedAttributes);
        }
Example #3
0
        /// <summary>
        /// Creates the feed for DSA page URLs.
        /// </summary>
        /// <param name="user">The AdWords User.</param>
        /// <returns>The feed details.</returns>
        private static DSAFeedDetails CreateFeed(AdWordsUser user)
        {
            using (FeedService feedService =
                       (FeedService)user.GetService(AdWordsService.v201802.FeedService))
            {
                // Create attributes.
                FeedAttribute urlAttribute = new FeedAttribute
                {
                    type = FeedAttributeType.URL_LIST,
                    name = "Page URL"
                };

                FeedAttribute labelAttribute = new FeedAttribute
                {
                    type = FeedAttributeType.STRING_LIST,
                    name = "Label"
                };

                // Create the feed.
                Feed sitelinksFeed = new Feed
                {
                    name       = "DSA Feed " + ExampleUtilities.GetRandomString(),
                    attributes = new FeedAttribute[]
                    {
                        urlAttribute,
                        labelAttribute
                    },
                    origin = FeedOrigin.USER
                };

                // Create operation.
                FeedOperation operation = new FeedOperation
                {
                    operand   = sitelinksFeed,
                    @operator = Operator.ADD
                };

                try
                {
                    // Add the feed.
                    FeedReturnValue result = feedService.mutate(new FeedOperation[]
                    {
                        operation
                    });

                    Feed savedFeed = result.value[0];
                    return(new DSAFeedDetails
                    {
                        feedId = savedFeed.id,
                        urlAttributeId = savedFeed.attributes[0].id,
                        labelAttributeId = savedFeed.attributes[1].id,
                    });
                }
                catch (Exception e)
                {
                    throw new System.ApplicationException("Failed to create DSA feed.", e);
                }
            }
        }
Example #4
0
        private static void createSitelinksFeed(AdWordsUser user, SitelinksDataHolder sitelinksData,
                                                string feedName)
        {
            // Get the FeedService.
            FeedService feedService = (FeedService)user.GetService(AdWordsService.v201702.FeedService);

            // Create attributes.
            FeedAttribute textAttribute = new FeedAttribute();

            textAttribute.type = FeedAttributeType.STRING;
            textAttribute.name = "Link Text";

            FeedAttribute finalUrlAttribute = new FeedAttribute();

            finalUrlAttribute.type = FeedAttributeType.URL_LIST;
            finalUrlAttribute.name = "Link Final URLs";

            FeedAttribute line2Attribute = new FeedAttribute();

            line2Attribute.type = FeedAttributeType.STRING;
            line2Attribute.name = "Line 2";

            FeedAttribute line3Attribute = new FeedAttribute();

            line3Attribute.type = FeedAttributeType.STRING;
            line3Attribute.name = "Line 3";

            // Create the feed.
            Feed sitelinksFeed = new Feed();

            sitelinksFeed.name       = feedName;
            sitelinksFeed.attributes = new FeedAttribute[] { textAttribute, finalUrlAttribute,
                                                             line2Attribute, line3Attribute };
            sitelinksFeed.origin = FeedOrigin.USER;

            // Create operation.
            FeedOperation operation = new FeedOperation();

            operation.operand   = sitelinksFeed;
            operation.@operator = Operator.ADD;

            // Add the feed.
            FeedReturnValue result = feedService.mutate(new FeedOperation[] { operation });

            Feed savedFeed = result.value[0];

            sitelinksData.FeedId = savedFeed.id;

            FeedAttribute[] savedAttributes = savedFeed.attributes;
            sitelinksData.LinkTextFeedAttributeId     = savedAttributes[0].id;
            sitelinksData.LinkFinalUrlFeedAttributeId = savedAttributes[1].id;
            sitelinksData.Line2FeedAttributeId        = savedAttributes[2].id;
            sitelinksData.Line3FeedAttributeId        = savedAttributes[3].id;

            Console.WriteLine("Feed with name {0} and ID {1} with linkTextAttributeId {2}, " +
                              "linkFinalUrlAttributeId {3}, line2AttributeId {4} and line3AttributeId {5} " +
                              "was created.", savedFeed.name, savedFeed.id, savedAttributes[0].id,
                              savedAttributes[1].id, savedAttributes[2].id, savedAttributes[3].id);
        }
        /// <summary>
        /// Creates a new Feed for ad customizers.
        /// </summary>
        /// <param name="user">The AdWords user.</param>
        /// <param name="feedName">Name of the feed to be created.</param>
        /// <returns>A new CustomizersDataHolder, populated with the feed ID and
        /// attribute IDs of the new Feed.</returns>
        private static CustomizersDataHolder CreateCustomizerFeed(AdWordsUser user, string feedName)
        {
            // Get the FeedService.
            FeedService feedService = (FeedService)user.GetService(AdWordsService.v201406.FeedService);

            Feed customizerFeed = new Feed();

            customizerFeed.name = feedName;

            FeedAttribute nameAttribute = new FeedAttribute();

            nameAttribute.name = "Name";
            nameAttribute.type = FeedAttributeType.STRING;

            FeedAttribute priceAttribute = new FeedAttribute();

            priceAttribute.name = "Price";
            priceAttribute.type = FeedAttributeType.STRING;

            FeedAttribute dateAttribute = new FeedAttribute();

            dateAttribute.name = "Date";
            dateAttribute.type = FeedAttributeType.DATE_TIME;

            customizerFeed.attributes = new FeedAttribute[] {
                nameAttribute, priceAttribute, dateAttribute
            };

            FeedOperation feedOperation = new FeedOperation();

            feedOperation.operand   = customizerFeed;
            feedOperation.@operator = (Operator.ADD);

            Feed addedFeed = feedService.mutate(new FeedOperation[] { feedOperation }).value[0];

            CustomizersDataHolder dataHolder = new CustomizersDataHolder();

            dataHolder.FeedId = addedFeed.id;
            dataHolder.NameFeedAttributeId  = addedFeed.attributes[0].id;
            dataHolder.PriceFeedAttributeId = addedFeed.attributes[1].id;
            dataHolder.DateFeedAttributeId  = addedFeed.attributes[2].id;

            Console.WriteLine("Feed with name '{0}' and ID {1} was added with:\n", addedFeed.name,
                              dataHolder.FeedId);
            Console.WriteLine("  Name attribute ID {0}\n", dataHolder.NameFeedAttributeId);
            Console.WriteLine("  Price attribute ID {0}\n", dataHolder.PriceFeedAttributeId);
            Console.WriteLine("  Date attribute ID {0}\n", dataHolder.DateFeedAttributeId);

            return(dataHolder);
        }
        /// <summary>
        /// Creates a feed to be used for ad customization.
        /// </summary>
        /// <param name="client">The Google Ads client.</param>
        /// <param name="customerId">The Google Ads customer ID for which the call is made.</param>
        /// <param name="feedName">Name of the feed.</param>
        /// <returns>The resource name of the newly created feed.</returns>
        private string CreateAdCustomizerFeed(GoogleAdsClient client, long customerId,
                                              string feedName)
        {
            // Get the FeedServiceClient.
            FeedServiceClient feedService = client.GetService(Services.V4.FeedService);

            // Creates three feed attributes: a name, a price and a date. The attribute names
            // are arbitrary choices and will be used as placeholders in the ad text fields.
            FeedAttribute nameAttribute = new FeedAttribute()
            {
                Name = "Name",
                Type = FeedAttributeType.String
            };

            FeedAttribute priceAttribute = new FeedAttribute()
            {
                Name = "Price",
                Type = FeedAttributeType.String
            };

            FeedAttribute dateAttribute = new FeedAttribute()
            {
                Name = "Date",
                Type = FeedAttributeType.DateTime
            };

            Feed adCustomizerFeed = new Feed()
            {
                Name       = feedName,
                Attributes = { nameAttribute, priceAttribute, dateAttribute }
            };

            FeedOperation feedOperation = new FeedOperation()
            {
                Create = adCustomizerFeed
            };

            MutateFeedsResponse response =
                feedService.MutateFeeds(customerId.ToString(), new[] { feedOperation });

            string feedResourceName = response.Results[0].ResourceName;

            Console.WriteLine($"Added feed with resource name '{feedResourceName}'.");
            return(feedResourceName);
        }
        /// <summary>
        /// Creates the feed.
        /// </summary>
        /// <param name="client">The Google Ads client.</param>
        /// <param name="customerId">The Google Ads customer ID for which the call is made.</param>
        /// <returns>The resource name of the newly created feed.</returns>
        private string CreateFeed(GoogleAdsClient client, long customerId)
        {
            // Get the FeedService.
            FeedServiceClient feedService = client.GetService(Services.V3.FeedService);

            // Create a URL attribute.
            FeedAttribute urlAttribute = new FeedAttribute()
            {
                Type = FeedAttributeType.UrlList,
                Name = "Page URL"
            };

            // Create a label attribute.
            FeedAttribute labelAttribute = new FeedAttribute()
            {
                Type = FeedAttributeType.StringList,
                Name = "Label"
            };

            // Create the feed.
            Feed feed = new Feed()
            {
                Name       = "DSA Feed #" + ExampleUtilities.GetRandomString(),
                Attributes = { urlAttribute, labelAttribute }
            };

            // Create the operation.
            FeedOperation operation = new FeedOperation()
            {
                Create = feed
            };

            // Add the feed.
            MutateFeedsResponse response =
                feedService.MutateFeeds(customerId.ToString(), new[] { operation });

            string feedResourceName = response.Results[0].ResourceName;

            // Display the result.
            Console.WriteLine($"Feed with resource name '{feedResourceName}' was created.");

            return(feedResourceName);
        }
        private static void createSiteLinksFeed(
            AdWordsUser user, SiteLinksDataHolder siteLinksData)
        {
            // Get the FeedService.
            FeedService feedService = (FeedService)user.GetService(AdWordsService.v201409.FeedService);

            // Create attributes.
            FeedAttribute textAttribute = new FeedAttribute();

            textAttribute.type = FeedAttributeType.STRING;
            textAttribute.name = "Link Text";
            FeedAttribute urlAttribute = new FeedAttribute();

            urlAttribute.type = FeedAttributeType.URL;
            urlAttribute.name = "Link URL";

            // Create the feed.
            Feed siteLinksFeed = new Feed();

            siteLinksFeed.name       = "Feed For Site Links";
            siteLinksFeed.attributes = new FeedAttribute[] { textAttribute, urlAttribute };
            siteLinksFeed.origin     = FeedOrigin.USER;

            // Create operation.
            FeedOperation operation = new FeedOperation();

            operation.operand   = siteLinksFeed;
            operation.@operator = Operator.ADD;

            // Add the feed.
            FeedReturnValue result = feedService.mutate(new FeedOperation[] { operation });

            Feed savedFeed = result.value[0];

            siteLinksData.SiteLinksFeedId = savedFeed.id;
            FeedAttribute[] savedAttributes = savedFeed.attributes;
            siteLinksData.LinkTextFeedAttributeId = savedAttributes[0].id;
            siteLinksData.LinkUrlFeedAttributeId  = savedAttributes[1].id;
            Console.WriteLine("Feed with name {0} and ID {1} with linkTextAttributeId {2}"
                              + " and linkUrlAttributeId {3} was created.", savedFeed.name, savedFeed.id,
                              savedAttributes[0].id, savedAttributes[1].id);
        }
Example #9
0
        private void ProcessGenericFeed(
            HashSet <Feed> feeds,
            CombinedAsset <FeedAttribute> feedAsset,
            IDictionary <Type, ExternalSystemAttribute> externalSystems,
            EntityTypeSuite entityTypes)
        {
            FeedAttribute genericFeedAttribute =
                this.GetGenericFeedAttribute(feedAsset, externalSystems);

            foreach (Type entityType in genericFeedAttribute.EntityTypes)
            {
                this.ValidateEntityType(entityType, entityTypes);
                this.AddFeed(
                    feeds,
                    new Feed(
                        genericFeedAttribute.SourceSystem,
                        entityType,
                        feedAsset.AssetType,
                        new[] { genericFeedAttribute }));
            }
        }
        /// <summary>
        /// Creates the feed for DSA page URLs.
        /// </summary>
        /// <param name="user">The AdWords User.</param>
        /// <returns>The feed details.</returns>
        private static DSAFeedDetails CreateFeed(AdWordsUser user)
        {
            // Get the FeedService.
            FeedService feedService = (FeedService)user.GetService(AdWordsService.v201705.FeedService);

            // Create attributes.
            FeedAttribute urlAttribute = new FeedAttribute();

            urlAttribute.type = FeedAttributeType.URL_LIST;
            urlAttribute.name = "Page URL";

            FeedAttribute labelAttribute = new FeedAttribute();

            labelAttribute.type = FeedAttributeType.STRING_LIST;
            labelAttribute.name = "Label";

            // Create the feed.
            Feed sitelinksFeed = new Feed();

            sitelinksFeed.name       = "DSA Feed " + ExampleUtilities.GetRandomString();
            sitelinksFeed.attributes = new FeedAttribute[] { urlAttribute, labelAttribute };
            sitelinksFeed.origin     = FeedOrigin.USER;

            // Create operation.
            FeedOperation operation = new FeedOperation();

            operation.operand   = sitelinksFeed;
            operation.@operator = Operator.ADD;

            // Add the feed.
            FeedReturnValue result = feedService.mutate(new FeedOperation[] { operation });

            Feed savedFeed = result.value[0];

            return(new DSAFeedDetails {
                feedId = savedFeed.id,
                urlAttributeId = savedFeed.attributes[0].id,
                labelAttributeId = savedFeed.attributes[1].id,
            });
        }
Example #11
0
        private void ProcessNonGenericFeedAsset(
            HashSet <Feed> feeds,
            CombinedAsset <FeedAttribute> feedAsset,
            IDictionary <Type, ExternalSystemAttribute> externalSystems,
            EntityTypeSuite entityTypes)
        {
            FeedAttribute defaultAttribute = this.GetDefaultFeedAttribute(feedAsset);
            IDictionary <Type, FeedAttribute> entityTypeFeedAttributes =
                this.GetEntityTypeFeedAttributes(feedAsset);

            foreach (Type feedImplementation in
                     this.GetInterfaceImplementations(feedAsset.AssetType, typeof(IFeed <>)))
            {
                Type entityType = this.ExtractEntityType(feedImplementation);
                this.ValidateEntityType(entityType, entityTypes);
                IEnumerable <FeedAttribute> feedAttributes = this.GetFeedAttributes(
                    feedAsset.AssetType,
                    entityType,
                    defaultAttribute,
                    entityTypeFeedAttributes);
                Type sourceSystem = this.GetFeedSourceSystem(
                    feedAsset.AssetType,
                    entityType,
                    feedAttributes,
                    externalSystems);
                this.AddFeed(
                    feeds,
                    new Feed(
                        sourceSystem,
                        entityType,
                        feedAsset.AssetType,
                        feedAttributes));
            }
            this.VerifyEachEntityTypeHasMatchingInterfaceImplementation(
                feedAsset.AssetType, entityTypeFeedAttributes);
        }
Example #12
0
        /// <summary>
        /// Creates the feed.
        /// </summary>
        /// <param name="client">The Google Ads client.</param>
        /// <param name="customerId">The Google Ads customer ID for which the real estate feed is
        /// added.</param>
        /// <returns>Resource name of the newly created feed.</returns>
        private string CreateFeed(GoogleAdsClient client, long customerId)
        {
            // Get the FeedService.
            FeedServiceClient feedService = client.GetService(Services.V3.FeedService);

            // Creates a Listing ID attribute.
            FeedAttribute listingIdAttribute = new FeedAttribute()
            {
                Type = FeedAttributeType.String,
                Name = "Listing ID"
            };

            // Creates a Listing Name attribute.
            FeedAttribute listingNameAttribute = new FeedAttribute()
            {
                Type = FeedAttributeType.String,
                Name = "Listing Name"
            };

            // Creates a Final URLs attribute.
            FeedAttribute finalUrlsAttribute = new FeedAttribute()
            {
                Type = FeedAttributeType.UrlList,
                Name = "Final URLs"
            };

            // Creates an Image URL attribute
            FeedAttribute imageUrlAttribute = new FeedAttribute()
            {
                Type = FeedAttributeType.Url,
                Name = "Image URL"
            };

            // Creates a Contextual Keywords attribute
            FeedAttribute contextualKeywordsAttribute = new FeedAttribute()
            {
                Type = FeedAttributeType.StringList,
                Name = "Contextual Keywords"
            };

            // Creates the feed.
            Feed feed = new Feed()
            {
                Name       = "Real Estate Feed #" + ExampleUtilities.GetRandomString(),
                Attributes =
                {
                    listingIdAttribute,
                    listingNameAttribute,
                    finalUrlsAttribute,
                    imageUrlAttribute,
                    contextualKeywordsAttribute
                }
            };

            // Creates the operation.
            FeedOperation operation = new FeedOperation()
            {
                Create = feed
            };

            // Adds the feed.
            MutateFeedsResponse response =
                feedService.MutateFeeds(customerId.ToString(), new[] { operation });

            string feedResourceName = response.Results[0].ResourceName;

            // Displays the result.
            Console.WriteLine($"Feed with resource name '{feedResourceName}' was created.");
            return(feedResourceName);
        }
        /// <summary>
        /// Creates the feed.
        /// </summary>
        /// <param name="client">The Google Ads client.</param>
        /// <param name="customerId">The Google Ads customer ID for which the flights feed is
        /// added.</param>
        /// <returns>Resource name of the newly created feed.</returns>
        private string CreateFeed(GoogleAdsClient client, long customerId)
        {
            // Get the FeedService.
            FeedServiceClient feedService = client.GetService(Services.V5.FeedService);

            // Creates a Flight Description attribute.
            FeedAttribute flightDescriptionAttribute = new FeedAttribute()
            {
                Type = FeedAttributeType.String,
                Name = "Flight Description"
            };

            // Creates a Destination ID attribute.
            FeedAttribute destinationIdAttribute = new FeedAttribute()
            {
                Type = FeedAttributeType.String,
                Name = "Destination ID"
            };

            // Creates a Flight Price attribute.
            FeedAttribute flightPriceAttribute = new FeedAttribute()
            {
                Type = FeedAttributeType.String,
                Name = "Flight Price"
            };

            // Creates a Flight Sale Price attribute.
            FeedAttribute flightSalesPriceAttribute = new FeedAttribute()
            {
                Type = FeedAttributeType.String,
                Name = "Flight Sale Price"
            };

            // Creates a Final URLs attribute.
            FeedAttribute finalUrlsAttribute = new FeedAttribute()
            {
                Type = FeedAttributeType.UrlList,
                Name = "Final URLs"
            };

            // Creates the feed.
            Feed feed = new Feed()
            {
                Name       = "Flights Feed #" + ExampleUtilities.GetRandomString(),
                Attributes =
                {
                    flightDescriptionAttribute,
                    destinationIdAttribute,
                    flightPriceAttribute,
                    flightSalesPriceAttribute,
                    finalUrlsAttribute
                }
            };

            // Creates the operation.
            FeedOperation operation = new FeedOperation()
            {
                Create = feed
            };

            // Adds the feed.
            MutateFeedsResponse response =
                feedService.MutateFeeds(customerId.ToString(), new[] { operation });

            string feedResourceName = response.Results[0].ResourceName;

            // Displays the result.
            Console.WriteLine($"Feed with resource name '{feedResourceName}' was created.");
            return(feedResourceName);
        }
    private static void createSitelinksFeed(AdWordsUser user, SitelinksDataHolder sitelinksData,
        string feedName) {
      // Get the FeedService.
      FeedService feedService = (FeedService) user.GetService(AdWordsService.v201509.FeedService);

      // Create attributes.
      FeedAttribute textAttribute = new FeedAttribute();
      textAttribute.type = FeedAttributeType.STRING;
      textAttribute.name = "Link Text";
      FeedAttribute finalUrlAttribute = new FeedAttribute();
      finalUrlAttribute.type = FeedAttributeType.URL_LIST;
      finalUrlAttribute.name = "Link URL";

      // Create the feed.
      Feed sitelinksFeed = new Feed();
      sitelinksFeed.name = feedName;
      sitelinksFeed.attributes = new FeedAttribute[] {textAttribute, finalUrlAttribute};
      sitelinksFeed.origin = FeedOrigin.USER;

      // Create operation.
      FeedOperation operation = new FeedOperation();
      operation.operand = sitelinksFeed;
      operation.@operator = Operator.ADD;

      // Add the feed.
      FeedReturnValue result = feedService.mutate(new FeedOperation[] {operation});

      Feed savedFeed = result.value[0];
      sitelinksData.FeedId = savedFeed.id;
      FeedAttribute[] savedAttributes = savedFeed.attributes;
      sitelinksData.LinkTextFeedAttributeId = savedAttributes[0].id;
      sitelinksData.LinkFinalUrlFeedAttributeId = savedAttributes[1].id;
      Console.WriteLine("Feed with name {0} and ID {1} with linkTextAttributeId {2}"
          + " and linkFinalUrlAttributeId {3} was created.", savedFeed.name, savedFeed.id,
          savedAttributes[0].id, savedAttributes[1].id);
    }