Ejemplo n.º 1
0
def get_queue_blob(req: func.HttpRequest, file: func.InputStream) -> str:
    return json.dumps({
        'queue': json.loads(file.read().decode('utf-8'))
    })
Ejemplo n.º 2
0
def get_queue_untyped_blob_return(req: func.HttpRequest,
                                  file: func.InputStream) -> str:
    return file.read().decode('utf-8')
Ejemplo n.º 3
0
def main(myblob: func.InputStream):
    logging.info(f"Python blob trigger function processed blob \n"
                 f"Name: {myblob.name}\n"
                 f"Blob Size: {myblob.length} bytes")
    file = myblob.read()
    logging.info(type(file))

    csvf = io.BytesIO(file)
    logging.info(type(csvf))
    #logging.info (csvf.getvalue())
    csvf = csvf.getvalue().decode('UTF-8')
    out = []
    #logging.info (type(csvf))
    #logging.info (csvf)
    sniffer = csv.Sniffer()
    cnt = sniffer.sniff(csvf)
    logging.info(cnt.delimiter)
    df = pd.read_csv(io.BytesIO(file), sep=cnt.delimiter, dtype=str)
    if df.get("ttl") is not None:
        df["ttl"] = pd.to_numeric(df["ttl"])
    logging.info(df)
    results = []
    results = json.loads(df.to_json(orient='records'))
    logging.info(len(results))
    client = cosmos_client.CosmosClient(
        url_connection=config['ENDPOINT'],
        auth={'masterKey': config['PRIMARYKEY']})

    for item in results:

        logging.info("Import")
        item = json.dumps(item).replace('null', '""')
        item = json.loads(item)

        logging.info(item.get('CREATEDATE'))

        if item.get('CREATEDATE') is not None:
            date = parse(item['CREATEDATE'])
            logging.info(date)
            item['CREATEDATE'] = date.strftime("%Y-%m-%dT%H:%M:%SZ")

        item['id'] = item['CONTRACT_ID']

        logging.info(json.dumps(item, indent=2))

        try:
            logging.info("Try to create the data....")
            client.CreateItem(config['DBLink'], item)
            logging.info("Item was created in Cosmos")
            item['Status'] = 'Create'
            out.append(item)
        except errors.HTTPFailure as e:
            logging.info(e.status_code)
            logging.info(e._http_error_message)
            if e.status_code == 409:
                logging.info("We need to update this id")
                query = {
                    'query': 'SELECT * FROM c where c.id="%s"' % item['id']
                }
                options = {}

                docs = client.QueryItems(config['DBLink'], query, options)
                doc = list(docs)[0]

                # Get the document link from attribute `_self`
                doc_link = doc['_self']
                client.ReplaceItem(doc_link, item)
                item['Status'] = 'Create'
                out.append(item)
            else:
                item['Status'] = 'Error'
                out.append(item)

    #logging.info (out)

    out = json.dumps(out)

    df = pd.read_json(out)

    df.to_csv('1results.csv')

    # Upload the created file, use local_file_name for the blob name
    block_blob_service = BlockBlobService(
        account_name=os.environ['account_name'],
        account_key=os.environ['account_key'])

    block_blob_service.create_blob_from_path('transferin', '1results.csv',
                                             '1results.csv')