Skip to content

Commit 8c3e123

Browse files
committed
Support to Mimetypes in some services
1 parent 3594257 commit 8c3e123

File tree

3 files changed

+55
-1
lines changed

3 files changed

+55
-1
lines changed

pygithub3/services/base.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,30 @@ def _get(self, request, **kwargs):
8787

8888
def _get_result(self, request, **kwargs):
8989
return Result(self._client, request, **kwargs)
90+
91+
92+
class MimeTypeMixin(object):
93+
94+
VERSION = 'beta'
95+
96+
def __set_mimetype(self, mimetype):
97+
self.mimetype = 'application/vnd.github.%s.%s+json' % (
98+
self.VERSION, mimetype)
99+
100+
def set_raw_mimetype(self):
101+
self.__set_mimetype('raw')
102+
103+
def set_text_mimetype(self):
104+
self.__set_mimetype('text')
105+
106+
def set_html_mimetype(self):
107+
self.__set_mimetype('html')
108+
109+
def set_full_mimetype(self):
110+
self.__set_mimetype('full')
111+
112+
def _get_mimetype_as_header(self):
113+
try:
114+
return {'headers': {'Accept': self.mimetype}}
115+
except AttributeError:
116+
return {}

pygithub3/tests/services/test_core.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,24 @@ def test_GET_result(self, request_method):
5353
result = self.s._get_result(self.r, **self.args)
5454
self.assertFalse(request_method.called)
5555
self.assertIsInstance(result, Result)
56+
57+
58+
@patch.object(requests.sessions.Session, 'request')
59+
class TestMimeType(TestCase):
60+
61+
def setUp(self):
62+
self.ms = DummyService()
63+
64+
def test_WITHOUT_mimetype(self, request_method):
65+
request_method.return_value = mock_response()
66+
self.ms.dummy_request()
67+
request_method.assert_called_with('get', _('dummyrequest'), params={})
68+
69+
def test_WITH_mimetype(self, request_method):
70+
request_method.return_value = mock_response()
71+
self.ms.set_html_mimetype()
72+
self.ms.dummy_request()
73+
request_method.assert_called_with('get', _('dummyrequest'),
74+
headers={'Accept': 'application/vnd.github.%s.html+json' %
75+
MimeTypeMixin.VERSION},
76+
params={})

pygithub3/tests/utils/services.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
#!/usr/bin/env python
22
# -*- encoding: utf-8 -*-
33

4-
from .base import mock_json
4+
from pygithub3.services.base import Service, MimeTypeMixin
5+
from .base import DummyRequest
56

67
base_url = 'https://api.github.com/'
78

89

910
def _(request):
1011
return "%s%s" % (base_url, request)
12+
13+
class DummyService(Service, MimeTypeMixin):
14+
15+
def dummy_request(self):
16+
self._get(DummyRequest(), **self._get_mimetype_as_header())

0 commit comments

Comments
 (0)