import json
import boto3
import datetime
import random
import os
import urllib3


s3client = boto3.client('s3')

http = urllib3.PoolManager()

def gen_surl(bucketname, keyname):
    url = s3client.generate_presigned_url(ClientMethod='get_object', Params={
                                          'Bucket': bucketname, 'Key': keyname})
    return url


def b_putpriv(bucket, key,  ContentType,body):
    srep = s3client.put_object(
        ACL='private', Body=body, Bucket=bucket, Key=key, ContentType=ContentType,)
    #print(srep)
    return srep


def b_get_obj(bucket, bkey):
    object = s3client.get_object(Bucket=bucket, Key=bkey)
    return(object['Body'].read().decode('utf-8'))
    
def httpget(ep):
    _ret = {}
    _headers = {"Content-Type":"application/json"}
    _res  = http.request('GET',ep)
    _ret =   _res.data.decode('utf-8') 
    return _ret    
    

def process_files(event):
    
 
    current_date = str(datetime.date.today())
    _time = current_date.split('-')
    __year = f"{_time[0]}-"
    __month= f"{_time[1]}-"
    __day = f"{_time[2]}/"
    bucket = os.environ['NeptuneBucket']
    _fprefix=f'filestolaod/{__year}{__month}{__day}'
    for f in event:
        lkey = f['key'].split('/')[2]
        localkey= f"{_fprefix}{f['AccountId']}/{f['region']}/{lkey}"
        _buf = f"Saving s3://{bucket}/{localkey}"
        print(_buf)
        _s3content = httpget(f['signedurl'])
        b_putpriv(bucket, localkey,  'html/text',_s3content)
    return _buf
def lambda_handler(event, context):
    print(json.dumps(event))
 
    html = process_files(event)
    return {
        'statusCode': 200,
        'body': html
    }