From fafeffe7b98bc635019737b4ed104a4a760e5626 Mon Sep 17 00:00:00 2001 From: Olivier Bellone Date: Sun, 22 Oct 2017 01:35:01 +0200 Subject: [PATCH] Allow uploading in-memory files --- stripe/api_resources/file_upload.py | 5 +++-- stripe/multipart_data_generator.py | 4 +++- stripe/test/test_multipart_data_generator.py | 5 +++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/stripe/api_resources/file_upload.py b/stripe/api_resources/file_upload.py index 2db9eedf2..8b4b1b0f8 100644 --- a/stripe/api_resources/file_upload.py +++ b/stripe/api_resources/file_upload.py @@ -1,4 +1,5 @@ -from stripe import api_requestor, upload_api_base, util +import stripe +from stripe import api_requestor, util from stripe.api_resources.abstract import ListableAPIResource @@ -7,7 +8,7 @@ class FileUpload(ListableAPIResource): @classmethod def api_base(cls): - return upload_api_base + return stripe.upload_api_base @classmethod def class_name(cls): diff --git a/stripe/multipart_data_generator.py b/stripe/multipart_data_generator.py index dd6c7fda0..d07d5d4ab 100644 --- a/stripe/multipart_data_generator.py +++ b/stripe/multipart_data_generator.py @@ -18,10 +18,12 @@ def add_params(self, params): self._write(self.param_header()) self._write(self.line_break) if hasattr(value, 'read'): + filename = value.name if hasattr(value, 'name') else "blob" + self._write("Content-Disposition: form-data; name=\"") self._write(key) self._write("\"; filename=\"") - self._write(value.name) + self._write(filename) self._write("\"") self._write(self.line_break) self._write("Content-Type: application/octet-stream") diff --git a/stripe/test/test_multipart_data_generator.py b/stripe/test/test_multipart_data_generator.py index f6423d941..94a909e2f 100644 --- a/stripe/test/test_multipart_data_generator.py +++ b/stripe/test/test_multipart_data_generator.py @@ -2,6 +2,7 @@ import re import sys +import StringIO from stripe.multipart_data_generator import MultipartDataGenerator from stripe.test.helper import StripeTestCase @@ -50,3 +51,7 @@ def test_multipart_data_file_text(self): def test_multipart_data_file_binary(self): with open(__file__, mode='rb') as test_file: self.run_test_multipart_data_with_file(test_file) + + def test_multipart_data_stringio(self): + string = StringIO.StringIO("foo") + self.run_test_multipart_data_with_file(string)