aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--github3/handlers/base.py32
-rw-r--r--github3/handlers/users.py2
-rw-r--r--github3/tests/handler_test.py24
3 files changed, 56 insertions, 2 deletions
diff --git a/github3/handlers/base.py b/github3/handlers/base.py
index a85ce20..7bc55d2 100644
--- a/github3/handlers/base.py
+++ b/github3/handlers/base.py
@@ -4,6 +4,38 @@
from github3.core import Paginate
from github3.converters import Modelizer
+
+class MimeTypeMixin(object):
+
+ VERSION = 'beta'
+
+ def __init__(self):
+ self.mimetypes = set()
+
+ def _parse_mime_type(self, type):
+ return 'application/vnd.github.%s.%s+json' % (
+ self.VERSION, type)
+
+ def add_raw(self):
+ self.mimetypes.add(self._parse_mime_type('raw'))
+ return self
+
+ def add_text(self):
+ self.mimetypes.add(self._parse_mime_type('text'))
+ return self
+
+ def add_html(self):
+ self.mimetypes.add(self._parse_mime_type('html'))
+ return self
+
+ def add_full(self):
+ self.mimetypes.add(self._parse_mime_type('full'))
+ return self
+
+ def mime_header(self):
+ return {'Accept': ', '.join(self.mimetypes)}
+
+
class Handler(object):
""" Handler base. Requests to API and modelize responses """
diff --git a/github3/handlers/users.py b/github3/handlers/users.py
index ec40f02..92eea6f 100644
--- a/github3/handlers/users.py
+++ b/github3/handlers/users.py
@@ -2,7 +2,7 @@
# -*- encoding: utf-8 -*-
from .base import Handler
-import github3.models as models
+from github3 import models
from github3.converters import Rawlizer
from github3.exceptions import UserIsAnonymous
diff --git a/github3/tests/handler_test.py b/github3/tests/handler_test.py
index e691182..e95374b 100644
--- a/github3/tests/handler_test.py
+++ b/github3/tests/handler_test.py
@@ -4,7 +4,7 @@
from mock import Mock, patch
from unittest import TestCase
from github3 import api
-from github3.handlers.base import Handler
+from github3.handlers.base import Handler, MimeTypeMixin
from github3.exceptions import *
from github3.converters import *
from github3.models.user import User
@@ -13,6 +13,28 @@ import json
import requests
+class TestMimeTypeMixin(TestCase):
+
+ def setUp(self):
+ self.mixin = MimeTypeMixin()
+
+ def _parse_mime_type(self, type):
+ return 'application/vnd.github.%s.%s+json' % (
+ MimeTypeMixin.VERSION, type)
+
+ def test_add_mimetypes(self):
+ self.mixin.add_raw()
+ self.mixin.add_text()
+ self.mixin.add_html()
+ self.mixin.add_full()
+ self.assertEquals(sorted(self.mixin.mime_header()), sorted({
+ 'Accept': '%s, %s, %s, %s' % (
+ self._parse_mime_type('raw'),
+ self._parse_mime_type('text'),
+ self._parse_mime_type('html'),
+ self._parse_mime_type('full'))}))
+
+
class TestHandler(TestCase):
def setUp(self):