/// <summary>
    /// Run the code example.
    /// </summary>
    /// <param name="user">The DFP user object running the code example.</param>
    public override void Run(DfpUser user) {
      // Get the CreativeService.
      CreativeService creativeService =
          (CreativeService) user.GetService(DfpService.v201405.CreativeService);

      long creativeId = long.Parse(_T("INSERT_IMAGE_CREATIVE_ID_HERE"));

      // Create a statement to get the image creative.
      StatementBuilder statementBuilder = new StatementBuilder()
          .Where("id = :id")
          .OrderBy("id ASC")
          .Limit(StatementBuilder.SUGGESTED_PAGE_LIMIT)
          .AddValue("id", creativeId);

      try {
        // Get the creative.
        CreativePage page = creativeService.getCreativesByStatement(statementBuilder.ToStatement());

        if (page.results != null) {
          ImageCreative imageCreative = (ImageCreative) page.results[0];
          // Since we cannot set id to null, we mark it as not specified.
          imageCreative.idSpecified = false;

          imageCreative.advertiserId = imageCreative.advertiserId;
          imageCreative.name = imageCreative.name + " (Copy #" + GetTimeStamp() + ")";

          // Create image asset.
          CreativeAsset creativeAsset = new CreativeAsset();
          creativeAsset.fileName = "image.jpg";
          creativeAsset.assetByteArray = MediaUtilities.GetAssetDataFromUrl(
              imageCreative.primaryImageAsset.assetUrl);

          creativeAsset.size = imageCreative.primaryImageAsset.size;
          imageCreative.primaryImageAsset = creativeAsset;

          // Create the copied creative.
          Creative[] creatives = creativeService.createCreatives(new Creative[] {imageCreative});

          // Display copied creatives.
          foreach (Creative copiedCreative in creatives) {
            Console.WriteLine("Image creative with ID \"{0}\", name \"{1}\", and type \"{2}\" " +
                "was created and can be previewed at {3}", copiedCreative.id, copiedCreative.name,
                 copiedCreative.CreativeType, copiedCreative.previewUrl);
          }
        } else {
          Console.WriteLine("No creatives were copied.");
        }
      } catch (Exception ex) {
        Console.WriteLine("Failed to copy creatives. Exception says \"{0}\"", ex.Message);
      }
    }
    /// <summary>
    /// Create a test company for running further tests.
    /// </summary>
    /// <returns>A creative for running further tests.</returns>
    public Creative CreateCreative(DfpUser user, long advertiserId) {
      CreativeService creativeService = (CreativeService)user.GetService(
          DfpService.v201405.CreativeService);

      // Create creative size.
      Size size = new Size();
      size.width = 300;
      size.height = 250;

      // Create an image creative.
      ImageCreative imageCreative = new ImageCreative();
      imageCreative.name = string.Format("Image creative #{0}", GetTimeStamp());
      imageCreative.advertiserId = advertiserId;
      imageCreative.destinationUrl = "http://www.google.com";
      imageCreative.size = size;

      // Create image asset.
      CreativeAsset creativeAsset = new CreativeAsset();
      creativeAsset.fileName = "image.jpg";
      creativeAsset.assetByteArray = MediaUtilities.GetAssetDataFromUrl(
          "http://www.google.com/intl/en/adwords/select/images/samples/inline.jpg");
      creativeAsset.size = size;
      imageCreative.primaryImageAsset = creativeAsset;

      return creativeService.createCreatives(new Creative[] {imageCreative})[0];
    }
    /// <summary>
    /// Run the code example.
    /// </summary>
    /// <param name="user">The DFP user object running the code example.</param>
    public override void Run(DfpUser user) {
      // Get the CreativeService.
      CreativeService creativeService =
          (CreativeService) user.GetService(DfpService.v201405.CreativeService);

      // Set the ID of the advertiser (company) that all creatives will be
      // assigned to.
      long advertiserId = long.Parse(_T("INSERT_ADVERTISER_COMPANY_ID_HERE"));

      // Create an array to store local image creative objects.
      Creative[] imageCreatives = new ImageCreative[5];

      for (int i = 0; i < 5; i++) {
        // Create creative size.
        Size size = new Size();
        size.width = 300;
        size.height = 250;

        // Create an image creative.
        ImageCreative imageCreative = new ImageCreative();
        imageCreative.name = string.Format("Image creative #{0}", i);
        imageCreative.advertiserId = advertiserId;
        imageCreative.destinationUrl = "http://www.google.com";
        imageCreative.size = size;

        // Create image asset.
        CreativeAsset creativeAsset = new CreativeAsset();
        creativeAsset.fileName = "image.jpg";
        creativeAsset.assetByteArray = MediaUtilities.GetAssetDataFromUrl(
            "http://www.google.com/intl/en/adwords/select/images/samples/inline.jpg");
        creativeAsset.size = size;
        imageCreative.primaryImageAsset = creativeAsset;

        imageCreatives[i] = imageCreative;
      }

      try {
        // Create the image creatives on the server.
        imageCreatives = creativeService.createCreatives(imageCreatives);

        if (imageCreatives != null) {
          foreach (Creative creative in imageCreatives) {
            // Use "is" operator to determine what type of creative was
            // returned.
            if (creative is ImageCreative) {
              ImageCreative imageCreative = (ImageCreative) creative;
              Console.WriteLine("An image creative with ID ='{0}', name ='{1}' and size = " +
                  "({2},{3}) was created and can be previewed at: {4}", imageCreative.id,
                  imageCreative.name, imageCreative.size.width, imageCreative.size.height,
                  imageCreative.previewUrl);
            } else {
              Console.WriteLine("A creative with ID ='{0}', name='{1}' and type='{2}' was created.",
                  creative.id, creative.name, creative.CreativeType);
            }
          }
        } else {
          Console.WriteLine("No creatives created.");
        }
      } catch (Exception ex) {
        Console.WriteLine("Failed to create creatives. Exception says \"{0}\"", ex.Message);
      }
    }
    public void TestCreateCreatives() {
      // Create an array to store local image creative objects.
      Creative[] imageCreatives = new ImageCreative[2];

      for (int i = 0; i < 2; i++) {
        // Create creative size.
        Size size = new Size();
        size.width = 300;
        size.height = 250;

        // Create an image creative.
        ImageCreative imageCreative = new ImageCreative();
        imageCreative.name = string.Format("Image creative #{0}", i);
        imageCreative.advertiserId = advertiserId;
        imageCreative.destinationUrl = "http://www.google.com";
        imageCreative.size = size;

        // Create image asset.
        CreativeAsset creativeAsset = new CreativeAsset();
        creativeAsset.fileName = "image.jpg";
        creativeAsset.assetByteArray = MediaUtilities.GetAssetDataFromUrl(
            "http://www.google.com/intl/en/adwords/select/images/samples/inline.jpg");
        creativeAsset.size = size;
        imageCreative.primaryImageAsset = creativeAsset;

        imageCreatives[i] = imageCreative;
      }

      Creative[] newCreatives = null;

      Assert.DoesNotThrow(delegate() {
        newCreatives = creativeService.createCreatives(imageCreatives);
      });

      Assert.NotNull(newCreatives);
      Assert.AreEqual(newCreatives.Length, 2);
      Assert.NotNull(newCreatives[0]);
      Assert.That(newCreatives[0] is ImageCreative);
      Assert.AreEqual(newCreatives[0].advertiserId, advertiserId);
      Assert.AreEqual(newCreatives[0].name, "Image creative #0");
      Assert.NotNull(newCreatives[1]);
      Assert.That(newCreatives[1] is ImageCreative);
      Assert.AreEqual(newCreatives[1].advertiserId, advertiserId);
      Assert.AreEqual(newCreatives[1].name, "Image creative #1");
    }