def fetchAllKeys(siteId, apikey, secret):
  allKeys = []
  result = masheryV2.post(siteId, apikey, secret, '{"method":"object.query","id":1,"params":["select * from keys ITEMS 1000"]}')
  total_pages = result['result']['total_pages']
  page = 1
  while (page < total_pages):
    result = masheryV2.post(siteId, apikey, secret, '{"method":"object.query","id":1,"params":["select *, application, member, service from keys PAGE ' + str(page) + ' ITEMS 1000"]}')
    allKeys.extend(result['result']['items'])
    page = page + 1

  return allKeys
Example #2
0
def fetchAllKeys(siteId, apikey, secret):
    allKeys = []
    result = masheryV2.post(
        siteId, apikey, secret,
        '{"method":"object.query","id":1,"params":["select * from keys ITEMS 1000"]}'
    )
    total_pages = result['result']['total_pages']
    page = 1
    while (page < total_pages):
        result = masheryV2.post(
            siteId, apikey, secret,
            '{"method":"object.query","id":1,"params":["select *, application, member, service from keys PAGE '
            + str(page) + ' ITEMS 1000"]}')
        allKeys.extend(result['result']['items'])
        page = page + 1

    return allKeys
def fetchAllActiveKeys(siteId, apikey, secret, startDate, endDate):
  allActiveKeys = []

  # get list of APIs
  all_apis = masheryV2.post(siteId, apikey, secret, '{"method":"object.query","id":1,"params":["select * from services ITEMS 1000"]}')

  for api in all_apis['result']['items']:
    print 'Processing...' + api['name']
    allActiveKeys.extend(keysReports.activityByService(siteId, apikey, secret, startDate, endDate, api['service_key']))

  return allActiveKeys
def processKey(siteId, apikey, secret, key, delete, archive):
  result = ''

  if archive != None:
    f = open(archive,'a')
    f.write(json.dumps(key))
    f.write('\n')
    f.close()

  if delete == True:
    method = '{"method":"key.delete","id":1,"params":[' + str(key['id']) + ']}'
    result = masheryV2.post(siteId, apikey, secret, method)
  else:
    method = '{"method":"key.update","id":1,"params":[{"id": ' + str(key['id']) + ', "status": "disabled"}]}'
    result = masheryV2.post(siteId, apikey, secret, method)

  if result == None:
    return 'Error'
  else:
    return 'Success'
Example #5
0
def processKey(siteId, apikey, secret, key, delete, archive):
    result = ''

    if archive != None:
        f = open(archive, 'a')
        f.write(json.dumps(key))
        f.write('\n')
        f.close()

    if delete == True:
        method = '{"method":"key.delete","id":1,"params":[' + str(
            key['id']) + ']}'
        result = masheryV2.post(siteId, apikey, secret, method)
    else:
        method = '{"method":"key.update","id":1,"params":[{"id": ' + str(
            key['id']) + ', "status": "disabled"}]}'
        result = masheryV2.post(siteId, apikey, secret, method)

    if result == None:
        return 'Error'
    else:
        return 'Success'
Example #6
0
def fetchAllActiveKeys(siteId, apikey, secret, startDate, endDate):
    allActiveKeys = []

    # get list of APIs
    all_apis = masheryV2.post(
        siteId, apikey, secret,
        '{"method":"object.query","id":1,"params":["select * from services ITEMS 1000"]}'
    )

    for api in all_apis['result']['items']:
        print 'Processing...' + api['name']
        allActiveKeys.extend(
            keysReports.activityByService(siteId, apikey, secret, startDate,
                                          endDate, api['service_key']))

    return allActiveKeys
Example #7
0
def main(argv):

    parser = argparse.ArgumentParser()
    parser.add_argument("apikey", type=str, help="Mashery V2 API Key")
    parser.add_argument("secret", type=str, help="Mashery V2 API Secret")
    parser.add_argument("siteId", type=str, help="Mashery Area/Site ID")
    parser.add_argument("startDate", type=str, help="Start Date")
    parser.add_argument("endDate", type=str, help="End Date")
    parser.add_argument("outputFile", type=str, help="Output Filename")
    parser.add_argument('--apis',
                        nargs='+',
                        help='List of APIs by name, space separated')
    args = parser.parse_args()

    apikey = args.apikey
    secret = args.secret
    siteId = args.siteId
    startDate = args.startDate
    endDate = args.endDate
    outputFile = args.outputFile

    if masheryDate.dayGap(startDate, endDate) < 1:
        print 'ERROR: endDate must be at least 1 day past startDate'
        return

    apis = args.apis

    if args.apis == None:
        apis = []

    all_apis = masheryV2.post(
        siteId, apikey, secret,
        '{"method":"object.query","id":1,"params":["select * from services ITEMS 1000"]}'
    )

    results = []

    dates = masheryDate.daysToReportOn(startDate, endDate)

    for api in all_apis['result']['items']:
        try:
            if api['name'] in apis or len(apis) == 0:

                print 'Processing...' + api['name']
                for date in dates:
                    urlParams = '&start_date=' + urllib.quote_plus(
                        date[0]) + '&end_date=' + urllib.quote_plus(
                            date[1]) + '&format=json&limit=1000'
                    apiReportingResults = masheryV2.get(
                        siteId, apikey, secret,
                        '/reports/calls/developer_activity/service/' +
                        api['service_key'], urlParams)
                    for apiReportingResult in apiReportingResults:
                        if (apiReportingResult['serviceDevKey'] != 'unknown'):
                            developerReportingResult = masheryV2.get(
                                siteId, apikey, secret,
                                '/reports/calls/methods/service/' +
                                api['service_key'] + '/developer/' +
                                apiReportingResult['serviceDevKey'], urlParams)
                            if (developerReportingResult != None):
                                results.extend(developerReportingResult)

        except ValueError:
            pass

    f = open(outputFile, 'w')
    f.write(
        'Application,API ID,API Name,API Method,Key,Start Date,End Date,Calls\n'
    )
    for result in results:
        try:
            key = masheryV2.post(
                siteId, apikey, secret,
                '{"method":"object.query","id":1,"params":["select *, application from keys where apikey = \''
                + result['serviceDevKey'] + '\'"]}')

            application_name = '<UNKNOWN>'
            if (key['result']['total_items'] > 0):
                application_name = key['result']['items'][0]['application'][
                    'name']
            f.write('"' + application_name + '",' + result['serviceKey'] +
                    ',"' + apiName(all_apis, result['serviceKey']) + '","' +
                    result['apiMethod'] + '",' + result['serviceDevKey'] +
                    ',' + result['startDate'] + ',' + result['endDate'] + ',' +
                    str(result['methodCount']) + '\n')
        except TypeError:
            pass

    f.close()
def main(argv):
  
  parser = argparse.ArgumentParser()
  parser.add_argument("apikey", type=str, help="Mashery V2 API Key")
  parser.add_argument("secret", type=str, help="Mashery V2 API Secret")
  parser.add_argument("siteId", type=str, help="Mashery Area/Site ID")
  parser.add_argument("startDate", type=str, help="Start Date")
  parser.add_argument("endDate", type=str, help="End Date")
  parser.add_argument("outputFile", type=str, help="Output Filename")
  parser.add_argument('--apis',  nargs='+', help='List of APIs by name, space separated')
  args = parser.parse_args()
  
  apikey = args.apikey
  secret = args.secret
  siteId = args.siteId
  startDate = args.startDate
  endDate = args.endDate
  outputFile = args.outputFile

  if masheryDate.dayGap(startDate, endDate) < 1:
    print 'ERROR: endDate must be at least 1 day past startDate'
    return

  apis = args.apis

  if args.apis == None:
    apis = []

  all_apis = masheryV2.post(siteId, apikey, secret, '{"method":"object.query","id":1,"params":["select * from services ITEMS 1000"]}')

  results = []

  dates = masheryDate.daysToReportOn(startDate, endDate)
  
  for api in all_apis['result']['items']:
    try:
      if api['name'] in apis or len(apis) == 0:

        print 'Processing...' + api['name']
        for date in dates:
          urlParams = '&start_date=' + urllib.quote_plus(date[0]) + '&end_date=' + urllib.quote_plus(date[1]) + '&format=json&limit=1000'
          apiReportingResults = masheryV2.get(siteId, apikey, secret, '/reports/calls/developer_activity/service/' + api['service_key'], urlParams)
          for apiReportingResult in apiReportingResults:
            if (apiReportingResult['serviceDevKey'] != 'unknown'):
              developerReportingResult = masheryV2.get(siteId, apikey, secret, '/reports/calls/methods/service/' + api['service_key'] +  '/developer/' + apiReportingResult['serviceDevKey'], urlParams)
              if (developerReportingResult != None):
                results.extend(developerReportingResult)

    except ValueError:
        pass

  f = open(outputFile,'w')
  f.write('Application,API ID,API Name,API Method,Key,Start Date,End Date,Calls\n')
  for result in results:
    try:
        key = masheryV2.post(siteId, apikey, secret, '{"method":"object.query","id":1,"params":["select *, application from keys where apikey = \'' + result['serviceDevKey']  + '\'"]}')

        application_name = '<UNKNOWN>'
        if (key['result']['total_items'] > 0) :
            application_name = key['result']['items'][0]['application']['name']
        f.write('"' + application_name + '",' + result['serviceKey'] + ',"' + apiName(all_apis, result['serviceKey']) + '","'+  result['apiMethod']+ '",'+ result['serviceDevKey']  + ',' + result['startDate']  + ',' + result['endDate']  + ','+ str(result['methodCount']) + '\n')
    except TypeError:
        pass

  f.close()
Example #9
0
def main(argv):
  
  parser = argparse.ArgumentParser()
  parser.add_argument("apikey", type=str, help="Mashery V2 API Key")
  parser.add_argument("secret", type=str, help="Mashery V2 API Secret")
  parser.add_argument("siteId", type=str, help="Mashery Area/Site ID")
  parser.add_argument("startDate", type=str, help="Start Date")
  parser.add_argument("endDate", type=str, help="End Date")
  parser.add_argument("outputFile", type=str, help="Output Filename")
  parser.add_argument('--apis',  nargs='+', help='List of APIs by name, space separated')
  parser.add_argument('--keys',  nargs='+', help='List of keys to include in results, space separated')
  parser.add_argument('--additionalfields',  nargs='+', help='List of key/app fields to retrieve, space separated')
  args = parser.parse_args()
  
  apikey = args.apikey
  secret = args.secret
  siteId = args.siteId
  startDate = args.startDate
  endDate = args.endDate
  outputFile = args.outputFile

  if masheryDate.dayGap(startDate, endDate) < 1:
    print 'ERROR: endDate must be at least 1 day past startDate'
    return

  apis = args.apis

  if args.apis == None:
    apis = []

  # get list of APIs
  all_apis = masheryV2.post(siteId, apikey, secret, '{"method":"object.query","id":1,"params":["select * from services ITEMS 1000"]}')

  keys = args.keys

  if args.keys == None:
    keys = []

  results = []

  dates = masheryDate.daysToReportOn(startDate, endDate)
  
  for api in all_apis['result']['items']:
    try:
      if api['name'] in apis or len(apis) == 0:

        print 'Processing...' + api['name']
        for date in dates:
          urlParams = '&start_date=' + urllib.quote_plus(date[0]) + '&end_date=' + urllib.quote_plus(date[1]) + '&format=json&limit=1000'
          results.extend(masheryV2.get(siteId, apikey, secret, '/reports/calls/developer_activity/service/' + api['service_key'], urlParams))

    except ValueError:
        pass

  UTF8Writer = codecs.getwriter('utf8')
  f = UTF8Writer(open(outputFile,'w'))
  customFields = u'application.name'
  if (args.additionalfields != None):
    customFields = ','.join(args.additionalfields)

  headers = customFields + ',service.id,service.name,key.apikey,startDate,endDate,successful,blocked,other,total\n'

  f.write(headers)
  for result in results:
    
    if result['serviceDevKey'] in keys or len(keys) == 0:
      time.sleep(1) # adding slight delay so as to decrease chances of hitting mashery api qps limits
      query = '{"method":"object.query","id":1,"params":["select ' + customFields + ' from keys where apikey = \'' + result['serviceDevKey']  + '\'"]}'
      
      key = masheryV2.post(siteId, apikey, secret, query)
      
      unknown_field = '<UNKNOWN>'

      if (key['result']['total_items'] > 0) :
        customFieldValues = ''
        for field in customFields.split(','):
          splitFields = field.split('.')
          try:
            if key['result']['items'][0][splitFields[0]] != None:
              if len(splitFields) == 2:
                customFieldValues = customFieldValues + '"' + str(key['result']['items'][0][splitFields[0]][splitFields[1]]) + '",'
              else:
                customFieldValues = customFieldValues + '"' + str(key['result']['items'][0][splitFields[0]]) + '",'
            else:
              customFieldValues = customFieldValues + '"' + unknown_field + '",'  
          except TypeError:
            customFieldValues = customFieldValues + '"' + unknown_field + '",'
            pass

        outputString = customFieldValues + result['serviceKey'] + ',"' + apiName(all_apis, result['serviceKey']) + '",'+ result['serviceDevKey']  + ',' + result['startDate']  + ',' + result['endDate']  + ','+ str(result['callStatusSuccessful'])  + ',' + str(result['callStatusBlocked']) + ',' + str(result['callStatusOther']) + ',' + str(result['callStatusSuccessful'] +  result['callStatusBlocked'] + result['callStatusOther'])
        f.write(outputString + '\n')

  f.close()