@@ -483,6 +483,22 @@ def drive_close_session(self, item_id, **kwargs):
483483 url = "https://graph.microsoft.com/beta/me/drive/items/{0}/workbook/closeSession" .format (item_id )
484484 return self ._post (url , ** kwargs )
485485
486+ @token_required
487+ def drive_download_contents (self , item_id , params = None , ** kwargs ):
488+ url = "https://graph.microsoft.com/beta/me/drive/items/{0}/content" .format (item_id )
489+ return self ._get (url , params = params , ** kwargs )
490+
491+ @token_required
492+ def drive_get_item (self , item_id , params = None , ** kwargs ):
493+ url = "https://graph.microsoft.com/beta/me/drive/items/{0}" .format (item_id )
494+ return self ._get (url , params = params , ** kwargs )
495+
496+ @token_required
497+ def drive_upload_item (self , item_id , params = None , ** kwargs ):
498+ url = "https://graph.microsoft.com/beta/me/drive/items/{0}/content" .format (item_id )
499+ kwargs ['headers' ] = {'Content-Type' : 'text/plain' }
500+ return self ._put (url , params = params , ** kwargs )
501+
486502 # Excel
487503 @token_required
488504 def excel_get_worksheets (self , item_id , params = None , ** kwargs ):
@@ -600,7 +616,7 @@ def _parse(self, response):
600616 if 'application/json' in response .headers ['Content-Type' ]:
601617 r = response .json ()
602618 else :
603- r = response .text
619+ r = response .content
604620 if status_code in (200 , 201 , 202 ):
605621 return r
606622 elif status_code == 204 :
@@ -648,4 +664,9 @@ def _parse(self, response):
648664 elif status_code == 509 :
649665 raise exceptions .BandwidthLimitExceeded (r )
650666 else :
667+ if r ['error' ]['innerError' ]['code' ] == 'lockMismatch' :
668+ # File is currently locked due to being open in the web browser
669+ # while attempting to reupload a new version to the drive.
670+ # Thus temporarily unavailable.
671+ raise exceptions .ServiceUnavailable (r )
651672 raise exceptions .UnknownError (r )
0 commit comments