Skip to content

Commit 8060db6

Browse files
committed
MimeType mixin
1 parent ba0ce2d commit 8060db6

File tree

3 files changed

+56
-2
lines changed

3 files changed

+56
-2
lines changed

github3/handlers/base.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,38 @@
44
from github3.core import Paginate
55
from github3.converters import Modelizer
66

7+
8+
class MimeTypeMixin(object):
9+
10+
VERSION = 'beta'
11+
12+
def __init__(self):
13+
self.mimetypes = set()
14+
15+
def _parse_mime_type(self, type):
16+
return 'application/vnd.github.%s.%s+json' % (
17+
self.VERSION, type)
18+
19+
def add_raw(self):
20+
self.mimetypes.add(self._parse_mime_type('raw'))
21+
return self
22+
23+
def add_text(self):
24+
self.mimetypes.add(self._parse_mime_type('text'))
25+
return self
26+
27+
def add_html(self):
28+
self.mimetypes.add(self._parse_mime_type('html'))
29+
return self
30+
31+
def add_full(self):
32+
self.mimetypes.add(self._parse_mime_type('full'))
33+
return self
34+
35+
def mime_header(self):
36+
return {'Accept': ', '.join(self.mimetypes)}
37+
38+
739
class Handler(object):
840
""" Handler base. Requests to API and modelize responses """
941

github3/handlers/users.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# -*- encoding: utf-8 -*-
33

44
from .base import Handler
5-
import github3.models as models
5+
from github3 import models
66
from github3.converters import Rawlizer
77
from github3.exceptions import UserIsAnonymous
88

github3/tests/handler_test.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from mock import Mock, patch
55
from unittest import TestCase
66
from github3 import api
7-
from github3.handlers.base import Handler
7+
from github3.handlers.base import Handler, MimeTypeMixin
88
from github3.exceptions import *
99
from github3.converters import *
1010
from github3.models.user import User
@@ -13,6 +13,28 @@
1313
import requests
1414

1515

16+
class TestMimeTypeMixin(TestCase):
17+
18+
def setUp(self):
19+
self.mixin = MimeTypeMixin()
20+
21+
def _parse_mime_type(self, type):
22+
return 'application/vnd.github.%s.%s+json' % (
23+
MimeTypeMixin.VERSION, type)
24+
25+
def test_add_mimetypes(self):
26+
self.mixin.add_raw()
27+
self.mixin.add_text()
28+
self.mixin.add_html()
29+
self.mixin.add_full()
30+
self.assertEquals(sorted(self.mixin.mime_header()), sorted({
31+
'Accept': '%s, %s, %s, %s' % (
32+
self._parse_mime_type('raw'),
33+
self._parse_mime_type('text'),
34+
self._parse_mime_type('html'),
35+
self._parse_mime_type('full'))}))
36+
37+
1638
class TestHandler(TestCase):
1739

1840
def setUp(self):

0 commit comments

Comments
 (0)