33
44try :
55    # Python 3 
6-     from  urllib .parse  import  urlencode 
76    from  urllib .error  import  HTTPError 
87    from  urllib .request  import  urlopen , Request 
98except  ImportError :
109    # Python 2 
11-     from  urllib  import  urlencode 
1210    from  urllib2  import  Request , urlopen , HTTPError 
1311
1412
15- __version__  =  '1.0.7 ' 
13+ __version__  =  '1.1.0 ' 
1614VERSION  =  __version__ 
1715
18- API_URL  =  'https://api.filepreviews.io/v1' 
16+ API_URL  =  'https://api.filepreviews.io/v1/ ' 
1917
2018logger  =  logging .getLogger ('filepreviews' )
2119
@@ -34,14 +32,8 @@ def __init__(self, *args, **kwargs):
3432    def  generate (self , url , ** kwargs ):
3533        logger .debug ('Generating preview for {}' .format (url ))
3634
37-         request_url  =  self ._generate_request_url (url , ** kwargs )
38- 
3935        try :
40-             request  =  Request (request_url )
41- 
42-             if  self .api_key :
43-                 request .add_header ('X-API-Key' , self .api_key )
44- 
36+             request  =  self ._generate_request (url , ** kwargs )
4537            response  =  urlopen (request )
4638            data  =  self ._get_json_response (response )
4739        except  HTTPError  as  response :
@@ -52,16 +44,14 @@ def generate(self, url, **kwargs):
5244            'preview_url' : data ['preview_url' ]
5345        }
5446
55-     def  _generate_request_url (self , url , ** kwargs ):
47+     def  _generate_request (self , url , ** kwargs ):
5648        metadata  =  set (kwargs .pop ('metadata' , []))
5749        size  =  kwargs .pop ('size' , None )
5850        params  =  {
59-             'url' : url 
51+             'url' : url ,
52+             'metadata' : list (metadata )
6053        }
6154
62-         if  metadata :
63-             params ['metadata' ] =  ',' .join (metadata )
64- 
6555        if  size :
6656            width  =  size .get ('width' )
6757            height  =  size .get ('height' )
@@ -73,11 +63,22 @@ def _generate_request_url(self, url, **kwargs):
7363            if  height :
7464                geometry  =  '{}x{}' .format (geometry , height )
7565
76-             params ['size ' ] =  geometry 
66+             params ['sizes ' ] =  [ geometry ] 
7767
7868        params .update (kwargs )
7969
80-         return  '{}/?{}' .format (self .api_url , urlencode (params ))
70+         headers  =  {
71+             'Content-Type' : 'application/json' ,
72+         }
73+ 
74+         data  =  json .dumps (params ).encode ('utf-8' )
75+ 
76+         request  =  Request (self .api_url , data , headers )
77+ 
78+         if  self .api_key :
79+             request .add_header ('X-API-Key' , self .api_key )
80+ 
81+         return  request 
8182
8283    def  _poll_metadata (self , metadata_url , ** kwargs ):
8384        logger .debug ('Polling {}' .format (metadata_url ))
0 commit comments