33import dateutil .parser
44import json
55import time
6+ import pprint
67
78from time import mktime
89from mimetypes import guess_type
1920
2021class NormalEntry (object ):
2122 __default_general_mime_type = Conf .get ('default_mimetype' )
22- __properties_extra = ('is_directory' ,
23- 'is_visible' ,
24- 'parents' ,
25- 'download_types' ,
26- 'modified_date' ,
27- 'modified_date_epoch' ,
28- 'mtime_byme_date' ,
29- 'mtime_byme_date_epoch' ,
30- 'atime_byme_date' ,
31- 'atime_byme_date_epoch' )
3223 __directory_mimetype = Conf .get ('directory_mimetype' )
3324
25+ __properties_extra = [
26+ 'is_directory' ,
27+ 'is_visible' ,
28+ 'parents' ,
29+ 'download_types' ,
30+ 'modified_date' ,
31+ 'modified_date_epoch' ,
32+ 'mtime_byme_date' ,
33+ 'mtime_byme_date_epoch' ,
34+ 'atime_byme_date' ,
35+ 'atime_byme_date_epoch' ,
36+ ]
37+
3438 def __init__ (self , gd_resource_type , raw_data ):
3539 self .__info = {}
3640 self .__parents = []
@@ -39,46 +43,78 @@ def __init__(self, gd_resource_type, raw_data):
3943 self .__cache_mimetypes = None
4044 self .__cache_dict = {}
4145
42- """Return True if reading from this file should return info and deposit
43- the data elsewhere. This is predominantly determined by whether we can
44- get a file-size up-front, or we have to decide on a specific mime-type
45- in order to do so.
46- """
47- requires_mimetype = (u'fileSize' not in self .__raw_data and \
48- raw_data [u'mimeType' ] != self .__directory_mimetype )
46+ # Return True if reading from this file should return info and deposit
47+ # the data elsewhere. This is predominantly determined by whether we
48+ # can get a file-size up-front, or we have to decide on a specific
49+ # mime-type in order to do so.
4950
5051 try :
51- self .__info ['requires_mimetype' ] = requires_mimetype
52- self .__info ['title' ] = raw_data [u'title' ]
53- self .__info ['mime_type' ] = raw_data [u'mimeType' ]
54- self .__info ['labels' ] = raw_data [u'labels' ]
55- self .__info ['id' ] = raw_data [u'id' ]
56- self .__info ['last_modifying_user_name' ] = raw_data [u'lastModifyingUserName' ]
57- self .__info ['writers_can_share' ] = raw_data [u'writersCanShare' ]
58- self .__info ['owner_names' ] = raw_data [u'ownerNames' ]
59- self .__info ['editable' ] = raw_data [u'editable' ]
60- self .__info ['user_permission' ] = raw_data [u'userPermission' ]
61-
62- self .__info ['download_links' ] = raw_data [u'exportLinks' ] if u'exportLinks' in raw_data else { }
63- self .__info ['link' ] = raw_data [u'embedLink' ] if u'embedLink' in raw_data else None
64- self .__info ['file_size' ] = int (raw_data [u'fileSize' ]) if u'fileSize' in raw_data else 0
65- self .__info ['file_extension' ] = raw_data [u'fileExtension' ] if u'fileExtension' in raw_data else None
66- self .__info ['md5_checksum' ] = raw_data [u'md5Checksum' ] if u'md5Checksum' in raw_data else None
67- self .__info ['image_media_metadata' ] = raw_data [u'imageMediaMetadata' ] if u'imageMediaMetadata' in raw_data else None
68-
69- if u'downloadUrl' in raw_data :
70- self .__info ['download_links' ][self .__info ['mime_type' ]] = raw_data [u'downloadUrl' ]
71-
72- self .__update_display_name ()
73-
74- for parent in raw_data [u'parents' ]:
75- self .__parents .append (parent [u'id' ])
76-
77- except (KeyError ) as e :
78- _logger .exception ("Could not normalize entry on raw key [%s]. "
79- "Does not exist in source." , str (e ))
52+ requires_mimetype = u'fileSize' not in self .__raw_data and \
53+ raw_data [u'mimeType' ] != self .__directory_mimetype
54+
55+ self .__info ['requires_mimetype' ] = \
56+ requires_mimetype
57+
58+ self .__info ['title' ] = \
59+ raw_data [u'title' ]
60+
61+ self .__info ['mime_type' ] = \
62+ raw_data [u'mimeType' ]
63+
64+ self .__info ['labels' ] = \
65+ raw_data [u'labels' ]
66+
67+ self .__info ['id' ] = \
68+ raw_data [u'id' ]
69+
70+ self .__info ['last_modifying_user_name' ] = \
71+ raw_data [u'lastModifyingUserName' ]
72+
73+ self .__info ['writers_can_share' ] = \
74+ raw_data [u'writersCanShare' ]
75+
76+ self .__info ['owner_names' ] = \
77+ raw_data [u'ownerNames' ]
78+
79+ self .__info ['editable' ] = \
80+ raw_data [u'editable' ]
81+
82+ self .__info ['user_permission' ] = \
83+ raw_data [u'userPermission' ]
84+ except KeyError :
85+ _logger .exception ("Could not normalize with missing key.\n RAW:\n "
86+ "%s" , pprint .pformat (raw_data ))
8087 raise
8188
89+ self .__info ['link' ] = \
90+ raw_data .get (u'embedLink' )
91+
92+ self .__info ['file_size' ] = \
93+ int (raw_data .get (u'fileSize' , 0 ))
94+
95+ self .__info ['file_extension' ] = \
96+ raw_data .get (u'fileExtension' )
97+
98+ self .__info ['md5_checksum' ] = \
99+ raw_data .get (u'md5Checksum' )
100+
101+ self .__info ['image_media_metadata' ] = \
102+ raw_data .get (u'imageMediaMetadata' )
103+
104+ self .__info ['download_links' ] = \
105+ raw_data .get (u'exportLinks' , {})
106+
107+ try :
108+ self .__info ['download_links' ][self .__info ['mime_type' ]] = \
109+ raw_data [u'downloadUrl' ]
110+ except KeyError :
111+ pass
112+
113+ self .__update_display_name ()
114+
115+ for parent in raw_data [u'parents' ]:
116+ self .__parents .append (parent [u'id' ])
117+
82118 def __getattr__ (self , key ):
83119 return self .__info [key ]
84120
0 commit comments