Skip to content

Commit 3476182

Browse files
authored
Merge pull request #7 from richardARPANET/master
adds drive_download_contents() method to client
2 parents 01d1e6f + 30b5830 commit 3476182

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,16 @@ refresh_session = client.drive_refresh_session(item_id)
183183
close_session = client.drive_close_session(item_id)
184184
```
185185

186+
#### Download the contents of a specific item
187+
```
188+
contents_bytes = client.drive_download_contents(item_id)
189+
```
190+
191+
#### Get a Drive item resource
192+
```
193+
drive_item_dict = client.drive_get_item(item_id)
194+
```
195+
186196
#### Get worksheets
187197
```
188198
get_worksheets = client.excel_get_worksheets(item_id)
@@ -254,4 +264,4 @@ update_range = client.excel_update_range(item_id, worksheets_id)
254264
## Tests
255265
```
256266
test/test.py
257-
```
267+
```

microsoftgraph/client.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)