BbRest icon indicating copy to clipboard operation
BbRest copied to clipboard

Upload endpoint not working because of JSON serialization.

Open Purrloin4 opened this issue 1 year ago • 0 comments

When trying the Upload function with a file as the payload it gives an error because of not JSON serializable. Executed code:

with open('TiestoF.pdf', 'rb') as f:
    payload = {'file': f}
    bbObject.Upload(payload = payload)

Error:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[46], line 10
      8 with open('TiestoF.pdf', 'rb') as f:
      9     payload = {'file': f}
---> 10     bbObject.Upload(payload = payload)

File <string>:1, in Upload(self, payload, params, sync)

File [~\AppData\Local\pypoetry\Cache\virtualenvs\bbultra-exploration-LkUm2ENX-py3.12\Lib\site-packages\bbrest.py:342](http://localhost:8888/lab/tree/python%20exploration/~/AppData/Local/pypoetry/Cache/virtualenvs/bbultra-exploration-LkUm2ENX-py3.12/Lib/site-packages/bbrest.py#line=341), in BbRest.call(self, summary, **kwargs)
    338     self.refresh_token()
    340 req = requests.Request(method=method, url=url, params=params, json=payload)
--> 342 prepped = self.session.prepare_request(req)
    344 resp = self.session.send(prepped)
    345 ret_resp = resp

File [~\AppData\Local\pypoetry\Cache\virtualenvs\bbultra-exploration-LkUm2ENX-py3.12\Lib\site-packages\requests\sessions.py:486](http://localhost:8888/lab/tree/python%20exploration/~/AppData/Local/pypoetry/Cache/virtualenvs/bbultra-exploration-LkUm2ENX-py3.12/Lib/site-packages/requests/sessions.py#line=485), in Session.prepare_request(self, request)
    483     auth = get_netrc_auth(request.url)
    485 p = PreparedRequest()
--> 486 p.prepare(
    487     method=request.method.upper(),
    488     url=request.url,
    489     files=request.files,
    490     data=request.data,
    491     json=request.json,
    492     headers=merge_setting(
    493         request.headers, self.headers, dict_class=CaseInsensitiveDict
    494     ),
    495     params=merge_setting(request.params, self.params),
    496     auth=merge_setting(auth, self.auth),
    497     cookies=merged_cookies,
    498     hooks=merge_hooks(request.hooks, self.hooks),
    499 )
    500 return p

File [~\AppData\Local\pypoetry\Cache\virtualenvs\bbultra-exploration-LkUm2ENX-py3.12\Lib\site-packages\requests\models.py:371](http://localhost:8888/lab/tree/python%20exploration/~/AppData/Local/pypoetry/Cache/virtualenvs/bbultra-exploration-LkUm2ENX-py3.12/Lib/site-packages/requests/models.py#line=370), in PreparedRequest.prepare(self, method, url, headers, files, data, params, auth, cookies, hooks, json)
    369 self.prepare_headers(headers)
    370 self.prepare_cookies(cookies)
--> 371 self.prepare_body(data, files, json)
    372 self.prepare_auth(auth, url)
    374 # Note that prepare_auth must be last to enable authentication schemes
    375 # such as OAuth to work on a fully prepared request.
    376 
    377 # This MUST go after prepare_auth. Authenticators could add a hook

File [~\AppData\Local\pypoetry\Cache\virtualenvs\bbultra-exploration-LkUm2ENX-py3.12\Lib\site-packages\requests\models.py:511](http://localhost:8888/lab/tree/python%20exploration/~/AppData/Local/pypoetry/Cache/virtualenvs/bbultra-exploration-LkUm2ENX-py3.12/Lib/site-packages/requests/models.py#line=510), in PreparedRequest.prepare_body(self, data, files, json)
    508 content_type = "application/json"
    510 try:
--> 511     body = complexjson.dumps(json, allow_nan=False)
    512 except ValueError as ve:
    513     raise InvalidJSONError(ve, request=self)

File [~\AppData\Local\Programs\Python\Python312\Lib\json\__init__.py:238](http://localhost:8888/lab/tree/python%20exploration/~/AppData/Local/Programs/Python/Python312/Lib/json/__init__.py#line=237), in dumps(obj, skipkeys, ensure_ascii, check_circular, allow_nan, cls, indent, separators, default, sort_keys, **kw)
    232 if cls is None:
    233     cls = JSONEncoder
    234 return cls(
    235     skipkeys=skipkeys, ensure_ascii=ensure_ascii,
    236     check_circular=check_circular, allow_nan=allow_nan, indent=indent,
    237     separators=separators, default=default, sort_keys=sort_keys,
--> 238     **kw).encode(obj)

File [~\AppData\Local\Programs\Python\Python312\Lib\json\encoder.py:200](http://localhost:8888/lab/tree/python%20exploration/~/AppData/Local/Programs/Python/Python312/Lib/json/encoder.py#line=199), in JSONEncoder.encode(self, o)
    196         return encode_basestring(o)
    197 # This doesn't pass the iterator directly to ''.join() because the
    198 # exceptions aren't as detailed.  The list call should be roughly
    199 # equivalent to the PySequence_Fast that ''.join() would do.
--> 200 chunks = self.iterencode(o, _one_shot=True)
    201 if not isinstance(chunks, (list, tuple)):
    202     chunks = list(chunks)

File [~\AppData\Local\Programs\Python\Python312\Lib\json\encoder.py:258](http://localhost:8888/lab/tree/python%20exploration/~/AppData/Local/Programs/Python/Python312/Lib/json/encoder.py#line=257), in JSONEncoder.iterencode(self, o, _one_shot)
    253 else:
    254     _iterencode = _make_iterencode(
    255         markers, self.default, _encoder, self.indent, floatstr,
    256         self.key_separator, self.item_separator, self.sort_keys,
    257         self.skipkeys, _one_shot)
--> 258 return _iterencode(o, 0)

File [~\AppData\Local\Programs\Python\Python312\Lib\json\encoder.py:180](http://localhost:8888/lab/tree/python%20exploration/~/AppData/Local/Programs/Python/Python312/Lib/json/encoder.py#line=179), in JSONEncoder.default(self, o)
    161 def default(self, o):
    162     """Implement this method in a subclass such that it returns
    163     a serializable object for ``o``, or calls the base implementation
    164     (to raise a ``TypeError``).
   (...)
    178 
    179     """
--> 180     raise TypeError(f'Object of type {o.__class__.__name__} '
    181                     f'is not JSON serializable')

TypeError: Object of type BufferedReader is not JSON serializable

Purrloin4 avatar Mar 16 '24 15:03 Purrloin4