# encoding: utf-8 from account import Account, Suite from elements import Value, Element, Segment from query import Query from reports import InvalidReportError, Report, OverTimeReport, \ RankedReport, TrendedReport, DataWarehouseReport def authenticate(username, secret=None, endpoint=Account.DEFAULT_ENDPOINT, prefix='', suffix=''): # if no secret is specified, we will assume that instead # we have received a dictionary with credentials (such as # from os.environ) if not secret: source = username key_to_username = utils.affix(prefix, 'OMNITURE_USERNAME', suffix) key_to_secret = utils.affix(prefix, 'OMNITURE_SECRET', suffix) username = source[key_to_username] secret = source[key_to_secret] return Account(username, secret, endpoint) def queue(queries): if isinstance(queries, dict): queries = queries.values() for query in queries: query.queue() def sync(queries, heartbeat=None, interval=1): """ `omniture.sync` will queue a number of reports and then block until the results are ready. Queueing reports is idempotent, meaning that you can also use `omniture.sync` to fetch the results for queries that have already been queued: query = mysuite.report.range('2013-06-06').over_time('pageviews', 'page') omniture.queue(query) omniture.sync(query) """ queue(queries) if isinstance(queries, list): return [query.sync(heartbeat, interval) for query in queries] elif isinstance(queries, dict): return {key: query.sync(heartbeat, interval) for key, query in queries.items()} else: message = "Queries should be a list or a dictionary, received: {}".format( queries.__class__) raise ValueError(message)