Skip to content

Commit 7dfa7f3

Browse files
authored
Merge pull request #115 from jasedit/master
Removes files from api_calls before JSON encoding, so the request is properly formatted.
2 parents c36dbf4 + d45c1ca commit 7dfa7f3

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

slackclient/_slackrequest.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@ def do(token, request="?", post_data=None, domain="slack.com"):
2121
'''
2222
post_data = post_data or {}
2323

24+
# Pull file out so it isn't JSON encoded like normal fields.
25+
files = {'file': post_data.pop('file')} if 'file' in post_data else None
26+
2427
for k, v in six.iteritems(post_data):
2528
if not isinstance(v, six.string_types):
2629
post_data[k] = json.dumps(v)
2730

2831
url = 'https://{0}/api/{1}'.format(domain, request)
2932
post_data['token'] = token
30-
files = {'file': post_data.pop('file')} if 'file' in post_data else None
3133

3234
return requests.post(url, data=post_data, files=files)

tests/data/slack_logo.png

63.2 KB
Loading

tests/test_slackrequest.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,21 @@
11
from slackclient._slackrequest import SlackRequest
22
import json
3+
import os
34

5+
def test_post_file(mocker):
6+
requests = mocker.patch('slackclient._slackrequest.requests')
7+
8+
response = SlackRequest.do('xoxb-123',
9+
'files.upload',
10+
{'file': open(os.path.join('.', 'tests', 'data', 'slack_logo.png'), 'rb'),
11+
'filename': 'slack_logo.png'})
12+
13+
assert requests.post.call_count == 1
14+
args, kwargs = requests.post.call_args
15+
assert 'https://slack.com/api/files.upload' == args[0]
16+
assert {'filename': 'slack_logo.png',
17+
'token': 'xoxb-123'} == kwargs['data']
18+
assert None != kwargs['files']
419

520
def test_post_attachements(mocker):
621
requests = mocker.patch('slackclient._slackrequest.requests')

0 commit comments

Comments
 (0)