Пример #1
0
def ValidateBiddingStrategy(strategy, web_services):
  """Validate BiddingStrategy object.

  A BiddingStrategy is one of BudgetOptimizer, ConversionOptimizer, ManualCPC,
  ManualCPM.

  Args:
    strategy: dict BiddingStrategy object.
    web_services: module for web services.

  Returns:
    BiddingStrategy instance.
  """
  if IsPyClass(strategy):
    return strategy

  glob_sanity_check.ValidateTypes(((strategy, dict),))
  if 'type' in strategy:
    new_strategy = GetPyClass(strategy['type'], web_services)
  elif 'BiddingStrategy_Type' in strategy:
    new_strategy = GetPyClass(strategy['BiddingStrategy_Type'], web_services)
  else:
    msg = 'The \'type\' of the bidding transition is missing.'
    raise ValidationError(msg)
  for key in strategy:
    if strategy[key] == 'None': continue
    if key in ('bidCeiling',):
      data = ValidateMoney(strategy[key], web_services)
    else:
      glob_sanity_check.ValidateTypes(((strategy[key], (str, unicode)),))
      data = strategy[key]
    new_strategy.__dict__.__setitem__('_%s' % key, data)

  return new_strategy
Пример #2
0
def ValidateAdExtension(extension, web_services):
  """Validate AdExtension object.

  Args:
    extension: dict AdExtension object.
    web_services: module for web services.

  Returns:
    AdExtension instance.
  """
  if IsPyClass(extension):
    return extension

  glob_sanity_check.ValidateTypes(((extension, dict),))
  if 'type' in extension:
    new_extension = GetPyClass(extension['type'], web_services)
  else:
    new_extension = GetPyClass('AdExtension', web_services)
  for key in extension:
    if extension[key] == 'None': continue
    if key in ('address',):
      data = ValidateAddress(extension[key], web_services)
    elif key in ('geoPoint',):
      data = ValidateGeoPoint(extension[key], web_services)
    else:
      glob_sanity_check.ValidateTypes(((extension[key], (str, unicode)),))
      data = extension[key]
    new_extension.__dict__.__setitem__('_%s' % key, data)

  return new_extension
Пример #3
0
def ValidateCriterion(operator, criterion, web_services):
  """Validate Criterion object.

  A Criterion object is one of Keyword, Website, Placement.

  Args:
    operator: str operator to use.
    criterion: dict Criterion object.
    web_services: module for web services.

  Returns:
    dict/Criterion updated criterion object or Criterion instance.
  """
  if IsPyClass(criterion):
    return criterion

  glob_sanity_check.ValidateTypes(((criterion, dict),))
  if operator in ('ADD', ''):
    if 'criterionType' in criterion:
      new_criterion = GetPyClass(criterion['criterionType'], web_services)
    elif 'type' in criterion:
      new_criterion = GetPyClass(criterion['type'], web_services)
    elif 'Criterion_Type' in criterion:
      new_criterion = GetPyClass(criterion['Criterion_Type'], web_services)
    else:
      msg = 'The \'criterionType\' or \'type\' of the criterion is missing.'
      raise ValidationError(msg)
  elif operator in ('SET', 'REMOVE'):
    new_criterion = GetPyClass('Criterion', web_services)
  for key in criterion:
    if criterion[key] == 'None': continue
    glob_sanity_check.ValidateTypes(((criterion[key], (str, unicode)),))
    new_criterion.__dict__.__setitem__('_%s' % key, criterion[key])

  return new_criterion
Пример #4
0
    def Mutate(self, ops):
        """Create, update, or remove ad params.

    Args:
      ops: list unique operations.

    Returns:
      tuple mutated ad params.
    """
        method_name = 'mutateAdParam'
        if self.__config['soap_lib'] == SOAPPY:
            glob_sanity_check.ValidateTypes(((ops, list), ))
            new_ops = []
            for op in ops:
                self.__sanity_check.ValidateOperation(op)
                new_ops.append(
                    self.__message_handler.PackDictAsXml(op, 'operations'))
            ops = ''.join(new_ops)
            return self.__service.CallMethod(
                method_name.split(
                    self.__class__.__name__.split('Service')[0])[0], (ops))
        elif self.__config['soap_lib'] == ZSI:
            web_services = self.__web_services
            glob_sanity_check.ValidateTypes(((ops, list), ))
            for op in ops:
                op = self.__sanity_check.ValidateOperation(op, web_services)
            request = eval('web_services.%sRequest()' % method_name)
            return self.__service.CallMethod(method_name, (({
                'operations': ops
            }, )), 'AdParam', self.__loc, request)
Пример #5
0
def ValidateBulkMutateRequest(bmr, web_services):
  """Validate BulkMutateRequest object.

  Args:
    bmr: dict BulkMutateRequest object.
    web_services: module for web services.

  Returns:
    BulkMutateRequest instance.
  """
  if IsPyClass(bmr):
    return bmr

  glob_sanity_check.ValidateTypes(((bmr, dict),))
  new_bmr = GetPyClass('BulkMutateRequest', web_services)
  for key in bmr:
    if bmr[key] == 'None': continue
    if key in ('operationStreams',):
      glob_sanity_check.ValidateTypes(((bmr[key], list),))
      streams = []
      for item in bmr[key]:
        stream = ValidateOperationStream(item, web_services)
        streams.append(stream)
      data = streams
    else:
      glob_sanity_check.ValidateTypes(((bmr[key], (str, unicode)),))
      data = bmr[key]
    new_bmr.__dict__.__setitem__('_%s' % key, data)

  return new_bmr
Пример #6
0
def ValidateTemplateElement(element, web_services):
  """Validate TemplateElement object.

  Args:
    element: dict TemplateElement object.
    web_services: module for web services.

  Returns:
    TemplateElement instance.
  """
  if IsPyClass(element):
    return element

  glob_sanity_check.ValidateTypes(((element, dict),))
  new_element = GetPyClass('TemplateElement', web_services)
  for key in element:
    if element[key] == 'None': continue
    if key in ('fields',):
      glob_sanity_check.ValidateTypes(((element[key], list),))
      fields = []
      for item in element[key]:
        fields.append(ValidateTemplateElementField(item, web_services))
      data = fields
    else:
      glob_sanity_check.ValidateTypes(((element[key], (str, unicode)),))
      data = element[key]
    new_element.__dict__.__setitem__('_%s' % key, data)

  return new_element
Пример #7
0
def ValidateProximityTarget(target, web_services):
  """Validate ProximityTarget object.

  Args:
    target: dict ProximityTarget object.
    web_services: module for web services.

  Returns:
    ProximityTarget instance.
  """
  if IsPyClass(target):
    return target

  glob_sanity_check.ValidateTypes(((target, dict),))
  new_target = GetPyClass('ProximityTarget', web_services)
  for key in target:
    if target[key] == 'None': continue
    if key in ('geoPoint',):
      data = ValidateGeoPoint(target[key], web_services)
    elif key in ('address',):
      data = ValidateAddress(target[key], web_services)
    else:
      glob_sanity_check.ValidateTypes(((target[key], (str, unicode)),))
      data = target[key]
    new_target.__dict__.__setitem__('_%s' % key, data)

  return new_target
Пример #8
0
def ValidateTemplateElementField(field, web_services):
  """Validate TemplateElementField object.

  Args:
    field: dict TemplateElementField object.
    web_services: module for web services.

  Returns:
    TemplateElementField instance.
  """
  if IsPyClass(field):
    return field

  glob_sanity_check.ValidateTypes(((field, dict),))
  new_field = GetPyClass('TemplateElementField', web_services)
  for key in field:
    if field[key] == 'None': continue
    if key in ('fieldMedia',):
      data = ValidateMedia(field[key], web_services)
    else:
      glob_sanity_check.ValidateTypes(((field[key], (str, unicode)),))
      data = field[key]
    new_field.__dict__.__setitem__('_%s' % key, data)

  return new_field
Пример #9
0
def ValidateMapEntry(entry, type, web_services):
  """Validate MapEntry object.

  MapEntry object is one of Media_MediaExtendedCapabilityType_Media_MediaExtendedCapabilityStateMapEntry,
  Media_Size, Media_Size_StringMapEntry, Type_AttributeMapEntry.

  Args:
    entry: dict MapEntry object.
    web_services: module for web services.

  Returns:
    XxxMapEntry instance.
  """
  if IsPyClass(entry):
    return entry

  glob_sanity_check.ValidateTypes(((entry, dict),))
  new_entry = GetPyClass(type, web_services)
  for key in entry:
    if entry[key] == 'None': continue
    if type in ('Media_Size_DimensionsMapEntry',) and key in ('value',):
      data = ValidateDimensions(entry[key], web_services)
    else:
      glob_sanity_check.ValidateTypes(((entry[key], (str, unicode)),))
      data = entry[key]
    new_entry.__dict__.__setitem__('_%s' % key, data)

  return new_entry
Пример #10
0
def ValidateDefinedReportJobV13(job, name_space):
  """Validate DefinedReportJob object.

  Args:
    job: dict report job object.
    name_space: str namespace to use for this ReportJob.

  Returns:
    instance untyped instance of ReportJob.
  """
  items = []
  for key in job:
    if (key == 'adWordsType' or key == 'crossClient' or key == 'endDay' or
        key == 'includeZeroImpression' or key == 'keywordType' or
        key == 'name' or key == 'selectedReportType' or key == 'startDay'):
      glob_sanity_check.ValidateTypes(((job[key], (str, unicode)),))
      items.append('<%s>%s</%s>' % (key, job[key], key))
    else:
      glob_sanity_check.ValidateTypes(((job[key], list),))
      for item in job[key]:
        glob_sanity_check.ValidateTypes(((item, (str, unicode)),))
        items.append('<%s>%s</%s>' % (key, item, key))
  # Explicitly set job's namespace and type.
  job = UnType(''.join(items))
  job._setAttr('xmlns:impl', name_space)
  job._setAttr('xsi3:type', 'impl:DefinedReportJob')

  return job
Пример #11
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'
    if self.__config['soap_lib'] == SOAPPY:
      glob_sanity_check.ValidateTypes(((media, list),))
      new_media = []
      for item in media:
        self.__sanity_check.ValidateMedia(item)
        new_media.append(self.__message_handler.PackDictAsXml(
            item, '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:
      web_services = self.__web_services
      glob_sanity_check.ValidateTypes(((media, list),))
      new_media = []
      for item in media:
        new_media.append(self.__sanity_check.ValidateMedia(item, web_services))
      request = eval('web_services.%sRequest()' % method_name)
      return self.__service.CallMethod(method_name, (({'media': new_media},)),
                                       'Media', self.__loc, request)
Пример #12
0
def ValidateDefinedReportJobV13(job, web_services):
  """Validate DefinedReportJob object.

  Args:
    job: dict DefinedReportJob object.
    web_services: module for web services.

  Returns:
    DefinedReportJob instance.
  """
  report_type = GetPyClass('DefinedReportJob', web_services)
  new_job = report_type()
  for key in job:
    if job[key] == 'None': continue
    if key in ('adGroups', 'adGroupStatuses', 'aggregationTypes', 'campaigns',
               'campaignStatuses', 'clientEmails', 'keywords',
               'keywordStatuses', 'selectedColumns'):
      glob_sanity_check.ValidateTypes(((job[key], list),))
      for item in job[key]:
        glob_sanity_check.ValidateTypes(((item, (str, unicode)),))
    else:
      glob_sanity_check.ValidateTypes(((job[key], (str, unicode)),))
    new_job.__dict__.__setitem__('_%s' % key, job[key])

  return new_job
Пример #13
0
def ValidateOperationStream(stream, web_services):
  """Validate OperationStream object.

  Args:
    stream: dict OperationStream object.
    web_services: module for web services.

  Returns:
    OperationStream instance.
  """
  if IsPyClass(stream):
    return stream

  glob_sanity_check.ValidateTypes(((stream, dict),))
  new_stream = GetPyClass('OperationStream', web_services)
  for key in stream:
    if stream[key] == 'None': continue
    if key in ('operations',):
      glob_sanity_check.ValidateTypes(((stream[key], list),))
      ops = []
      for item in stream[key]:
        ops.append(ValidateJobOperation(item, web_services))
      data = ops
    elif key in ('scopingEntityId',):
      data = ValidateEntityId(stream[key], 'EntityId', web_services)
    else:
      glob_sanity_check.ValidateTypes(((stream[key], (str, unicode)),))
      data = stream[key]
    new_stream.__dict__.__setitem__('_%s' % key, data)

  return new_stream
Пример #14
0
def ValidateBid(bid, web_services):
  """Validate Bid object.

  Args:
    bid: dict Bid object.
    web_services: module for web services.

  Returns:
    Bid instance.
  """
  if IsPyClass(bid):
    return bid

  glob_sanity_check.ValidateTypes(((bid, dict),))
  new_bid = GetPyClass('Bid', web_services)
  for key in bid:
    if bid[key] == 'None': continue
    if key in ('amount',):
      data = ValidateMoney(bid[key], web_services)
    else:
      glob_sanity_check.ValidateTypes(((bid[key], (str, unicode)),))
      data = bid[key]
    new_bid.__dict__.__setitem__('_%s' % key, data)

  return new_bid
Пример #15
0
def ValidateAd(operator, ad, web_services):
  """Validate Ad object.

  An Ad object is one of DeprecatedAd, MobileAd, MobileImageAd, ImageAd,
  LocalBusinessAd, TemplateAd, TextAd,

  Args:
    operator: str operator to use.
    ad: dict ad object.
    web_services: module for web services.

  Returns:
    dict/Ad updated ad object or Ad instance.
  """
  if IsPyClass(ad):
    return ad

  glob_sanity_check.ValidateTypes(((ad, dict),))
  if operator in ('ADD', ''):
    if 'adType' in ad:
      new_ad = GetPyClass(ad['adType'], web_services)
    elif 'type' in ad:
      new_ad = GetPyClass(ad['type'], web_services)
    elif 'Ad_Type' in ad:
      new_ad = GetPyClass(ad['Ad_Type'], web_services)
    else:
      msg = 'The \'adType\' or \'type\' of the ad is missing.'
      raise ValidationError(msg)
  elif operator in ('SET', 'REMOVE'):
    new_ad = GetPyClass('Ad', web_services)
  for key in ad:
    if ad[key] == 'None': continue
    if key in ('productImage', 'image', 'businessImage', 'customIcon', 'icon'):
      data = ValidateImage(ad[key], web_services)
    elif key in ('video',):
      data = ValidateVideo(ad[key], web_services)
    elif key in ('markupLanguages', 'mobileCarriers'):
      glob_sanity_check.ValidateTypes(((ad[key], list),))
      for item in ad[key]:
        glob_sanity_check.ValidateTypes(((item, (str, unicode)),))
      data = ad[key]
    elif key in ('target',):
      data = ValidateProximityTarget(ad[key], web_services)
    elif key in ('adUnionId',):
      data = ValidateEntityId(ad[key], 'AdUnionId', web_services)
    elif key in ('templateElements',):
      glob_sanity_check.ValidateTypes(((ad[key], list),))
      elements = []
      for item in ad[key]:
        elements.append(ValidateTemplateElement(item, web_services))
      data = elements
    elif key in ('dimensions',):
      data = ValidateDimensions(ad[key], web_services)
    else:
      glob_sanity_check.ValidateTypes(((ad[key], (str, unicode)),))
      data = ad[key]
    new_ad.__dict__.__setitem__('_%s' % key, data)

  return new_ad
Пример #16
0
def ValidateKeywordRequestV13(request):
  """Validate KeywordRequest object.

  Args:
    request: dict KeywordRequest object.
  """
  glob_sanity_check.ValidateTypes(((request, dict),))
  for key in request:
    glob_sanity_check.ValidateTypes(((request[key], (str, unicode)),))
Пример #17
0
def ValidateBids(bids, web_services):
  """Validate Bids object.

  A Bids object is on of AdGroupBids, AdGroupCriterionBids,
  BudgetOptimizerAdGroupBids, BudgetOptimizerAdGroupCriterionBids,
  ConversionOptimizerAdGroupBids, ConversionOptimizerAdGroupCriterionBids,
  ManualCPCAdGroupBids, ManualCPCAdGroupCriterionBids, ManualCPMAdGroupBids,
  ManualCPMAdGroupCriterionBids, PositionPreferenceAdGroupCriterionBids.

  Args:
    bids: dict Bids object.
    web_services: module for web services.

  Returns:
    XxxBids instance.
  """
  if IsPyClass(bids):
    return bids

  glob_sanity_check.ValidateTypes(((bids, dict),))
  if 'type' in bids:
    new_bids = GetPyClass(bids['type'], web_services)
  elif 'AdGroupBids_Type' in bids:
    new_bids = GetPyClass(bids['AdGroupBids_Type'], web_services)
  elif 'AdGroupCriterionBids_Type' in bids:
    new_bids = GetPyClass(bids['AdGroupCriterionBids_Type'], web_services)
  else:
    msg = 'The \'type\' of the bid is missing.'
    raise ValidationError(msg)
  for key in bids:
    if bids[key] == 'None': continue
    if key in ('proxyBid', 'maxCpc', 'maxCpm', 'proxyMaxCpc',
               'proxyKeywordMaxCpc', 'proxySiteMaxCpc', 'targetCpa',
               'keywordMaxCpc', 'keywordContentMaxCpc', 'siteMaxCpc',
               'targetCpa'):
      data = ValidateBid(bids[key], web_services)
    elif key in ('positionPreferenceBids',):
      glob_sanity_check.ValidateTypes(((bids[key], dict),))
      new_bids = GetPyClass('PositionPreferenceAdGroupCriterionBids',
                            web_services)
      for sub_key in bids[key]:
        if sub_key in ('proxyMaxCpc',):
          data = ValidateBid(bids[key][sub_key], web_services)
        else:
          glob_sanity_check.ValidateTypes(((bids[key][sub_key],
                                            (str, unicode)),))
          data = bids[key][sub_key]
        new_bids.__dict__.__setitem__('_%s' % sub_key, data)
      data = new_bids
    else:
      glob_sanity_check.ValidateTypes(((bids[key], (str, unicode)),))
      data = bids[key]
    new_bids.__dict__.__setitem__('_%s' % key, data)

  return new_bids
Пример #18
0
def ValidateAdGroupRequestV13(request):
  """Validate AdGroupRequest object.

  Args:
    request: dict AdGroupRequest object.
  """
  glob_sanity_check.ValidateTypes(((request, dict),))
  for key in request:
    if key in ('keywordRequests',):
      glob_sanity_check.ValidateTypes(((request[key], list),))
      for item in request[key]:
        ValidateKeywordRequestV13(item)
    else:
      glob_sanity_check.ValidateTypes(((request[key], (str, unicode)),))
Пример #19
0
def ValidateNetworkTargetV13(network_target):
  """Validate NetworkTarget object.

  Args:
    network_target: list advertising networks targeted by this entity.

  Returns:
    str adertising networks converted into str type.
  """
  glob_sanity_check.ValidateTypes(((network_target, list),))
  items = []
  for item in network_target:
    glob_sanity_check.ValidateTypes(((item, (str, unicode)),))
    items.append('<networkTypes>%s</networkTypes>' % item)

  return ''.join(items)
Пример #20
0
def ValidateLanguageTargetV13(language_target):
  """Validate LanguageTarget object.

  Args:
    language_target: list languages targeted by this entity.

  Returns:
    str languages targeted converted into str type.
  """
  glob_sanity_check.ValidateTypes(((language_target, list),))
  items = []
  for item in language_target:
    glob_sanity_check.ValidateTypes(((item, (str, unicode)),))
    items.append('<languages>%s</languages>' % item)

  return ''.join(items)
Пример #21
0
def ValidateLanguageTargetV13(targets):
  """Validate LanguageTarget object.

  Args:
    targets: list LanguageTarget objects.

  Returns:
    list updated LanguageTarget objects.
  """
  glob_sanity_check.ValidateTypes(((targets, list),))
  languages = []
  for item in targets:
    glob_sanity_check.ValidateTypes(((item, (str, unicode)),))
    languages.append({'languages': item})

  return languages
Пример #22
0
def ValidateExemptionRequest(exemption):
  """Validate ExemptionRequest object.

  Args:
    exemption: dict ExemptionRequest object.
  """
  glob_sanity_check.ValidateTypes(((exemption, dict),))
  for key in exemption:
    if key in ('key',):
      glob_sanity_check.ValidateTypes(((exemption[key], dict),))
      for sub_key in exemption[key]:
        if (isinstance(exemption[key][sub_key], tuple) and
            not exemption[key][sub_key]):
          continue
        glob_sanity_check.ValidateTypes(((exemption[key][sub_key],
                                          (str, unicode)),))
Пример #23
0
def ValidateKeywordRequestV13(request):
  """Validate KeywordRequest object.

  Args:
    request: dict keyword request.

  Returns:
    str keyword request converted into str type.
  """
  glob_sanity_check.ValidateTypes(((request, dict),))
  items = []
  for key in request:
    glob_sanity_check.ValidateTypes(((request[key], (str, unicode)),))
    items.append('<%s>%s</%s>' % (key, request[key], key))

  return ''.join(items)
    def GetReportFields(self, report_type):
        """Return a list of supported report fields.

    Args:
      report_type: str type of the report.

    Returns:
      tuple list of report fields.
    """
        glob_sanity_check.ValidateTypes(((report_type, str), ))

        method_name = 'getReportFields'
        if self.__config['soap_lib'] == SOAPPY:
            report_type = self.__message_handler.PackDictAsXml(
                report_type, 'reportType', [])
            return self.__service.CallMethod(
                method_name.split(
                    self.__class__.__name__.split('Service')[0])[0],
                (report_type))
        elif self.__config['soap_lib'] == ZSI:
            web_services = self.__web_services
            request = eval('web_services.%sRequest()' % method_name)
            return self.__service.CallMethod(method_name,
                                             (({
                                                 'reportType': report_type
                                             }, )), 'ReportDefinition',
                                             self.__loc, request)
Пример #25
0
def ValidateNetworkTargetV13(targets):
  """Validate NetworkTarget object.

  Args:
    targets: list NetworkTarget objects.

  Returns:
    list updated NetworkTarget objects.
  """
  glob_sanity_check.ValidateTypes(((targets, list),))
  networks = []
  for item in targets:
    glob_sanity_check.ValidateTypes(((item, (str, unicode)),))
    networks.append({'networkTypes': item})

  return networks
Пример #26
0
    def GetReportJobStatus(self, report_job_id):
        """Return the status of the report job with the given report job ID.

    Args:
      report_job_id: str ID of the report job.

        Ex:
          report_job_id = '1234567890'

    Returns:
      tuple response from the API method.
    """
        glob_sanity_check.ValidateTypes(((report_job_id, (str, unicode)), ))

        method_name = 'getReportJobStatus'
        if self.__config['soap_lib'] == SOAPPY:
            report_job_id = self.__sanity_check.UnType(report_job_id)
            return self.__service.CallMethod(method_name, (report_job_id))
        elif self.__config['soap_lib'] == ZSI:
            web_services = self.__web_services
            request = eval('web_services.%sRequest()' % method_name)
            return self.__service.CallMethod(method_name,
                                             (({
                                                 'reportJobId': report_job_id
                                             }, )), 'Report', self.__loc,
                                             request)
Пример #27
0
    def GetGzipReportDownloadUrl(self, report_job_id):
        """Return a URL for a compressed report.

    URL from which a compressed report with the given job ID can be downloaded
    (in Gzip format).

    Args:
      report_job_id: str ID of the report job.

        Ex:
          report_job_id = '1234567890'

    Returns:
      tuple response from the API method.
    """
        glob_sanity_check.ValidateTypes(((report_job_id, (str, unicode)), ))

        method_name = 'getGzipReportDownloadUrl'
        if self.__config['soap_lib'] == SOAPPY:
            report_job_id = self.__sanity_check.UnType(report_job_id)
            return self.__service.CallMethod(method_name, (report_job_id))
        elif self.__config['soap_lib'] == ZSI:
            web_services = self.__web_services
            request = eval('web_services.%sRequest()' % method_name)
            return self.__service.CallMethod(method_name,
                                             (({
                                                 'reportJobId': report_job_id
                                             }, )), 'Report', self.__loc,
                                             request)
    def CheckKeywordTraffic(self, requests):
        """Check a batch of keywords to see whether they will get any traffic.

    Args:
      requests: list requests for keyword traffic checks.

        Ex:
          requests = [
            {
              'keywordText': 'Flowers',
              'keywordType': 'Broad',
              'language': 'en'
            }
          ]

    Returns:
      tuple response from the API method.
    """
        glob_sanity_check.ValidateTypes(((requests, list), ))
        for item in requests:
            self.__sanity_check.ValidateKeywordTrafficRequestV13(item)

        method_name = 'checkKeywordTraffic'
        if self.__config['soap_lib'] == SOAPPY:
            return self.__service.CallMethod(method_name, (requests))
        elif self.__config['soap_lib'] == ZSI:
            web_services = self.__web_services
            request = eval('web_services.%sRequest()' % method_name)
            return self.__service.CallMethod(method_name,
                                             (({
                                                 'requests': requests
                                             }, )), 'TrafficEstimator',
                                             self.__loc, request)
Пример #29
0
def ValidateImage(image, web_services):
  """Validate Image object.

  Args:
    image: dict Image object.
    web_services: module for web services.

  Returns:
    Image instance.
  """
  if IsPyClass(image):
    return image

  glob_sanity_check.ValidateTypes(((image, dict),))
  new_image = GetPyClass('Image', web_services)
  for key in image:
    if image[key] == 'None': continue
    if key in ('dimensions',):
      glob_sanity_check.ValidateTypes(((image[key], list),))
      dimensions = []
      for item in image[key]:
        dimensions.append(ValidateMapEntry(item,
                                           'Media_Size_DimensionsMapEntry',
                                           web_services))
      data = dimensions
    elif key in ('urls',):
      glob_sanity_check.ValidateTypes(((image[key], list),))
      urls = []
      for item in image[key]:
        urls.append(ValidateMapEntry(item,
                                     'Media_Size_StringMapEntry',
                                     web_services))
      data = urls
    elif key in ('extendedCapabilities',):
      glob_sanity_check.ValidateTypes(((image[key], list),))
      capabilities = []
      for item in image[key]:
        capabilities.append(ValidateMapEntry(item,
                                             'Media_MediaExtendedCapabilityType_Media_MediaExtendedCapabilityStateMapEntry',
                                             web_services))
      data = capabilities
    else:
      glob_sanity_check.ValidateTypes(((image[key], (str, unicode)),))
      data = image[key]
    new_image.__dict__.__setitem__('_%s' % key, data)

  return new_image
Пример #30
0
def ValidateAudio(audio, web_services):
  """Validate Audio object.

  Args:
    audio: dict Audio object.
    web_services: module for web services.

  Returns:
    Audio instance.
  """
  if IsPyClass(audio):
    return audio

  glob_sanity_check.ValidateTypes(((audio, dict),))
  new_audio = GetPyClass('Audio', web_services)
  for key in audio:
    if audio[key] == 'None': continue
    if key in ('dimensions',):
      glob_sanity_check.ValidateTypes(((audio[key], list),))
      dimensions = []
      for item in audio[key]:
        dimensions.append(ValidateMapEntry(item,
                                           'Media_Size_DimensionsMapEntry',
                                           web_services))
      data = dimensions
    elif key in ('urls',):
      glob_sanity_check.ValidateTypes(((audio[key], list),))
      urls = []
      for item in audio[key]:
        urls.append(ValidateMapEntry(item,
                                     'Media_Size_StringMapEntry',
                                     web_services))
      data = urls
    elif key in ('extendedCapabilities',):
      glob_sanity_check.ValidateTypes(((audio[key], list),))
      capabilities = []
      for item in audio[key]:
        capabilities.append(ValidateMapEntry(item,
                                             'Media_MediaExtendedCapabilityType_Media_MediaExtendedCapabilityStateMapEntry',
                                             web_services))
      data = capabilities
    else:
      glob_sanity_check.ValidateTypes(((audio[key], (str, unicode)),))
      data = audio[key]
    new_audio.__dict__.__setitem__('_%s' % key, data)

  return new_audio