From 29d7c5641ce8a4099e23f50e965f1c483e993f39 Mon Sep 17 00:00:00 2001 From: David Medina Date: Mon, 6 Feb 2012 20:19:42 +0100 Subject: Rename ghrequest to requests I think it's a redundant name. Only needs to move out from core module to avoid imports problems with `requests` library * Also change some in setup.py --- pygithub3/__init__.py | 1 + pygithub3/core/ghrequests/__init__.py | 117 --------------------------- pygithub3/core/ghrequests/users/__init__.py | 4 - pygithub3/core/ghrequests/users/emails.py | 44 ---------- pygithub3/core/ghrequests/users/followers.py | 76 ----------------- pygithub3/core/ghrequests/users/keys.py | 79 ------------------ pygithub3/core/ghrequests/users/user.py | 36 --------- pygithub3/requests/__init__.py | 117 +++++++++++++++++++++++++++ pygithub3/requests/users/__init__.py | 4 + pygithub3/requests/users/emails.py | 44 ++++++++++ pygithub3/requests/users/followers.py | 76 +++++++++++++++++ pygithub3/requests/users/keys.py | 79 ++++++++++++++++++ pygithub3/requests/users/user.py | 36 +++++++++ pygithub3/services/base.py | 2 +- 14 files changed, 358 insertions(+), 357 deletions(-) delete mode 100644 pygithub3/core/ghrequests/__init__.py delete mode 100644 pygithub3/core/ghrequests/users/__init__.py delete mode 100644 pygithub3/core/ghrequests/users/emails.py delete mode 100644 pygithub3/core/ghrequests/users/followers.py delete mode 100644 pygithub3/core/ghrequests/users/keys.py delete mode 100644 pygithub3/core/ghrequests/users/user.py create mode 100644 pygithub3/requests/__init__.py create mode 100644 pygithub3/requests/users/__init__.py create mode 100644 pygithub3/requests/users/emails.py create mode 100644 pygithub3/requests/users/followers.py create mode 100644 pygithub3/requests/users/keys.py create mode 100644 pygithub3/requests/users/user.py (limited to 'pygithub3') diff --git a/pygithub3/__init__.py b/pygithub3/__init__.py index 7c48d06..3d68157 100644 --- a/pygithub3/__init__.py +++ b/pygithub3/__init__.py @@ -4,5 +4,6 @@ __title__ = 'pygithub3' __version__ = '0.1' __author__ = 'David Medina' +__email__= 'davidmedina9@gmail.com' __license__ = 'ISC' __copyright__ = 'Copyright 2012 David Medina' diff --git a/pygithub3/core/ghrequests/__init__.py b/pygithub3/core/ghrequests/__init__.py deleted file mode 100644 index c461bec..0000000 --- a/pygithub3/core/ghrequests/__init__.py +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env python -# -*- encoding: utf-8 -*- - -import re -from importlib import import_module -try: - import simplejson as json -except ImportError: - import json - -ABS_IMPORT_PREFIX = 'pygithub3.core.ghrequests' - - -class RequestNotFound(Exception): - pass - - -class RequestUriInvalid(Exception): - pass - - -class RequestValidationError(Exception): - pass - - -class Request(object): - """ """ - - def __init__(self, args): - """ """ - self.args = args - self.validate() - self.uri = self.set_uri() - - def validate(self): - raise NotImplementedError - - def set_uri(self): - raise NotImplementedError - - def get_data(self): - raise NotImplementedError - - def get_uri(self): - return str(self.uri).strip('/') - - def get_resource(self): - return getattr(self, 'resource', '') - - def __getattr__(self, name): - return self.args.get(name) - - def __str__(self): - return self.get_uri() - - def _parse_simple_dict(self, to_parse): - if not hasattr(to_parse, 'items'): - raise RequestValidationError("'%s' needs a data dictionary" - % self.__class__.__name__) - update_params = { - valid_key: to_parse[valid_key] - for valid_key in self.valid - if valid_key in to_parse} - return update_params - - -class Factory(object): - """ """ - - import_pattern = re.compile(r'^(\w+\.)+\w+$') - - def __init__(self): - """ """ - self.args = {} - - def config_with(self, **kwargs): - self.args = kwargs - - def clear_config(self): - self.args = {} - - def __validate(func): - """ """ - - def wrapper(self, request_uri): - if not Factory.import_pattern.match(request_uri): - raise RequestUriInvalid("'%s' isn't valid form" % request_uri) - return func(self, request_uri.lower()) - return wrapper - - def __dispatch(func): - """ """ - - def wrapper(self, request_uri): - module_chunk, s, request_chunk = request_uri.rpartition('.') - try: - # TODO: CamelCase and under_score support, now only Class Name - module = import_module('%s.%s' - % (ABS_IMPORT_PREFIX, module_chunk)) - request = getattr(module, request_chunk.capitalize()) - except ImportError: - raise RequestNotFound("'%s' module does not exists" - % module_chunk) - except AttributeError: - raise RequestNotFound( - "'%s' request doesn't exists into '%s' module" - % (request_chunk.capitalize(), module_chunk)) - return func(self, request) - return wrapper - - @__validate - @__dispatch - def __call__(self, request=''): - request = request(self.args) - self.clear_config() - assert isinstance(request, Request) - return request diff --git a/pygithub3/core/ghrequests/users/__init__.py b/pygithub3/core/ghrequests/users/__init__.py deleted file mode 100644 index c9ef5b5..0000000 --- a/pygithub3/core/ghrequests/users/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -# -*- encoding: utf-8 -*- - -from pygithub3.core.ghrequests import Request, json, RequestValidationError -from user import * diff --git a/pygithub3/core/ghrequests/users/emails.py b/pygithub3/core/ghrequests/users/emails.py deleted file mode 100644 index f7fb284..0000000 --- a/pygithub3/core/ghrequests/users/emails.py +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env python -# -*- encoding: utf-8 -*- - -from . import Request, json -from pygithub3.resources.base import Raw - - -class List(Request): - - resource = Raw - - def validate(self): - pass - - def set_uri(self): - return 'user/emails' - - -class Add(Request): - - resource = Raw - - def validate(self): - pass - - def get_data(self): - return json.dumps(self.emails) - - def set_uri(self): - return 'user/emails' - - -class Delete(Request): - - resource = Raw - - def validate(self): - pass - - def get_data(self): - return json.dumps(self.emails) - - def set_uri(self): - return 'user/emails' diff --git a/pygithub3/core/ghrequests/users/followers.py b/pygithub3/core/ghrequests/users/followers.py deleted file mode 100644 index f2bfc1a..0000000 --- a/pygithub3/core/ghrequests/users/followers.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python -# -*- encoding: utf-8 -*- - -from . import Request, RequestValidationError -from pygithub3.resources.users import User -from pygithub3.resources.base import Raw - - -class List(Request): - - resource = User - - def validate(self): - pass - - def set_uri(self): - if self.user: - return 'users/%s/followers' % self.user - else: - return 'user/followers' - - -class Listfollowing(Request): - - resource = User - - def validate(self): - pass - - def set_uri(self): - if self.user: - return 'users/%s/following' % self.user - else: - return 'user/following' - - -class Isfollowing(Request): - - resource = Raw - - def validate(self): - if not self.user: - raise RequestValidationError( - "'%s' request needs a user" % self.__class__.__name__) - - def set_uri(self): - return 'user/following/%s' % self.user - - -class Follow(Request): - - resource = Raw - - def validate(self): - if not self.user: - raise RequestValidationError( - "'%s' request needs a user" % self.__class__.__name__) - - def set_uri(self): - return 'user/following/%s' % self.user - - -class Unfollow(Request): - - resource = User - - def validate(self): - if not self.user: - raise RequestValidationError( - "'%s' request needs a user" % self.__class__.__name__) - - def set_uri(self): - return 'user/following/%s' % self.user - - def get_data(self): - pass diff --git a/pygithub3/core/ghrequests/users/keys.py b/pygithub3/core/ghrequests/users/keys.py deleted file mode 100644 index f5bb386..0000000 --- a/pygithub3/core/ghrequests/users/keys.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env python -# -*- encoding: utf-8 -*- - -from . import Request, json, RequestValidationError -from pygithub3.resources.users import Key -from pygithub3.resources.base import Raw - - -class List(Request): - - resource = Key - - def validate(self): - pass - - def set_uri(self): - return 'user/keys' - - -class Get(Request): - - resource = Key - - def validate(self): - if not self.key_id: - raise RequestValidationError("'%s' needs key_id" - % self.__class__.__name__) - - def set_uri(self): - return 'user/keys/%s' % self.key_id - - -class Add(Request): - - resource = Key - valid = ('title', 'key') - - def validate(self): - self.add_data = self._parse_simple_dict(self.add_data) - - def set_uri(self): - return 'user/keys' - - def get_data(self): - return json.dumps(self.add_data) - - -class Update(Request): - - resource = Key - valid = ('title', 'key') - - def validate(self): - if not self.key_id: - raise RequestValidationError("'%s' needs key_id" - % self.__class__.__name__) - self.update_params = self._parse_simple_dict(self.update_with) - - def set_uri(self): - return 'user/keys/%s' % self.key_id - - def get_data(self): - return json.dumps(self.update_params) - - -class Delete(Request): - - resource = Raw - - def validate(self): - if not self.key_id: - raise RequestValidationError("'%s' needs key_id" - % self.__class__.__name__) - - def set_uri(self): - return 'user/keys/%s' % self.key_id - - def get_data(self): - return None diff --git a/pygithub3/core/ghrequests/users/user.py b/pygithub3/core/ghrequests/users/user.py deleted file mode 100644 index d4b3667..0000000 --- a/pygithub3/core/ghrequests/users/user.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env python -# -*- encoding: utf-8 -*- - -from . import Request, json -from pygithub3.resources.users import User - -__all__ = ('Get', 'Update') - - -class Get(Request): - - resource = User - - def validate(self): - pass - - def set_uri(self): - if self.user: - return 'users/%s' % self.user - else: - return 'user' - - -class Update(Request): - - resource = User - valid = ('name', 'email', 'blog', 'company', 'location', 'hireable', 'bio') - - def validate(self): - self.update_params = self._parse_simple_dict(self.update_with) - - def get_data(self): - return json.dumps(self.update_params) - - def set_uri(self): - return 'user' diff --git a/pygithub3/requests/__init__.py b/pygithub3/requests/__init__.py new file mode 100644 index 0000000..725ea12 --- /dev/null +++ b/pygithub3/requests/__init__.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import re +from importlib import import_module +try: + import simplejson as json +except ImportError: + import json + +ABS_IMPORT_PREFIX = 'pygithub3.requests' + + +class RequestNotFound(Exception): + pass + + +class RequestUriInvalid(Exception): + pass + + +class RequestValidationError(Exception): + pass + + +class Request(object): + """ """ + + def __init__(self, args): + """ """ + self.args = args + self.validate() + self.uri = self.set_uri() + + def validate(self): + raise NotImplementedError + + def set_uri(self): + raise NotImplementedError + + def get_data(self): + raise NotImplementedError + + def get_uri(self): + return str(self.uri).strip('/') + + def get_resource(self): + return getattr(self, 'resource', '') + + def __getattr__(self, name): + return self.args.get(name) + + def __str__(self): + return self.get_uri() + + def _parse_simple_dict(self, to_parse): + if not hasattr(to_parse, 'items'): + raise RequestValidationError("'%s' needs a data dictionary" + % self.__class__.__name__) + update_params = { + valid_key: to_parse[valid_key] + for valid_key in self.valid + if valid_key in to_parse} + return update_params + + +class Factory(object): + """ """ + + import_pattern = re.compile(r'^(\w+\.)+\w+$') + + def __init__(self): + """ """ + self.args = {} + + def config_with(self, **kwargs): + self.args = kwargs + + def clear_config(self): + self.args = {} + + def __validate(func): + """ """ + + def wrapper(self, request_uri): + if not Factory.import_pattern.match(request_uri): + raise RequestUriInvalid("'%s' isn't valid form" % request_uri) + return func(self, request_uri.lower()) + return wrapper + + def __dispatch(func): + """ """ + + def wrapper(self, request_uri): + module_chunk, s, request_chunk = request_uri.rpartition('.') + try: + # TODO: CamelCase and under_score support, now only Class Name + module = import_module('%s.%s' + % (ABS_IMPORT_PREFIX, module_chunk)) + request = getattr(module, request_chunk.capitalize()) + except ImportError: + raise RequestNotFound("'%s' module does not exists" + % module_chunk) + except AttributeError: + raise RequestNotFound( + "'%s' request doesn't exists into '%s' module" + % (request_chunk.capitalize(), module_chunk)) + return func(self, request) + return wrapper + + @__validate + @__dispatch + def __call__(self, request=''): + request = request(self.args) + self.clear_config() + assert isinstance(request, Request) + return request diff --git a/pygithub3/requests/users/__init__.py b/pygithub3/requests/users/__init__.py new file mode 100644 index 0000000..93ab7b6 --- /dev/null +++ b/pygithub3/requests/users/__init__.py @@ -0,0 +1,4 @@ +# -*- encoding: utf-8 -*- + +from pygithub3.requests import Request, json, RequestValidationError +from user import * diff --git a/pygithub3/requests/users/emails.py b/pygithub3/requests/users/emails.py new file mode 100644 index 0000000..f7fb284 --- /dev/null +++ b/pygithub3/requests/users/emails.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from . import Request, json +from pygithub3.resources.base import Raw + + +class List(Request): + + resource = Raw + + def validate(self): + pass + + def set_uri(self): + return 'user/emails' + + +class Add(Request): + + resource = Raw + + def validate(self): + pass + + def get_data(self): + return json.dumps(self.emails) + + def set_uri(self): + return 'user/emails' + + +class Delete(Request): + + resource = Raw + + def validate(self): + pass + + def get_data(self): + return json.dumps(self.emails) + + def set_uri(self): + return 'user/emails' diff --git a/pygithub3/requests/users/followers.py b/pygithub3/requests/users/followers.py new file mode 100644 index 0000000..f2bfc1a --- /dev/null +++ b/pygithub3/requests/users/followers.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from . import Request, RequestValidationError +from pygithub3.resources.users import User +from pygithub3.resources.base import Raw + + +class List(Request): + + resource = User + + def validate(self): + pass + + def set_uri(self): + if self.user: + return 'users/%s/followers' % self.user + else: + return 'user/followers' + + +class Listfollowing(Request): + + resource = User + + def validate(self): + pass + + def set_uri(self): + if self.user: + return 'users/%s/following' % self.user + else: + return 'user/following' + + +class Isfollowing(Request): + + resource = Raw + + def validate(self): + if not self.user: + raise RequestValidationError( + "'%s' request needs a user" % self.__class__.__name__) + + def set_uri(self): + return 'user/following/%s' % self.user + + +class Follow(Request): + + resource = Raw + + def validate(self): + if not self.user: + raise RequestValidationError( + "'%s' request needs a user" % self.__class__.__name__) + + def set_uri(self): + return 'user/following/%s' % self.user + + +class Unfollow(Request): + + resource = User + + def validate(self): + if not self.user: + raise RequestValidationError( + "'%s' request needs a user" % self.__class__.__name__) + + def set_uri(self): + return 'user/following/%s' % self.user + + def get_data(self): + pass diff --git a/pygithub3/requests/users/keys.py b/pygithub3/requests/users/keys.py new file mode 100644 index 0000000..f5bb386 --- /dev/null +++ b/pygithub3/requests/users/keys.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from . import Request, json, RequestValidationError +from pygithub3.resources.users import Key +from pygithub3.resources.base import Raw + + +class List(Request): + + resource = Key + + def validate(self): + pass + + def set_uri(self): + return 'user/keys' + + +class Get(Request): + + resource = Key + + def validate(self): + if not self.key_id: + raise RequestValidationError("'%s' needs key_id" + % self.__class__.__name__) + + def set_uri(self): + return 'user/keys/%s' % self.key_id + + +class Add(Request): + + resource = Key + valid = ('title', 'key') + + def validate(self): + self.add_data = self._parse_simple_dict(self.add_data) + + def set_uri(self): + return 'user/keys' + + def get_data(self): + return json.dumps(self.add_data) + + +class Update(Request): + + resource = Key + valid = ('title', 'key') + + def validate(self): + if not self.key_id: + raise RequestValidationError("'%s' needs key_id" + % self.__class__.__name__) + self.update_params = self._parse_simple_dict(self.update_with) + + def set_uri(self): + return 'user/keys/%s' % self.key_id + + def get_data(self): + return json.dumps(self.update_params) + + +class Delete(Request): + + resource = Raw + + def validate(self): + if not self.key_id: + raise RequestValidationError("'%s' needs key_id" + % self.__class__.__name__) + + def set_uri(self): + return 'user/keys/%s' % self.key_id + + def get_data(self): + return None diff --git a/pygithub3/requests/users/user.py b/pygithub3/requests/users/user.py new file mode 100644 index 0000000..d4b3667 --- /dev/null +++ b/pygithub3/requests/users/user.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from . import Request, json +from pygithub3.resources.users import User + +__all__ = ('Get', 'Update') + + +class Get(Request): + + resource = User + + def validate(self): + pass + + def set_uri(self): + if self.user: + return 'users/%s' % self.user + else: + return 'user' + + +class Update(Request): + + resource = User + valid = ('name', 'email', 'blog', 'company', 'location', 'hireable', 'bio') + + def validate(self): + self.update_params = self._parse_simple_dict(self.update_with) + + def get_data(self): + return json.dumps(self.update_params) + + def set_uri(self): + return 'user' diff --git a/pygithub3/services/base.py b/pygithub3/services/base.py index f124e42..960912a 100644 --- a/pygithub3/services/base.py +++ b/pygithub3/services/base.py @@ -3,7 +3,7 @@ from pygithub3.core.client import Client from pygithub3.core.result import Result -from pygithub3.core.ghrequests import Factory +from pygithub3.requests import Factory from pygithub3.core.errors import NotFound -- cgit v1.2.3-59-g8ed1b