Skip to content

Commit

Permalink
Repository.get_readme and Repository.get_contents (issue #65)
Browse files Browse the repository at this point in the history
  • Loading branch information
jacquev6 committed Sep 8, 2012
1 parent 7a19732 commit f963e6a
Show file tree
Hide file tree
Showing 11 changed files with 360 additions and 2 deletions.
Expand Up @@ -309,6 +309,18 @@
{ "name": "total", "type": "integer" } { "name": "total", "type": "integer" }
] ]
}, },
{
"name": "ContentFile",
"attributes": [
{ "name": "type", "type": "string" },
{ "name": "encoding", "type": "string" },
{ "name": "size", "type": "integer" },
{ "name": "name", "type": "string" },
{ "name": "path", "type": "string" },
{ "name": "content", "type": "string" },
{ "name": "sha", "type": "string" }
]
},
{ {
"name": "File", "name": "File",
"attributes": [ "attributes": [
Expand Down Expand Up @@ -1824,6 +1836,34 @@
] ]
} }
}, },
{
"name": [ "get", "readme" ],
"type": "ContentFile",
"group": "contents",
"request": {
"verb": "GET",
"url": [
{ "type": "attribute", "value": [ "url" ] },
{ "type": "constant", "value": "/readme" }
]
}
},
{
"name": [ "get", "contents" ],
"type": "ContentFile",
"group": "contents",
"mandatoryParameters": [
{ "name": "path", "type": "string" }
],
"request": {
"verb": "GET",
"url": [
{ "type": "attribute", "value": [ "url" ] },
{ "type": "constant", "value": "/contents" },
{ "type": "argument", "value": [ "path" ] }
]
}
},
{ {
"name": [ "compare" ], "name": [ "compare" ],
"type": "Comparison", "type": "Comparison",
Expand Down
138 changes: 138 additions & 0 deletions codegen/JsonDescriptionOfGithubApiV3/description.normalized.json
Expand Up @@ -2397,6 +2397,69 @@
"name": "Comparison", "name": "Comparison",
"methods": [] "methods": []
}, },
{
"attributes": [
{
"type": {
"simple": true,
"cardinality": "scalar",
"name": "string"
},
"name": "content"
},
{
"type": {
"simple": true,
"cardinality": "scalar",
"name": "string"
},
"name": "encoding"
},
{
"type": {
"simple": true,
"cardinality": "scalar",
"name": "string"
},
"name": "name"
},
{
"type": {
"simple": true,
"cardinality": "scalar",
"name": "string"
},
"name": "path"
},
{
"type": {
"simple": true,
"cardinality": "scalar",
"name": "string"
},
"name": "sha"
},
{
"type": {
"simple": true,
"cardinality": "scalar",
"name": "integer"
},
"name": "size"
},
{
"type": {
"simple": true,
"cardinality": "scalar",
"name": "string"
},
"name": "type"
}
],
"isCompletable": false,
"name": "ContentFile",
"methods": []
},
{ {
"attributes": [ "attributes": [
{ {
Expand Down Expand Up @@ -10696,6 +10759,81 @@
"name": "integer" "name": "integer"
} }
}, },
{
"group": "contents",
"name": [
"get",
"readme"
],
"mandatoryParameters": [],
"request": {
"url": [
{
"type": "attribute",
"value": [
"url"
]
},
{
"type": "constant",
"value": "/readme"
}
],
"verb": "GET"
},
"isMutation": false,
"optionalParameters": [],
"type": {
"simple": false,
"cardinality": "scalar",
"name": "ContentFile"
}
},
{
"group": "contents",
"name": [
"get",
"contents"
],
"mandatoryParameters": [
{
"type": {
"simple": true,
"cardinality": "scalar",
"name": "string"
},
"name": "path"
}
],
"request": {
"url": [
{
"type": "attribute",
"value": [
"url"
]
},
{
"type": "constant",
"value": "/contents"
},
{
"type": "argument",
"value": [
"path"
]
}
],
"verb": "GET"
},
"isMutation": false,
"optionalParameters": [],
"type": {
"simple": false,
"cardinality": "scalar",
"name": "ContentFile"
}
},
{ {
"group": "Comparison", "group": "Comparison",
"name": [ "name": [
Expand Down
4 changes: 2 additions & 2 deletions doc/ReferenceOfApis.md
Expand Up @@ -192,7 +192,7 @@ API `/repos/:user/:repo/compare/:base...:head`


API `/repos/:user/:repo/contents/:path` API `/repos/:user/:repo/contents/:path`
======================================= =======================================
* GET: (TODO) * GET: `Repository.get_contents`


API `/repos/:user/:repo/contributors` API `/repos/:user/:repo/contributors`
===================================== =====================================
Expand Down Expand Up @@ -400,7 +400,7 @@ API `/repos/:user/:repo/pulls/comments/:number`


API `/repos/:user/:repo/readme` API `/repos/:user/:repo/readme`
=============================== ===============================
* GET: (TODO) * GET: `Repository.get_readme`


API `/repos/:user/:repo/stargazers` API `/repos/:user/:repo/stargazers`
=================================== ===================================
Expand Down
19 changes: 19 additions & 0 deletions doc/ReferenceOfClasses.md
Expand Up @@ -330,6 +330,19 @@ Attributes
* `total_commits`: integer * `total_commits`: integer
* `url`: string * `url`: string


Class `ContentFile`
===================

Attributes
----------
* `content`: string
* `encoding`: string
* `name`: string
* `path`: string
* `sha`: string
* `size`: integer
* `type`: string

Class `Download` Class `Download`
================ ================


Expand Down Expand Up @@ -1145,6 +1158,12 @@ Commits
* `sha`: string * `sha`: string
* `path`: string * `path`: string


Contents
--------
* `get_readme()`: `ContentFile`
* `get_contents( path )`: `ContentFile`
* `path`: string

Contributors Contributors
------------ ------------
* `get_contributors()`: iterator of `NamedUser` * `get_contributors()`: iterator of `NamedUser`
Expand Down
78 changes: 78 additions & 0 deletions github/ContentFile.py
@@ -0,0 +1,78 @@
# WARNING: this file is generated automaticaly.
# Do not modify it manually, your work would be lost.

# Copyright 2012 Vincent Jacques
# vincent@vincent-jacques.net

# This file is part of PyGithub. http://vincent-jacques.net/PyGithub

# PyGithub is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

# You should have received a copy of the GNU Lesser General Public License along with PyGithub. If not, see <http://www.gnu.org/licenses/>.

import GithubObject

class ContentFile( GithubObject.BasicGithubObject ):
@property
def content( self ):
return self._NoneIfNotSet( self._content )

@property
def encoding( self ):
return self._NoneIfNotSet( self._encoding )

@property
def name( self ):
return self._NoneIfNotSet( self._name )

@property
def path( self ):
return self._NoneIfNotSet( self._path )

@property
def sha( self ):
return self._NoneIfNotSet( self._sha )

@property
def size( self ):
return self._NoneIfNotSet( self._size )

@property
def type( self ):
return self._NoneIfNotSet( self._type )

def _initAttributes( self ):
self._content = GithubObject.NotSet
self._encoding = GithubObject.NotSet
self._name = GithubObject.NotSet
self._path = GithubObject.NotSet
self._sha = GithubObject.NotSet
self._size = GithubObject.NotSet
self._type = GithubObject.NotSet

def _useAttributes( self, attributes ):
if "content" in attributes: # pragma no branch
assert attributes[ "content" ] is None or isinstance( attributes[ "content" ], ( str, unicode ) ), attributes[ "content" ]
self._content = attributes[ "content" ]
if "encoding" in attributes: # pragma no branch
assert attributes[ "encoding" ] is None or isinstance( attributes[ "encoding" ], ( str, unicode ) ), attributes[ "encoding" ]
self._encoding = attributes[ "encoding" ]
if "name" in attributes: # pragma no branch
assert attributes[ "name" ] is None or isinstance( attributes[ "name" ], ( str, unicode ) ), attributes[ "name" ]
self._name = attributes[ "name" ]
if "path" in attributes: # pragma no branch
assert attributes[ "path" ] is None or isinstance( attributes[ "path" ], ( str, unicode ) ), attributes[ "path" ]
self._path = attributes[ "path" ]
if "sha" in attributes: # pragma no branch
assert attributes[ "sha" ] is None or isinstance( attributes[ "sha" ], ( str, unicode ) ), attributes[ "sha" ]
self._sha = attributes[ "sha" ]
if "size" in attributes: # pragma no branch
assert attributes[ "size" ] is None or isinstance( attributes[ "size" ], int ), attributes[ "size" ]
self._size = attributes[ "size" ]
if "type" in attributes: # pragma no branch
assert attributes[ "type" ] is None or isinstance( attributes[ "type" ], ( str, unicode ) ), attributes[ "type" ]
self._type = attributes[ "type" ]
20 changes: 20 additions & 0 deletions github/Repository.py
Expand Up @@ -22,6 +22,7 @@


import Branch import Branch
import IssueEvent import IssueEvent
import ContentFile
import Label import Label
import InputGitAuthor import InputGitAuthor
import GitBlob import GitBlob
Expand Down Expand Up @@ -594,6 +595,16 @@ def get_commits( self, sha = GithubObject.NotSet, path = GithubObject.NotSet ):
data data
) )


def get_contents( self, path ):
assert isinstance( path, ( str, unicode ) ), path
headers, data = self._requester.requestAndCheck(
"GET",
self.url + "/contents" + path,
None,
None
)
return ContentFile.ContentFile( self._requester, data, completed = True )

def get_contributors( self ): def get_contributors( self ):
headers, data = self._requester.requestAndCheck( headers, data = self._requester.requestAndCheck(
"GET", "GET",
Expand Down Expand Up @@ -964,6 +975,15 @@ def get_pulls( self, state = GithubObject.NotSet ):
data data
) )


def get_readme( self ):
headers, data = self._requester.requestAndCheck(
"GET",
self.url + "/readme",
None,
None
)
return ContentFile.ContentFile( self._requester, data, completed = True )

def get_stargazers( self ): def get_stargazers( self ):
headers, data = self._requester.requestAndCheck( headers, data = self._requester.requestAndCheck(
"GET", "GET",
Expand Down

0 comments on commit f963e6a

Please sign in to comment.