aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3/requests
diff options
context:
space:
mode:
Diffstat (limited to 'pygithub3/requests')
-rw-r--r--pygithub3/requests/base.py4
-rw-r--r--pygithub3/requests/issues/__init__.py44
-rw-r--r--pygithub3/requests/issues/comments.py42
-rw-r--r--pygithub3/requests/issues/events.py22
-rw-r--r--pygithub3/requests/issues/labels.py77
-rw-r--r--pygithub3/requests/issues/milestones.py39
-rw-r--r--pygithub3/requests/repos/__init__.py1
7 files changed, 227 insertions, 2 deletions
diff --git a/pygithub3/requests/base.py b/pygithub3/requests/base.py
index c4fe5cc..6088bae 100644
--- a/pygithub3/requests/base.py
+++ b/pygithub3/requests/base.py
@@ -27,8 +27,8 @@ class Body(object):
def parse(self):
""" Parse body with schema-required rules """
if not hasattr(self.content, 'items'):
- raise ValidationError("'%s' needs a content dictionary"
- % self.__class__.__name__)
+ raise ValidationError("It needs a content dictionary (%s)" % (
+ self.content, ))
parsed = dict([(key, self.content[key]) for key in self.schema
if key in self.content])
for attr_required in self.required:
diff --git a/pygithub3/requests/issues/__init__.py b/pygithub3/requests/issues/__init__.py
new file mode 100644
index 0000000..d6c7b06
--- /dev/null
+++ b/pygithub3/requests/issues/__init__.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+
+from pygithub3.requests.base import Request
+from pygithub3.resources.issues import Issue
+
+
+class List(Request):
+
+ uri = 'issues'
+ resource = Issue
+
+
+class List_by_repo(Request):
+
+ uri = 'repos/{user}/{repo}/issues'
+ resource = Issue
+
+
+class Get(Request):
+
+ uri = 'repos/{user}/{repo}/issues/{number}'
+ resource = Issue
+
+
+class Create(Request):
+
+ uri = 'repos/{user}/{repo}/issues'
+ resource = Issue
+ body_schema = {
+ 'schema': ('title', 'body', 'assignee', 'milestone', 'labels'),
+ 'required': ('title', )
+ }
+
+
+class Update(Request):
+
+ uri = 'repos/{user}/{repo}/issues/{number}'
+ resource = Issue
+ body_schema = {
+ 'schema': ('title', 'body', 'assignee', 'state', 'milestone',
+ 'lables'),
+ 'required': ()
+ }
diff --git a/pygithub3/requests/issues/comments.py b/pygithub3/requests/issues/comments.py
new file mode 100644
index 0000000..638c9cf
--- /dev/null
+++ b/pygithub3/requests/issues/comments.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+
+from pygithub3.requests.base import Request, ValidationError
+from pygithub3.resources.issues import Comment
+
+class List(Request):
+
+ uri = 'repos/{user}/{repo}/issues/{number}/comments'
+ resource = Comment
+
+
+class Get(Request):
+
+ uri = 'repos/{user}/{repo}/issues/comments/{id}'
+ resource = Comment
+
+
+class Create(Request):
+
+ uri = 'repos/{user}/{repo}/issues/{number}/comments'
+ resource = Comment
+ body_schema = {
+ 'schema': ('body', ),
+ 'required': ('body', )
+ }
+
+
+class Edit(Request):
+
+ uri = 'repos/{user}/{repo}/issues/comments/{id}'
+ resource = Comment
+ body_schema = {
+ 'schema': ('body', ),
+ 'required': ('body', )
+ }
+
+
+class Delete(Request):
+
+ uri = 'repos/{user}/{repo}/issues/comments/{id}'
+ resource = Comment
diff --git a/pygithub3/requests/issues/events.py b/pygithub3/requests/issues/events.py
new file mode 100644
index 0000000..dfefe7e
--- /dev/null
+++ b/pygithub3/requests/issues/events.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+
+from pygithub3.requests.base import Request, ValidationError
+from pygithub3.resources.issues import Event
+
+class List_by_issue(Request):
+
+ uri = 'repos/{user}/{repo}/issues/{number}/events'
+ resource = Event
+
+
+class List_by_repo(Request):
+
+ uri = 'repos/{user}/{repo}/issues/events'
+ resource = Event
+
+
+class Get(Request):
+
+ uri = 'repos/{user}/{repo}/issues/events/{id}'
+ resource = Event
diff --git a/pygithub3/requests/issues/labels.py b/pygithub3/requests/issues/labels.py
new file mode 100644
index 0000000..9ae6025
--- /dev/null
+++ b/pygithub3/requests/issues/labels.py
@@ -0,0 +1,77 @@
+# -*- encoding: utf-8 -*-
+
+from pygithub3.requests.base import Request, ValidationError
+from pygithub3.resources.issues import Label
+
+
+class List(Request):
+
+ uri = 'repos/{user}/{repo}/labels'
+ resource = Label
+
+
+class Get(Request):
+ uri = 'repos/{user}/{repo}/labels/{name}'
+ resource = Label
+
+
+class Create(Request):
+ uri = 'repos/{user}/{repo}/labels'
+ resource = Label
+ body_schema = {
+ 'schema': ('name', 'color'),
+ 'required': ('name', 'color' )
+ }
+
+ def clean_body(self):
+ color = self.body.get('color', '')
+ if not Label.is_valid_color(color):
+ raise ValidationError('colors must have 6 hexadecimal characters, '
+ 'without # in the beggining')
+ else:
+ return self.body
+
+
+class Update(Create):
+
+ uri = 'repos/{user}/{repo}/labels/{name}'
+ resource = Label
+ body_schema = {
+ 'schema': ('name', 'color'),
+ 'required': ('name', 'color' )
+ }
+
+
+class Delete(Request):
+ uri = 'repos/{user}/{repo}/labels/{name}'
+ resource = Label
+
+
+class List_by_issue(Request):
+ uri = 'repos/{user}/{repo}/issues/{number}/labels'
+ resource = Label
+
+
+class Add_to_issue(Request):
+ uri = 'repos/{user}/{repo}/issues/{number}/labels'
+ resource = Label
+
+
+class Remove_from_issue(Request):
+ uri = 'repos/{user}/{repo}/issues/{number}/labels/{name}'
+ resource = Label
+
+
+class Replace_all(Request):
+ uri = 'repos/{user}/{repo}/issues/{number}/labels'
+ resource = Label
+
+
+class Remove_all(Request):
+ uri = 'repos/{user}/{repo}/issues/{number}/labels'
+ resource = Label
+
+
+class List_by_milestone(Request):
+ uri = 'repos/{user}/{repo}/milestones/{number}/labels'
+ resource = Label
diff --git a/pygithub3/requests/issues/milestones.py b/pygithub3/requests/issues/milestones.py
new file mode 100644
index 0000000..4093c7e
--- /dev/null
+++ b/pygithub3/requests/issues/milestones.py
@@ -0,0 +1,39 @@
+# -*- encoding: utf-8 -*-
+
+from pygithub3.requests.base import Request, ValidationError
+from pygithub3.resources.issues import Milestone
+
+
+class List(Request):
+ uri = 'repos/{user}/{repo}/milestones'
+ resource = Milestone
+
+
+class Get(Request):
+ uri = 'repos/{user}/{repo}/milestones/{number}'
+ resource = Milestone
+
+
+class Create(Request):
+ uri = 'repos/{user}/{repo}/milestones'
+ resource = Milestone
+ body_schema = {
+ 'schema': ('title', 'state', 'description', 'due_on'),
+ 'required': ('title',)
+ }
+
+ def clean_body(self): # Test if API normalize it
+ state = self.body.get('state', '')
+ if state and state.lower() not in ('open', 'closed'):
+ raise ValidationError("'state' must be 'open' or 'closed'")
+ return self.body
+
+
+class Update(Create):
+
+ uri = 'repos/{user}/{repo}/milestones/{number}'
+
+
+class Delete(Request):
+ uri = 'repos/{user}/{repo}/milestones/{number}'
+ resource = Milestone
diff --git a/pygithub3/requests/repos/__init__.py b/pygithub3/requests/repos/__init__.py
index 7bbcf3e..a1b3607 100644
--- a/pygithub3/requests/repos/__init__.py
+++ b/pygithub3/requests/repos/__init__.py
@@ -4,6 +4,7 @@ from pygithub3.requests.base import Request, ValidationError
from pygithub3.resources.orgs import Team
from pygithub3.resources.repos import Repo, Tag, Branch
from pygithub3.resources.users import User
+from pygithub3.resources.issues import Label, Milestone
class List(Request):