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)
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)
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)
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)
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)
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')
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')