import requests
import json
import os
import time
from datetime import datetime
import sys

sys.path.insert(1, os.path.expanduser("~")+'/shell')

import gvs_cf



data = {'grant_type':"client_credentials",
'resource':"https://graph.microsoft.com",
'client_id':gvs_cf.onedrive_client_id,
'client_secret':gvs_cf.onedrive_client_secret}
URL = gvs_cf.onedrive_generate_token_url
r = requests.post(url = URL, data = data)
j = json.loads(r.text)
total_count=0

TOKEN = j["access_token"]
headers = {
      'Authorization': 'Bearer {}'.format(TOKEN)
     }
folders=[sys.argv[1]]

def getDays(date11):
    date2=datetime.now()
    date_string = date11[0:10]
    date1= datetime.strptime(date_string, '%Y-%m-%d')
    date3= date2-date1
    return (date3).days


def deleteitems(driveid,newid,headers,dispname):
        global count_done
        users_url="https://graph.microsoft.com/v1.0/drives/"+driveid+"/items/"+newid
        user_response_data = requests.delete(users_url, headers=headers)
        if user_response_data.status_code == 204:
           count_done=count_done+1
        time.sleep(1)

def callchild(itemid,headers):
    IURL = "https://graph.microsoft.com/v1.0/users/reports@fcsus.com/drive/items/"+itemid+"/children"
    kresp= json.loads(requests.get(IURL, headers=headers).text)
    time.sleep(0.5)
    return kresp

def nextchild(url,headers):
    kresp= json.loads(requests.get(url, headers=headers).text)
    time.sleep(0.5)
    return kresp

def calldetails(k,headers,folders):
    global total_count
    global folder
    global count_del
    count=1
    for vv in k['value']:
        newid=vv['id']
        newdate=vv['createdDateTime']
        dispname=vv['name']
        driveid=vv['parentReference']['driveId']
        count=count+1
        days= getDays(newdate)
        if days > 30:
            count_del=count_del+1
            deleteitems(driveid,newid,headers,dispname)
        if count==201:
            nextpage=k["@odata.nextLink"]
            total_count= count + total_count
            if nextpage !='':
                s=nextchild(nextpage,headers)
                calldetails(s,headers,folders)
            else:
                exit()
        if total_count >=folder:
            exit()

count_del=0;
count_done=0;
folders=[sys.argv[1]]
for item in folders:
    URL = "https://graph.microsoft.com/v1.0/users/reports@fcsus.com/drive/root:/"+item
    headers={'Authorization': "Bearer " + TOKEN}
    r = json.loads(requests.get(URL, headers=headers).text)

    itemid=r["id"]
    folder=r["folder"]["childCount"]


    k=callchild(itemid,headers)
    calldetails(k,headers,folders)
if(count_del==count_done):
    print("done");
