Mercurial > repos > bcclaywell > argo_navis
comparison venv/lib/python2.7/site-packages/github/MainClass.py @ 0:d67268158946 draft
planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
author | bcclaywell |
---|---|
date | Mon, 12 Oct 2015 17:43:33 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:d67268158946 |
---|---|
1 # -*- coding: utf-8 -*- | |
2 | |
3 # ########################## Copyrights and license ############################ | |
4 # # | |
5 # Copyright 2013 AKFish <akfish@gmail.com> # | |
6 # Copyright 2013 Ed Jackson <ed.jackson@gmail.com> # | |
7 # Copyright 2013 Jonathan J Hunt <hunt@braincorporation.com> # | |
8 # Copyright 2013 Peter Golm <golm.peter@gmail.com> # | |
9 # Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net> # | |
10 # # | |
11 # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # | |
12 # # | |
13 # PyGithub is free software: you can redistribute it and/or modify it under # | |
14 # the terms of the GNU Lesser General Public License as published by the Free # | |
15 # Software Foundation, either version 3 of the License, or (at your option) # | |
16 # any later version. # | |
17 # # | |
18 # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # | |
19 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # | |
20 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # | |
21 # details. # | |
22 # # | |
23 # You should have received a copy of the GNU Lesser General Public License # | |
24 # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # | |
25 # # | |
26 # ############################################################################## | |
27 | |
28 import urllib | |
29 import pickle | |
30 | |
31 from Requester import Requester | |
32 import AuthenticatedUser | |
33 import NamedUser | |
34 import Organization | |
35 import Gist | |
36 import github.PaginatedList | |
37 import Repository | |
38 import Legacy | |
39 import github.GithubObject | |
40 import HookDescription | |
41 import GitignoreTemplate | |
42 import Status | |
43 import StatusMessage | |
44 import RateLimit | |
45 | |
46 | |
47 DEFAULT_BASE_URL = "https://api.github.com" | |
48 DEFAULT_TIMEOUT = 10 | |
49 DEFAULT_PER_PAGE = 30 | |
50 | |
51 | |
52 class Github(object): | |
53 """ | |
54 This is the main class you instanciate to access the Github API v3. Optional parameters allow different authentication methods. | |
55 """ | |
56 | |
57 def __init__(self, login_or_token=None, password=None, base_url=DEFAULT_BASE_URL, timeout=DEFAULT_TIMEOUT, client_id=None, client_secret=None, user_agent='PyGithub/Python', per_page=DEFAULT_PER_PAGE): | |
58 """ | |
59 :param login_or_token: string | |
60 :param password: string | |
61 :param base_url: string | |
62 :param timeout: integer | |
63 :param client_id: string | |
64 :param client_secret: string | |
65 :param user_agent: string | |
66 :param per_page: int | |
67 """ | |
68 | |
69 assert login_or_token is None or isinstance(login_or_token, (str, unicode)), login_or_token | |
70 assert password is None or isinstance(password, (str, unicode)), password | |
71 assert isinstance(base_url, (str, unicode)), base_url | |
72 assert isinstance(timeout, (int, long)), timeout | |
73 assert client_id is None or isinstance(client_id, (str, unicode)), client_id | |
74 assert client_secret is None or isinstance(client_secret, (str, unicode)), client_secret | |
75 assert user_agent is None or isinstance(user_agent, (str, unicode)), user_agent | |
76 self.__requester = Requester(login_or_token, password, base_url, timeout, client_id, client_secret, user_agent, per_page) | |
77 | |
78 def __get_FIX_REPO_GET_GIT_REF(self): | |
79 """ | |
80 :type: bool | |
81 """ | |
82 return self.__requester.FIX_REPO_GET_GIT_REF | |
83 | |
84 def __set_FIX_REPO_GET_GIT_REF(self, value): | |
85 self.__requester.FIX_REPO_GET_GIT_REF = value | |
86 | |
87 FIX_REPO_GET_GIT_REF = property(__get_FIX_REPO_GET_GIT_REF, __set_FIX_REPO_GET_GIT_REF) | |
88 | |
89 def __get_per_page(self): | |
90 """ | |
91 :type: int | |
92 """ | |
93 return self.__requester.per_page | |
94 | |
95 def __set_per_page(self, value): | |
96 self.__requester.per_page = value | |
97 | |
98 # v2: Remove this property? Why should it be necessary to read/modify it after construction | |
99 per_page = property(__get_per_page, __set_per_page) | |
100 | |
101 # v2: Provide a unified way to access values of headers of last response | |
102 # v2: (and add/keep ad hoc properties for specific useful headers like rate limiting, oauth scopes, etc.) | |
103 # v2: Return an instance of a class: using a tuple did not allow to add a field "resettime" | |
104 @property | |
105 def rate_limiting(self): | |
106 """ | |
107 First value is requests remaining, second value is request limit. | |
108 :type: (int, int) | |
109 """ | |
110 remaining, limit = self.__requester.rate_limiting | |
111 if limit < 0: | |
112 self.get_rate_limit() | |
113 return self.__requester.rate_limiting | |
114 | |
115 @property | |
116 def rate_limiting_resettime(self): | |
117 """ | |
118 Unix timestamp indicating when rate limiting will reset. | |
119 :type: int | |
120 """ | |
121 if self.__requester.rate_limiting_resettime == 0: | |
122 self.get_rate_limit() | |
123 return self.__requester.rate_limiting_resettime | |
124 | |
125 def get_rate_limit(self): | |
126 """ | |
127 Don't forget you can access the rate limit returned in headers of last Github API v3 response, by :attr:`github.MainClass.Github.rate_limiting` and :attr:`github.MainClass.Github.rate_limiting_resettime`. | |
128 | |
129 :calls: `GET /rate_limit <http://developer.github.com/v3/rate_limit>`_ | |
130 :rtype: :class:`github.RateLimit.RateLimit` | |
131 """ | |
132 headers, attributes = self.__requester.requestJsonAndCheck( | |
133 'GET', | |
134 '/rate_limit' | |
135 ) | |
136 return RateLimit.RateLimit(self.__requester, headers, attributes, True) | |
137 | |
138 @property | |
139 def oauth_scopes(self): | |
140 """ | |
141 :type: list of string | |
142 """ | |
143 return self.__requester.oauth_scopes | |
144 | |
145 def get_user(self, login=github.GithubObject.NotSet): | |
146 """ | |
147 :calls: `GET /users/:user <http://developer.github.com/v3/users>`_ or `GET /user <http://developer.github.com/v3/users>`_ | |
148 :param login: string | |
149 :rtype: :class:`github.NamedUser.NamedUser` | |
150 """ | |
151 assert login is github.GithubObject.NotSet or isinstance(login, (str, unicode)), login | |
152 if login is github.GithubObject.NotSet: | |
153 return AuthenticatedUser.AuthenticatedUser(self.__requester, {}, {"url": "/user"}, completed=False) | |
154 else: | |
155 headers, data = self.__requester.requestJsonAndCheck( | |
156 "GET", | |
157 "/users/" + login | |
158 ) | |
159 return github.NamedUser.NamedUser(self.__requester, headers, data, completed=True) | |
160 | |
161 def get_users(self, since=github.GithubObject.NotSet): | |
162 """ | |
163 :calls: `GET /users <http://developer.github.com/v3/users>`_ | |
164 :param since: integer | |
165 :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.NamedUser.NamedUser` | |
166 """ | |
167 assert since is github.GithubObject.NotSet or isinstance(since, (int, long)), since | |
168 url_parameters = dict() | |
169 if since is not github.GithubObject.NotSet: | |
170 url_parameters["since"] = since | |
171 return github.PaginatedList.PaginatedList( | |
172 github.NamedUser.NamedUser, | |
173 self.__requester, | |
174 "/users", | |
175 url_parameters | |
176 ) | |
177 | |
178 def get_organization(self, login): | |
179 """ | |
180 :calls: `GET /orgs/:org <http://developer.github.com/v3/orgs>`_ | |
181 :param login: string | |
182 :rtype: :class:`github.Organization.Organization` | |
183 """ | |
184 assert isinstance(login, (str, unicode)), login | |
185 headers, data = self.__requester.requestJsonAndCheck( | |
186 "GET", | |
187 "/orgs/" + login | |
188 ) | |
189 return github.Organization.Organization(self.__requester, headers, data, completed=True) | |
190 | |
191 def get_repo(self, full_name_or_id): | |
192 """ | |
193 :calls: `GET /repos/:owner/:repo <http://developer.github.com/v3/repos>`_ or `GET /repositories/:id <http://developer.github.com/v3/repos>`_ | |
194 :rtype: :class:`github.Repository.Repository` | |
195 """ | |
196 assert isinstance(full_name_or_id, (str, unicode, int)), full_name_or_id | |
197 url_base = "/repositories/" if isinstance(full_name_or_id, int) else "/repos/" | |
198 headers, data = self.__requester.requestJsonAndCheck( | |
199 "GET", | |
200 "%s%s" % (url_base, full_name_or_id) | |
201 ) | |
202 return Repository.Repository(self.__requester, headers, data, completed=True) | |
203 | |
204 def get_repos(self, since=github.GithubObject.NotSet): | |
205 """ | |
206 :calls: `GET /repositories <http://developer.github.com/v3/repos/#list-all-public-repositories>`_ | |
207 :param since: integer | |
208 :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Repository.Repository` | |
209 """ | |
210 assert since is github.GithubObject.NotSet or isinstance(since, (int, long)), since | |
211 url_parameters = dict() | |
212 if since is not github.GithubObject.NotSet: | |
213 url_parameters["since"] = since | |
214 return github.PaginatedList.PaginatedList( | |
215 github.Repository.Repository, | |
216 self.__requester, | |
217 "/repositories", | |
218 url_parameters | |
219 ) | |
220 | |
221 def get_gist(self, id): | |
222 """ | |
223 :calls: `GET /gists/:id <http://developer.github.com/v3/gists>`_ | |
224 :param id: string | |
225 :rtype: :class:`github.Gist.Gist` | |
226 """ | |
227 assert isinstance(id, (str, unicode)), id | |
228 headers, data = self.__requester.requestJsonAndCheck( | |
229 "GET", | |
230 "/gists/" + id | |
231 ) | |
232 return github.Gist.Gist(self.__requester, headers, data, completed=True) | |
233 | |
234 def get_gists(self): | |
235 """ | |
236 :calls: `GET /gists/public <http://developer.github.com/v3/gists>`_ | |
237 :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Gist.Gist` | |
238 """ | |
239 return github.PaginatedList.PaginatedList( | |
240 github.Gist.Gist, | |
241 self.__requester, | |
242 "/gists/public", | |
243 None | |
244 ) | |
245 | |
246 def legacy_search_repos(self, keyword, language=github.GithubObject.NotSet): | |
247 """ | |
248 :calls: `GET /legacy/repos/search/:keyword <http://developer.github.com/v3/search/legacy>`_ | |
249 :param keyword: string | |
250 :param language: string | |
251 :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Repository.Repository` | |
252 """ | |
253 assert isinstance(keyword, (str, unicode)), keyword | |
254 assert language is github.GithubObject.NotSet or isinstance(language, (str, unicode)), language | |
255 args = {} if language is github.GithubObject.NotSet else {"language": language} | |
256 return Legacy.PaginatedList( | |
257 "/legacy/repos/search/" + urllib.quote_plus(keyword, safe='/%:><'), | |
258 args, | |
259 self.__requester, | |
260 "repositories", | |
261 Legacy.convertRepo, | |
262 github.Repository.Repository, | |
263 ) | |
264 | |
265 def legacy_search_users(self, keyword): | |
266 """ | |
267 :calls: `GET /legacy/user/search/:keyword <http://developer.github.com/v3/search/legacy>`_ | |
268 :param keyword: string | |
269 :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.NamedUser.NamedUser` | |
270 """ | |
271 assert isinstance(keyword, (str, unicode)), keyword | |
272 return Legacy.PaginatedList( | |
273 "/legacy/user/search/" + urllib.quote_plus(keyword, safe='/%:><'), | |
274 {}, | |
275 self.__requester, | |
276 "users", | |
277 Legacy.convertUser, | |
278 github.NamedUser.NamedUser, | |
279 ) | |
280 | |
281 def legacy_search_user_by_email(self, email): | |
282 """ | |
283 :calls: `GET /legacy/user/email/:email <http://developer.github.com/v3/search/legacy>`_ | |
284 :param email: string | |
285 :rtype: :class:`github.NamedUser.NamedUser` | |
286 """ | |
287 assert isinstance(email, (str, unicode)), email | |
288 headers, data = self.__requester.requestJsonAndCheck( | |
289 "GET", | |
290 "/legacy/user/email/" + email | |
291 ) | |
292 return github.NamedUser.NamedUser(self.__requester, headers, Legacy.convertUser(data["user"]), completed=False) | |
293 | |
294 def search_repositories(self, query, sort=github.GithubObject.NotSet, order=github.GithubObject.NotSet, **qualifiers): | |
295 """ | |
296 :calls: `GET /search/repositories <http://developer.github.com/v3/search>`_ | |
297 :param query: string | |
298 :param sort: string ('stars', 'forks', 'updated') | |
299 :param order: string ('asc', 'desc') | |
300 :param qualifiers: keyword dict query qualifiers | |
301 :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Repository.Repository` | |
302 """ | |
303 assert isinstance(query, (str, unicode)), query | |
304 url_parameters = dict() | |
305 if sort is not github.GithubObject.NotSet: # pragma no branch (Should be covered) | |
306 assert sort in ('stars', 'forks', 'updated'), sort | |
307 url_parameters["sort"] = sort | |
308 if order is not github.GithubObject.NotSet: # pragma no branch (Should be covered) | |
309 assert order in ('asc', 'desc'), order | |
310 url_parameters["order"] = order | |
311 | |
312 query_chunks = [] | |
313 if query: # pragma no branch (Should be covered) | |
314 query_chunks.append(query) | |
315 | |
316 for qualifier, value in qualifiers.items(): | |
317 query_chunks.append("%s:%s" % (qualifier, value)) | |
318 | |
319 url_parameters["q"] = ' '.join(query_chunks) | |
320 assert url_parameters["q"], "need at least one qualifier" | |
321 | |
322 return github.PaginatedList.PaginatedList( | |
323 github.Repository.Repository, | |
324 self.__requester, | |
325 "/search/repositories", | |
326 url_parameters | |
327 ) | |
328 | |
329 def search_users(self, query, sort=github.GithubObject.NotSet, order=github.GithubObject.NotSet, **qualifiers): | |
330 """ | |
331 :calls: `GET /search/users <http://developer.github.com/v3/search>`_ | |
332 :param query: string | |
333 :param sort: string ('followers', 'repositories', 'joined') | |
334 :param order: string ('asc', 'desc') | |
335 :param qualifiers: keyword dict query qualifiers | |
336 :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.NamedUser.NamedUser` | |
337 """ | |
338 assert isinstance(query, (str, unicode)), query | |
339 url_parameters = dict() | |
340 if sort is not github.GithubObject.NotSet: | |
341 assert sort in ('followers', 'repositories', 'joined'), sort | |
342 url_parameters["sort"] = sort | |
343 if order is not github.GithubObject.NotSet: | |
344 assert order in ('asc', 'desc'), order | |
345 url_parameters["order"] = order | |
346 | |
347 query_chunks = [] | |
348 if query: | |
349 query_chunks.append(query) | |
350 | |
351 for qualifier, value in qualifiers.items(): | |
352 query_chunks.append("%s:%s" % (qualifier, value)) | |
353 | |
354 url_parameters["q"] = ' '.join(query_chunks) | |
355 assert url_parameters["q"], "need at least one qualifier" | |
356 | |
357 return github.PaginatedList.PaginatedList( | |
358 github.NamedUser.NamedUser, | |
359 self.__requester, | |
360 "/search/users", | |
361 url_parameters | |
362 ) | |
363 | |
364 def search_issues(self, query, sort=github.GithubObject.NotSet, order=github.GithubObject.NotSet, **qualifiers): | |
365 """ | |
366 :calls: `GET /search/issues <http://developer.github.com/v3/search>`_ | |
367 :param query: string | |
368 :param sort: string ('comments', 'created', 'updated') | |
369 :param order: string ('asc', 'desc') | |
370 :param qualifiers: keyword dict query qualifiers | |
371 :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Issue.Issue` | |
372 """ | |
373 assert isinstance(query, (str, unicode)), query | |
374 url_parameters = dict() | |
375 if sort is not github.GithubObject.NotSet: | |
376 assert sort in ('comments', 'created', 'updated'), sort | |
377 url_parameters["sort"] = sort | |
378 if order is not github.GithubObject.NotSet: | |
379 assert order in ('asc', 'desc'), order | |
380 url_parameters["order"] = order | |
381 | |
382 query_chunks = [] | |
383 if query: # pragma no branch (Should be covered) | |
384 query_chunks.append(query) | |
385 | |
386 for qualifier, value in qualifiers.items(): | |
387 query_chunks.append("%s:%s" % (qualifier, value)) | |
388 | |
389 url_parameters["q"] = ' '.join(query_chunks) | |
390 assert url_parameters["q"], "need at least one qualifier" | |
391 | |
392 return github.PaginatedList.PaginatedList( | |
393 github.Issue.Issue, | |
394 self.__requester, | |
395 "/search/issues", | |
396 url_parameters | |
397 ) | |
398 | |
399 def search_code(self, query, sort=github.GithubObject.NotSet, order=github.GithubObject.NotSet, **qualifiers): | |
400 """ | |
401 :calls: `GET /search/code <http://developer.github.com/v3/search>`_ | |
402 :param query: string | |
403 :param sort: string ('indexed') | |
404 :param order: string ('asc', 'desc') | |
405 :param qualifiers: keyword dict query qualifiers | |
406 :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.ContentFile.ContentFile` | |
407 """ | |
408 assert isinstance(query, (str, unicode)), query | |
409 url_parameters = dict() | |
410 if sort is not github.GithubObject.NotSet: # pragma no branch (Should be covered) | |
411 assert sort in ('indexed',), sort | |
412 url_parameters["sort"] = sort | |
413 if order is not github.GithubObject.NotSet: # pragma no branch (Should be covered) | |
414 assert order in ('asc', 'desc'), order | |
415 url_parameters["order"] = order | |
416 | |
417 query_chunks = [] | |
418 if query: # pragma no branch (Should be covered) | |
419 query_chunks.append(query) | |
420 | |
421 for qualifier, value in qualifiers.items(): | |
422 query_chunks.append("%s:%s" % (qualifier, value)) | |
423 | |
424 url_parameters["q"] = ' '.join(query_chunks) | |
425 assert url_parameters["q"], "need at least one qualifier" | |
426 | |
427 return github.PaginatedList.PaginatedList( | |
428 github.ContentFile.ContentFile, | |
429 self.__requester, | |
430 "/search/code", | |
431 url_parameters | |
432 ) | |
433 | |
434 def render_markdown(self, text, context=github.GithubObject.NotSet): | |
435 """ | |
436 :calls: `POST /markdown <http://developer.github.com/v3/markdown>`_ | |
437 :param text: string | |
438 :param context: :class:`github.Repository.Repository` | |
439 :rtype: string | |
440 """ | |
441 assert isinstance(text, (str, unicode)), text | |
442 assert context is github.GithubObject.NotSet or isinstance(context, github.Repository.Repository), context | |
443 post_parameters = { | |
444 "text": text | |
445 } | |
446 if context is not github.GithubObject.NotSet: | |
447 post_parameters["mode"] = "gfm" | |
448 post_parameters["context"] = context._identity | |
449 status, headers, data = self.__requester.requestJson( | |
450 "POST", | |
451 "/markdown", | |
452 input=post_parameters | |
453 ) | |
454 return data | |
455 | |
456 def get_hook(self, name): | |
457 """ | |
458 :calls: `GET /hooks/:name <http://developer.github.com/v3/repos/hooks/>`_ | |
459 :param name: string | |
460 :rtype: :class:`github.HookDescription.HookDescription` | |
461 """ | |
462 assert isinstance(name, (str, unicode)), name | |
463 headers, attributes = self.__requester.requestJsonAndCheck( | |
464 "GET", | |
465 "/hooks/" + name | |
466 ) | |
467 return HookDescription.HookDescription(self.__requester, headers, attributes, completed=True) | |
468 | |
469 def get_hooks(self): | |
470 """ | |
471 :calls: `GET /hooks <http://developer.github.com/v3/repos/hooks/>`_ | |
472 :rtype: list of :class:`github.HookDescription.HookDescription` | |
473 """ | |
474 headers, data = self.__requester.requestJsonAndCheck( | |
475 "GET", | |
476 "/hooks" | |
477 ) | |
478 return [HookDescription.HookDescription(self.__requester, headers, attributes, completed=True) for attributes in data] | |
479 | |
480 def get_gitignore_templates(self): | |
481 """ | |
482 :calls: `GET /gitignore/templates <http://developer.github.com/v3/gitignore>`_ | |
483 :rtype: list of string | |
484 """ | |
485 headers, data = self.__requester.requestJsonAndCheck( | |
486 "GET", | |
487 "/gitignore/templates" | |
488 ) | |
489 return data | |
490 | |
491 def get_gitignore_template(self, name): | |
492 """ | |
493 :calls: `GET /gitignore/templates/:name <http://developer.github.com/v3/gitignore>`_ | |
494 :rtype: :class:`github.GitignoreTemplate.GitignoreTemplate` | |
495 """ | |
496 assert isinstance(name, (str, unicode)), name | |
497 headers, attributes = self.__requester.requestJsonAndCheck( | |
498 "GET", | |
499 "/gitignore/templates/" + name | |
500 ) | |
501 return GitignoreTemplate.GitignoreTemplate(self.__requester, headers, attributes, completed=True) | |
502 | |
503 def get_emojis(self): | |
504 """ | |
505 :calls: `GET /emojis <http://developer.github.com/v3/emojis/>`_ | |
506 :rtype: dictionary of type => url for emoji` | |
507 """ | |
508 headers, attributes = self.__requester.requestJsonAndCheck( | |
509 "GET", | |
510 "/emojis" | |
511 ) | |
512 return attributes | |
513 | |
514 def create_from_raw_data(self, klass, raw_data, headers={}): | |
515 """ | |
516 Creates an object from raw_data previously obtained by :attr:`github.GithubObject.GithubObject.raw_data`, | |
517 and optionaly headers previously obtained by :attr:`github.GithubObject.GithubObject.raw_headers`. | |
518 | |
519 :param klass: the class of the object to create | |
520 :param raw_data: dict | |
521 :param headers: dict | |
522 :rtype: instance of class ``klass`` | |
523 """ | |
524 return klass(self.__requester, headers, raw_data, completed=True) | |
525 | |
526 def dump(self, obj, file, protocol=0): | |
527 """ | |
528 Dumps (pickles) a PyGithub object to a file-like object. | |
529 Some effort is made to not pickle sensitive informations like the Github credentials used in the :class:`Github` instance. | |
530 But NO EFFORT is made to remove sensitive information from the object's attributes. | |
531 | |
532 :param obj: the object to pickle | |
533 :param file: the file-like object to pickle to | |
534 :param protocol: the `pickling protocol <http://docs.python.org/2.7/library/pickle.html#data-stream-format>`_ | |
535 """ | |
536 pickle.dump((obj.__class__, obj.raw_data, obj.raw_headers), file, protocol) | |
537 | |
538 def load(self, f): | |
539 """ | |
540 Loads (unpickles) a PyGithub object from a file-like object. | |
541 | |
542 :param f: the file-like object to unpickle from | |
543 :return: the unpickled object | |
544 """ | |
545 return self.create_from_raw_data(*pickle.load(f)) | |
546 | |
547 def get_api_status(self): | |
548 """ | |
549 This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com. | |
550 | |
551 :calls: `GET /api/status.json <https://status.github.com/api>`_ | |
552 :rtype: :class:`github.Status.Status` | |
553 """ | |
554 headers, attributes = self.__requester.requestJsonAndCheck( | |
555 "GET", | |
556 "/api/status.json", | |
557 cnx="status" | |
558 ) | |
559 return Status.Status(self.__requester, headers, attributes, completed=True) | |
560 | |
561 def get_last_api_status_message(self): | |
562 """ | |
563 This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com. | |
564 | |
565 :calls: `GET /api/last-message.json <https://status.github.com/api>`_ | |
566 :rtype: :class:`github.StatusMessage.StatusMessage` | |
567 """ | |
568 headers, attributes = self.__requester.requestJsonAndCheck( | |
569 "GET", | |
570 "/api/last-message.json", | |
571 cnx="status" | |
572 ) | |
573 return StatusMessage.StatusMessage(self.__requester, headers, attributes, completed=True) | |
574 | |
575 def get_api_status_messages(self): | |
576 """ | |
577 This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com. | |
578 | |
579 :calls: `GET /api/messages.json <https://status.github.com/api>`_ | |
580 :rtype: list of :class:`github.StatusMessage.StatusMessage` | |
581 """ | |
582 headers, data = self.__requester.requestJsonAndCheck( | |
583 "GET", | |
584 "/api/messages.json", | |
585 cnx="status" | |
586 ) | |
587 return [StatusMessage.StatusMessage(self.__requester, headers, attributes, completed=True) for attributes in data] |