#    CustomSharePoint.CustomSharePointExtension
#    Workaround: https://partner.vertec.com/forum/thread/9939-standard-sharepoint-extension-fehler-in-fetchsharepointsites-vermutlich-alle-sta/
#  
from DmsSharepoint import DmsSharePointExtension, tokenRetryDecorator
import requests

class CustomSharePointExtension(DmsSharePointExtension):

    @tokenRetryDecorator
    def fetchSharePointSites(self, doRaiseError = False):
        self.Log("fetchSharePointSites()")

        url = "https://graph.microsoft.com/v1.0/sites?search"
        
        self.sharePointSites = []
        
        while url:
            headers = {"Authorization": "Bearer %s" % self.getAccessToken()}
    
            request = requests.Request('GET', url, headers=headers)
    
            preppedRequest = request.prepare()
    
            response = self.getSession().send(preppedRequest)
    
            if response.status_code != requests.codes.ok:
                if doRaiseError:
                    self.raiseError("fetchSharePointSites", response, translate("Error fetching sites from domain %s. Please check your configuration.") % (self.getDomain()))
                else:
                    return None
            
            responseJson = response.json()
          
            self.sharePointSites += responseJson["value"]
            print len(self.sharePointSites)
          
            if "@odata.nextLink" in responseJson:
                url = responseJson["@odata.nextLink"]
            else:
                url = ""