Skip to content

Commit 15d5d95

Browse files
author
Jason Kraus
committed
added authorizations endpoint
1 parent 40ea3e5 commit 15d5d95

3 files changed

Lines changed: 32 additions & 150 deletions

File tree

.gitignore

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,6 @@
1-
toy.py
1+
toy.py
2+
*.py[cdo]
3+
*~
4+
bin/
5+
include/
6+
lib/

github3/api.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def login(self, username, password):
3838
"""Logs user into Github with given credentials."""
3939

4040
# Attach auth to session.
41-
self._s.auth = (username.password)
41+
self._s.auth = (username, password)
4242

4343
return True
4444

@@ -113,6 +113,10 @@ def __init__(self):
113113
def __repr__(self):
114114
return '<github-client at 0x%x>' % (id(self))
115115

116+
@property
117+
def authorizations(self):
118+
return self._get_resources(('authorizations'), Authorization)
119+
116120
# @property
117121
# def addons(self):
118122
# return self._get_resources(('addons'), Addon)
@@ -127,4 +131,4 @@ def __repr__(self):
127131

128132

129133
class ResponseError(ValueError):
130-
"""The API Response was unexpected."""
134+
"""The API Response was unexpected."""

github3/models.py

Lines changed: 20 additions & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -90,174 +90,47 @@ def new_from_dict(cls, d, h=None, **kwargs):
9090
return d
9191

9292

93-
class App(BaseResource):
94-
"""Heroku App."""
93+
class Authorization(BaseResource):
94+
"""Github Authorization."""
9595

96-
_strs = ['name', 'create_status', 'stack', 'repo_migrate_status']
97-
_ints = ['id', 'slug_size', 'repo_size', 'dynos', 'workers']
98-
_dates = ['created_at',]
99-
_pks = ['name', 'id']
100-
101-
def __init__(self):
102-
super(App, self).__init__()
96+
_strs = ['url', 'scopes', 'token', 'note', 'note_url']
97+
_ints = ['id']
98+
_dates = ['created_at', 'updated_at']
99+
_pks = ['id']
103100

104101
def __repr__(self):
105-
return "<app '{0}'>".format(self.name)
102+
return "<authorization '{0}'>".format(self.id)
106103

107-
def new(self, name=None, stack='cedar'):
108-
"""Creates a new app."""
104+
def new(self, scopes=None, note=None, note_url=None):
105+
"""Creates a new authorization."""
109106

110107
payload = {}
111108

112-
if name:
113-
payload['app[name]'] = name
109+
if scopes:
110+
payload['scopes'] = scopes
114111

115-
if stack:
116-
payload['app[stack]'] = stack
112+
if note:
113+
payload['note'] = note
114+
115+
if note_url:
116+
payload['note_url'] = note_url
117117

118118
r = self._h._http_resource(
119119
method='POST',
120-
resource=('apps',),
120+
resource=('authorizations',),
121121
data=payload
122122
)
123123

124-
name = json.loads(r.content).get('name')
125-
return self._h.apps.get(name)
126-
127-
@property
128-
def addons(self):
129-
return self._h._get_resources(
130-
resource=('apps', self.name, 'addons'),
131-
obj=Addon, app=self
132-
)
133-
134-
@property
135-
def collaborators(self):
136-
"""The collaborators for this app."""
137-
return self._h._get_resources(
138-
resource=('apps', self.name, 'collaborators'),
139-
obj=Collaborator, app=self
140-
)
141-
142-
@property
143-
def domains(self):
144-
"""The domains for this app."""
145-
return self._h._get_resources(
146-
resource=('apps', self.name, 'domains'),
147-
obj=Domain, app=self
148-
)
149-
150-
@property
151-
def releases(self):
152-
"""The releases for this app."""
153-
return self._h._get_resources(
154-
resource=('apps', self.name, 'releases'),
155-
obj=Release, app=self
156-
)
157-
158-
@property
159-
def processes(self):
160-
"""The proccesses for this app."""
161-
return self._h._get_resources(
162-
resource=('apps', self.name, 'ps'),
163-
obj=Process, app=self, map=ProcessListResource
164-
)
165-
166-
@property
167-
def config(self):
168-
"""The envs for this app."""
169-
170-
return self._h._get_resource(
171-
resource=('apps', self.name, 'config_vars'),
172-
obj=ConfigVars, app=self
173-
)
174-
175-
@property
176-
def info(self):
177-
"""Returns current info for this app."""
178-
179-
return self._h._get_resource(
180-
resource=('apps', self.name),
181-
obj=App,
182-
)
183-
184-
def rollback(self, release):
185-
"""Rolls back the release to the given version."""
186-
r = self._h._http_resource(
187-
method='POST',
188-
resource=('apps', self.name, 'releases'),
189-
data={'rollback': release}
190-
)
191-
return self.releases[-1]
192-
193-
194-
def rename(self, name):
195-
"""Renames app to given name."""
196-
197-
r = self._h._http_resource(
198-
method='PUT',
199-
resource=('apps', self.name),
200-
data={'app[name]': name}
201-
)
202-
return r.ok
203-
204-
def transfer(self, user):
205-
"""Transfers app to given username's account."""
206-
207-
r = self._h._http_resource(
208-
method='PUT',
209-
resource=('apps', self.name),
210-
data={'app[transfer_owner]': user}
211-
)
212-
return r.ok
213-
214-
def maintenance(self, on=True):
215-
"""Toggles maintenance mode."""
216-
217-
r = self._h._http_resource(
218-
method='POST',
219-
resource=('apps', self.name, 'server', 'maintenance'),
220-
data={'maintenance_mode': int(on)}
221-
)
124+
_id = json.loads(r.content).get('id')
125+
return self._h.apps.get(_id)
222126
return r.ok
223127

224128
def destroy(self):
225129
"""Destoys the app. Do be careful."""
226130

227131
r = self._h._http_resource(
228132
method='DELETE',
229-
resource=('apps', self.name)
133+
resource=('authorizations', self.id)
230134
)
231135
return r.ok
232136

233-
def logs(self, num=None, source=None, tail=False):
234-
"""Returns the requested log."""
235-
236-
# Bootstrap payload package.
237-
payload = {'logplex': 'true'}
238-
239-
if num:
240-
payload['num'] = num
241-
242-
if source:
243-
payload['source'] = source
244-
245-
if tail:
246-
payload['tail'] = 1
247-
248-
# Grab the URL of the logplex endpoint.
249-
r = self._h._http_resource(
250-
method='GET',
251-
resource=('apps', self.name, 'logs'),
252-
data=payload
253-
)
254-
255-
# Grab the actual logs.
256-
r = requests.get(r.content)
257-
258-
if not tail:
259-
return r.content
260-
else:
261-
# Return line iterator for tail!
262-
return r.iter_lines()
263-

0 commit comments

Comments
 (0)