def testAllowedArrayTypeValuesSucceed(self):
        """Test that Sanity Check does not fail on allowed array type values."""
        SanityCheck.NewSanityCheck(self.__class__.TYPES_MAP, ['1', '2'],
                                   'ArrayOf_xsd_string')

        predicate = {
            'field': 'string',
            'type': 'ENABLED',
            'values': ['strings', '10', 'True']
        }
        SanityCheck.NewSanityCheck(self.__class__.TYPES_MAP, [predicate],
                                   'ArrayOf_Predicate')
    def Get(self, selector):
        """Return a list of campaign targets.

    List of campaign targets specified by the selector from the customer's
    account.

    Args:
      selector: dict Filter to run campaign targets through.

    Returns:
      tuple List of campaign targets meeting all the criteria of the selector.
    """
        method_name = 'getCampaignTarget'
        SanityCheck.NewSanityCheck(self._wsdl_types_map, selector,
                                   'CampaignTargetSelector')

        if self._config['soap_lib'] == SOAPPY:
            selector = self._message_handler.PackVarAsXml(
                selector, 'selector', self._wsdl_types_map, False,
                'CampaignTargetSelector')
            return self.__service.CallMethod(
                method_name.split(
                    self.__class__.__name__.split('Service')[0])[0],
                (selector))
        elif self._config['soap_lib'] == ZSI:
            selector = self._transformation.MakeZsiCompatible(
                selector, 'CampaignTargetSelector', self._wsdl_types_map,
                self._web_services)
            request = eval('self._web_services.%sRequest()' % method_name)
            return self.__service.CallMethod(method_name,
                                             (({
                                                 'selector': selector
                                             }, )), 'CampaignTarget',
                                             self._loc, request)
  def Mutate(self, ops):
    """Add, update, or remove ad group ads.

    Args:
      ops: list Unique operations.

    Returns:
      tuple Mutated ad group ads.
    """
    method_name = 'mutateAdGroupAd'
    SanityCheck.ValidateTypes(((ops, list),))
    for op in ops:
      SanityCheck.NewSanityCheck(self._wsdl_types_map, op, 'AdGroupAdOperation')

    if self._config['soap_lib'] == SOAPPY:
      new_ops = []
      for op in ops:
        new_ops.append(self._message_handler.PackVarAsXml(
            op, 'operations', self._wsdl_types_map, False,
            'AdGroupAdOperation'))
      return self.__service.CallMethod(
          method_name.split(self.__class__.__name__.split('Service')[0])[0],
          (''.join(new_ops)))
    elif self._config['soap_lib'] == ZSI:
      new_ops = []
      for op in ops:
        new_ops.append(self._transformation.MakeZsiCompatible(
            op, 'AdGroupAdOperation', self._wsdl_types_map,
            self._web_services))
      request = eval('self._web_services.%sRequest()' % method_name)
      return self.__service.CallMethod(method_name,
                                       (({'operations': new_ops},)),
                                       'AdGroupAd', self._loc, request)
  def Get(self, selector):
    """Return a list of ad group ads.

    List of ad group ads specified by the list of selectors from the customer's
    account.

    Args:
      selector: dict Filter to run ad group ads through.

    Returns:
      tuple List of ad group ads meeting all the criteria of the selector.
    """
    method_name = 'getAdGroupAd'
    selector_tag = AdWordsUtils.GetSelectorTag(self._op_config['version'])
    selector_type = AdWordsUtils.GetSelectorType('AdGroupAdSelector',
                                                 self._op_config['version'])
    SanityCheck.NewSanityCheck(self._wsdl_types_map, selector, selector_type)

    if self._config['soap_lib'] == SOAPPY:
      selector = self._message_handler.PackVarAsXml(
          selector, selector_tag, self._wsdl_types_map, False, selector_type)
      return self.__service.CallMethod(
          method_name.split(self.__class__.__name__.split('Service')[0])[0],
          (selector))
    elif self._config['soap_lib'] == ZSI:
      selector = self._transformation.MakeZsiCompatible(
          selector, selector_type, self._wsdl_types_map, self._web_services)
      request = eval('self._web_services.%sRequest()' % method_name)
      return self.__service.CallMethod(method_name,
                                       (({selector_tag: selector},)),
                                       'AdGroupAd', self._loc, request)
示例#5
0
    def Get(self, selector):
        """Return a list of traffic estimates.

    Args:
      selector: dict Filter to run traffic estimate requests through.

    Returns:
      tuple List of traffic estimates meeting all the criteria of the selector.
    """
        SanityCheck.NewSanityCheck(self._wsdl_types_map, selector,
                                   'TrafficEstimatorSelector')

        method_name = 'getTrafficEstimator'
        if self._config['soap_lib'] == SOAPPY:
            selector = self._message_handler.PackVarAsXml(
                selector, 'selector', self._wsdl_types_map, False,
                'TrafficEstimatorSelector')
            return self.__service.CallMethod(
                method_name.split(
                    self.__class__.__name__.split('Service')[0])[0],
                (selector))
        elif self._config['soap_lib'] == ZSI:
            selector = self._transformation.MakeZsiCompatible(
                selector, 'TrafficEstimatorSelector', self._wsdl_types_map,
                self._web_services)
            request = eval('self._web_services.%sRequest()' % method_name)
            return self.__service.CallMethod(method_name,
                                             (({
                                                 'selector': selector
                                             }, )), 'TrafficEstimator',
                                             self._loc, request)
示例#6
0
    def GetBidLandscape(self, selector):
        """Return a list of bid landscapes.

    Args:
      selector: dict Filter to run bid landscapes through.

    Returns:
      tuple List of bid landscapes meeting all the criteria of the selector.
    """
        method_name = 'getBidLandscape'
        SanityCheck.NewSanityCheck(self._wsdl_types_map, selector,
                                   'BidLandscapeSelector')

        if self._config['soap_lib'] == SOAPPY:
            selector = self._message_handler.PackVarAsXml(
                selector, 'selector', self._wsdl_types_map, False,
                'BidLandscapeSelector')
            return self.__service.CallMethod(method_name, (selector))
        elif self._config['soap_lib'] == ZSI:
            selector = self._transformation.MakeZsiCompatible(
                selector, 'BidLandscapeSelector', self._wsdl_types_map,
                self._web_services)
            request = eval('self._web_services.%sRequest()' % method_name)
            return self.__service.CallMethod(method_name,
                                             (({
                                                 'selector': selector
                                             }, )), 'BidLandscape', self._loc,
                                             request)
示例#7
0
    def Get(self, selector):
        """Return the API usage information.

    Usage information is based on the selection criteria of the selector.

    Args:
      selector: dict Filter to run API usage through.

    Returns:
      tuple API usage information.
    """
        method_name = 'getInfo'

        SanityCheck.NewSanityCheck(self._wsdl_types_map, selector,
                                   'InfoSelector')

        if self._config['soap_lib'] == SOAPPY:
            selector = self._message_handler.PackVarAsXml(
                selector, 'selector', self._wsdl_types_map, False,
                'InfoSelector')
            return self.__service.CallMethod(
                method_name.split(
                    self.__class__.__name__.split('Service')[0])[0],
                (selector))
        elif self._config['soap_lib'] == ZSI:
            selector = self._transformation.MakeZsiCompatible(
                selector, 'InfoSelector', self._wsdl_types_map,
                self._web_services)
            request = eval('self._web_services.%sRequest()' % method_name)
            return self.__service.CallMethod(method_name,
                                             (({
                                                 'selector': selector
                                             }, )), 'Info', self._loc, request)
示例#8
0
  def Mutate(self, op):
    """Add or update bulk mutate job.

    Args:
      op: dict Operation.

    Returns:
      tuple Mutated bulk mutate job.
    """
    method_name = 'mutateBulkMutateJob'
    AdWordsUtils.TransformJobOperationXsi(op)
    SanityCheck.NewSanityCheck(self._wsdl_types_map, op, 'JobOperation')

    if self._config['soap_lib'] == SOAPPY:
      op = self._message_handler.PackVarAsXml(
          op, 'operation', self._wsdl_types_map, False, 'JobOperation')
      return self.__service.CallMethod(
          method_name.split(self.__class__.__name__.split('Service')[0])[0],
          (op))
    elif self._config['soap_lib'] == ZSI:
      op = self._transformation.MakeZsiCompatible(
          op, 'JobOperation', self._wsdl_types_map, self._web_services)
      request = eval('self._web_services.%sRequest()' % method_name)
      return self.__service.CallMethod(method_name, (({'operation': op},)),
                                       'BulkMutateJob', self._loc, request)
示例#9
0
    def GetBulkKeywordIdeas(self, selector):
        """Return a list of pages with ideas.

    List of pages specified by a targeting idea selector. This method is
    specialized for returning bulk keyword ideas.

    Args:
      selector: dict Filter to run targeting ideas through.

    Returns:
      tuple List of pages with targeting ideas of the selector.
    """
        method_name = 'getBulkKeywordIdeas'
        SanityCheck.NewSanityCheck(self._wsdl_types_map, selector,
                                   'TargetingIdeaSelector')

        if self._config['soap_lib'] == SOAPPY:
            selector = self._message_handler.PackVarAsXml(
                selector, 'selector', self._wsdl_types_map, False,
                'TargetingIdeaSelector')
            return self.__service.CallMethod(
                method_name.split(
                    self.__class__.__name__.split('Service')[0])[0],
                (selector))
        elif self._config['soap_lib'] == ZSI:
            selector = self._transformation.MakeZsiCompatible(
                selector, 'TargetingIdeaSelector', self._wsdl_types_map,
                self._web_services)
            request = eval('self._web_services.%sRequest()' % method_name)
            return self.__service.CallMethod(method_name,
                                             (({
                                                 'selector': selector
                                             }, )), 'TargetingIdea', self._loc,
                                             request)
 def testSanityCheckComplexSuperTypes(self):
     """Test whether Sanity Check allows subtypes to use supertype fields."""
     object_search_criteria = {
         'searchString': 'searching',
         'pageNumber': '1',
         'includeObjectsWithOutGroupOnly': 'True'
     }
     SanityCheck.NewSanityCheck(self.__class__.TYPES_MAP,
                                object_search_criteria,
                                'ObjectSearchCriteria')
 def testSanityCheckComplexWithExplcitType(self):
     """Test if Sanity Check recognizes an xsi type declared in an object."""
     object_search_criteria = {
         'searchString': 'searching',
         'pageNumber': '1',
         'includeObjectsWithOutGroupOnly': 'True',
         'xsi_type': 'ObjectSearchCriteria'
     }
     SanityCheck.NewSanityCheck(self.__class__.TYPES_MAP,
                                object_search_criteria,
                                'PageableSearchCriteriaBase')
 def testAllowedComplexTypeValuesSucceed(self):
     """Test that Sanity Check does not fail on allowed complex type values."""
     predicate_page = {
         'entries': [{
             'field': 'Any string works.',
             'type': 'PAUSED',
             'values': ['1', 'True', 'str'],
         }, {
             'field': '1234567890',
             'type': 'DELETED',
             'values': []
         }]
     }
     SanityCheck.NewSanityCheck(self.__class__.TYPES_MAP, predicate_page,
                                'PredicatePage')
示例#13
0
    def Upload(self, media):
        """Upload a list of media.

    Args:
      media: list Media objects whose byte data should be uploaded.

    Returns:
      tuple Uploaded media objects.
    """
        method_name = 'upload'
        SanityCheck.ValidateTypes(((media, list), ))
        for item in media:
            SanityCheck.NewSanityCheck(self._wsdl_types_map, item, 'Media')

        if self._config['soap_lib'] == SOAPPY:
            new_media = []
            for item in media:
                new_media.append(
                    self._message_handler.PackVarAsXml(item, 'media',
                                                       self._wsdl_types_map,
                                                       False, 'Media'))
            media = ''.join(new_media)
            return self.__service.CallMethod(
                method_name.split(
                    self.__class__.__name__.split('Service')[0])[0], (media))
        elif self._config['soap_lib'] == ZSI:
            new_media = []
            for item in media:
                new_media.append(
                    self._transformation.MakeZsiCompatible(
                        item, 'Media', self._wsdl_types_map,
                        self._web_services))
            request = eval('self._web_services.%sRequest()' % method_name)
            return self.__service.CallMethod(method_name, (({
                'media': new_media
            }, )), 'Media', self._loc, request)
 def testAllowedSimpleTypeValuesSucceed(self):
     """Test that Sanity Check does not fail on allowed simple type values."""
     for enum in self.__class__.TYPES_MAP['Test.Status']['allowed_values']:
         SanityCheck.NewSanityCheck(self.__class__.TYPES_MAP, enum,
                                    'Test.Status')