Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 105 additions & 3 deletions simplegist/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,110 @@
(c) 2013 Varun Malhotra. MIT License
"""

from simplegist import *

__author__ = 'Varun Malhotra'
__version__ = '1.0.1'
__license__ = 'MIT'
__license__ = 'MIT'

import requests
import json

from simplegist.config import USERNAME, API_TOKEN, BASE_URL, GIST_URL
from simplegist.mygist import Mygist
from simplegist.do import Do
from simplegist.comments import Comments

class Simplegist:
"""
Gist Base Class

This class is to used to instantiate the wrapper and authenticate.

Authenticate with providing Github Username and API-Token to use
it for all future API requests
"""

def __init__(self, **args):
# Save our username and api_token (If given) for later use.
if 'username' in args:
self.username = args['username']
else:
if not USERNAME:
raise Exception('Please provide your Github username.')
else:
self.username = USERNAME

if 'api_token' in args:
self.api_token = args['api_token']
else:
if not API_TOKEN:
raise Exception('Please provide your Github API Token.')
else:
self.api_token = API_TOKEN


# Set header information in every request.
self.header = { 'X-Github-Username': self.username,
'Content-Type': 'application/json',
'Authorization': 'token %s' %self.api_token
}

def profile(self):
return Mygist(self)

def search(self, user):
return Mygist(self,user=user)

def do(self):
return Do(self)

def comments(self):
return Comments(self)

def create(self, **args):
if 'description' in args:
self.description = args['description']
else:
self.description = ''

if 'name' in args:
self.gist_name = args['name']
else:
self.gist_name = ''

if 'public' in args:
self.public = args['public']
else:
self.public = True

if 'content' in args:
self.content = args['content']
else:
raise Exception('Gist content can\'t be empty')

url = '/gists'

data = {"description": self.description,
"public": "true" if self.public else "false",
"files": {
self.gist_name: {
"content": self.content
}
}
}

r = requests.post(
'%s%s' % (BASE_URL, url),
data=json.dumps(data),
headers=self.header
)
if (r.status_code == 201):
response = {
'Gist-Link': '%s/%s/%s' %(GIST_URL,self.username,r.json()['id']),
'Clone-Link': '%s/%s.git' %(GIST_URL,r.json()['id']),
'Embed-Script': '<script src="%s/%s/%s.js"</script>' %(GIST_URL,self.username,r.json()['id']),
'id': r.json()['id'],
'created_at': r.json()['created_at'],

}
return response
raise Exception('Gist not created: server response was [%s] %s' % (r.status_code, r.text))
6 changes: 3 additions & 3 deletions simplegist/comments.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import json
import requests
from config import BASE_URL, GIST_URL
from simplegist.config import BASE_URL, GIST_URL

class Comments:
def __init__(self, gist):
Expand All @@ -21,7 +21,7 @@ def getMyID(self,gist_name):
limit = len(r.json())

for g,no in zip(r_text, range(0,limit)):
for ka,va in r.json()[no]['files'].iteritems():
for ka,va in r.json()[no]['files'].items():
if str(va['filename']) == str(gist_name):
return r.json()[no]['id']
return 0
Expand Down Expand Up @@ -226,4 +226,4 @@ def edit(self, **args):
}


raise Exception('Comment not edited')
raise Exception('Comment not edited')
6 changes: 3 additions & 3 deletions simplegist/do.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import json
import requests
from config import BASE_URL, GIST_URL
from simplegist.config import BASE_URL, GIST_URL

class Do:
def __init__(self, gist):
Expand All @@ -20,7 +20,7 @@ def getMyID(self,gist_name):
limit = len(r.json())

for g,no in zip(r_text, range(0,limit)):
for ka,va in r.json()[no]['files'].iteritems():
for ka,va in r.json()[no]['files'].items():
if str(va['filename']) == str(gist_name):
return r.json()[no]['id']
return 0
Expand Down Expand Up @@ -127,4 +127,4 @@ def checkifstar(self, **args):
'starred': 'False'
}

return response
return response
22 changes: 11 additions & 11 deletions simplegist/mygist.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import json
import requests
from config import BASE_URL, GIST_URL
from simplegist.config import BASE_URL, GIST_URL

class Mygist:
def __init__(self, gist, **args):
Expand All @@ -27,7 +27,7 @@ def listall(self):
limit = len(r.json())
if (r.status_code == 200 ):
for g,no in zip(r_text, range(0,limit)):
for key,value in r.json()[no]['files'].iteritems():
for key,value in r.json()[no]['files'].items():
file_name.append(value['filename'])
return file_name

Expand All @@ -51,7 +51,7 @@ def list(self, offset):
limit = offset if (offset <= len(r.json()) ) else len(r.json())

for g,no in zip(r_text, range(0,limit)):
for key,value in r.json()[no]['files'].iteritems():
for key,value in r.json()[no]['files'].items():
file_name.append(value['filename'])
return file_name
raise Exception('Username not found')
Expand All @@ -70,7 +70,7 @@ def getMyID(self,gist_name):
limit = len(r.json())

for g,no in zip(r_text, range(0,limit)):
for ka,va in r.json()[no]['files'].iteritems():
for ka,va in r.json()[no]['files'].items():
if str(va['filename']) == str(gist_name):
return r.json()[no]['id']
return 0
Expand Down Expand Up @@ -102,7 +102,7 @@ def content(self, **args):
if self.gist_name!='':
content = r.json()['files'][self.gist_name]['content']
else:
for key,value in r.json()['files'].iteritems():
for key,value in r.json()['files'].items():
content = r.json()['files'][value['filename']]['content']
return content

Expand All @@ -122,7 +122,7 @@ def getgist(self, **args):
)
if (r.status_code == 200):

for key,value in r.json()['files'].iteritems():
for key,value in r.json()['files'].items():
content = value['filename']
return content

Expand Down Expand Up @@ -153,7 +153,7 @@ def edit(self, **args):
raise Exception('Gist Name/ID must be provided')

if 'content' in args:
self.content = args['content']
content = args['content']
else:
raise Exception('Gist content can\'t be empty')

Expand All @@ -162,15 +162,15 @@ def edit(self, **args):
data = {"description": self.description,
"files": {
self.gist_name: {
"content": self.content
"content": content
}
}
}
else:
data = {"description": self.description,
"files": {
self.gist_name: {
"content": self.content
"content": content
}
}
}
Expand All @@ -185,7 +185,7 @@ def edit(self, **args):
if (r.status_code == 200):
r_text = json.loads(r.text)
response = {
'updated_content': self.content,
'updated_content': content,
'created_at': r.json()['created_at'],
'comments':r.json()['comments']
}
Expand Down Expand Up @@ -272,4 +272,4 @@ def links(self,**args):
}
return content

raise Exception('No such gist found')
raise Exception('No such gist found')
105 changes: 0 additions & 105 deletions simplegist/simplegist.py

This file was deleted.