payload: {"action":"created","comment":{"url":"https://api.github.com/repos/Prescrypto/WPCI/pulls/comments/329771193","pull_request_review_id":295231296,"id":329771193,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMyOTc3MTE5Mw==","diff_hunk":"@@ -0,0 +1,851 @@\n+#python\n+import tempfile\n+import io\n+import fitz\n+import subprocess\n+import requests\n+\n+#web\n+import jinja2\n+from tornado import gen\n+\n+# internal\n+from models import Document, Link, signerUser\n+from handlers.emailHandler import Mailer\n+from utils import *\n+from handlers.WSHandler import get_b2h_document\n+\n+#google oauth\n+import google.oauth2.credentials\n+import google_auth_oauthlib.flow\n+import googleapiclient.discovery\n+from googleapiclient.http import MediaIoBaseDownload\n+\n+\n+latex_jinja_env = jinja2.Environment(\n+    block_start_string='\\BLOCK{',\n+    block_end_string='}',\n+    variable_start_string='${{',\n+    variable_end_string='}}$',\n+    comment_start_string='\\#{',\n+    comment_end_string='}',\n+    line_statement_prefix='%%line',\n+    line_comment_prefix='%#line',\n+    trim_blocks=True,\n+    autoescape=False,\n+    loader=jinja2.FileSystemLoader(os.path.abspath('/'))\n+)\n+\n+# Load Logging definition\n+logging.basicConfig(level=logging.INFO)\n+logger = logging.getLogger('tornado-info')\n+\n+#HTML EMAIL TEMPLATES\n+DEFAULT_HTML_TEXT = \\\n+            \"<h3>Hello,</h3>\\\n+            <p>You will find the documentation you requested attached, thank you very much for your interest.</p>\\\n+            <p>Best regards,</p>\"\n+NOTIFICATION_HTML = \\\n+            \"<h3>Hi!</h3>\\\n+            <p> {} has just downloaded the following document {}!</p>\\\n+            <p>You can view detailed analytics here: <a href='{}'>{}</a></p>\\\n+            <p>Keep crushing it!</p>\\\n+            <p>WPCI Admin</p>\"\n+\n+\n+class manageDocuments():\n+\n+    document = None\n+    user = None\n+    signer_user = None\n+    google_credentials = None\n+    git_credentials = None\n+    link_id = None\n+\n+    def __init__(self, doc_id=None):\n+        if doc_id:\n+            try:\n+                doc = Document.Document()\n+                self.document = doc.find_by_doc_id(doc_id)\n+                user = User.User()\n+                self.user = user.find_by_attr(\"org_id\", self.document.org_id)\n+            except Exception as e:\n+                logger.info(F\"[error renderPDF init] obtaining document from docid: {str(e)}\")\n+\n+    def is_valid_document(self):\n+\n+        if self.document and self.user:\n+            return True\n+\n+        else:\n+            return False\n+\n+    def user_has_permission(self, user):\n+\n+        if self.user.username == user.username:\n+            return True\n+\n+        else:\n+            return False\n+\n+    def get_document_by_link_id(self, link_id):\n+        try:\n+            doc_id = \"_\".join(link_id.split(\"_\")[:-1])\n+        except Exception as e:\n+            logger.info(F\"[error get_document_by_link_id] obtaining link id: {str(e)}\")\n+            return False\n+        try:\n+            doc = Document.Document()\n+            self.document = doc.find_by_doc_id(doc_id)\n+            user = User.User()\n+            self.user = user.find_by_attr(\"org_id\", self.document.org_id)\n+        except Exception as e:\n+            logger.info(F\"[error get_document_by_link_id] obtaining document from linkid: {str(e)}\")\n+            return False\n+\n+        return True\n+\n+    def get_document_by_doc_id(self, doc_id):\n+        try:\n+            doc = Document.Document()\n+            self.document = doc.find_by_doc_id(doc_id)\n+            user = User.User()\n+            self.user = user.find_by_attr(\"org_id\", self.document.org_id)\n+        except Exception as e:\n+            logger.info(F\"[error get_document_by_doc_id] obtaining document from docid: {str(e)}\")\n+            return False\n+\n+        return True\n+\n+    def set_google_credentials(self):\n+\n+        if self.user:\n+            google_token = getattr(self.user, \"google_token\", False)\n+            if google_token is not False:\n+                self.google_credentials = {\n+                    'token': self.user.google_token,\n+                    'refresh_token': self.user.google_refresh_token,\n+                    'token_uri': conf.GOOGLE_TOKEN_URI,\n+                    'client_id': conf.GOOGLE_CLIENT_ID,\n+                    'client_secret': conf.GOOGLE_CLIENT_SECRET,\n+                    'scopes': conf.SCOPES\n+                }\n+                return True\n+        return False\n+\n+    def download_render_url_doc(self, pdf_url):\n+        \"\"\"Downloads and renders pdf document from an external url\"\"\"\n+\n+        with tempfile.TemporaryDirectory() as tmpdir:\n+            try:\n+                file_full_path = tmpdir + \"/\" + pdf_url.split(\"/\")[-1]\n+                file_tittle = file_full_path.split(\".\")[0]\n+                req = requests.get(pdf_url)\n+                if req.status_code == 200:\n+                    with open(file_full_path, 'wb') as mypdf:\n+                        mypdf.write(req.content)\n+\n+                    pdffile = open(file_full_path, 'rb').read()\n+                    if not pdffile:\n+                        logger.info(\"Error rendering the pdf external document\")\n+                        return None, None\n+\n+                    return pdffile, file_tittle\n+                else:\n+                    logger.info(\"[Error] download_render_url_doc: couldnt download the pdf \")\n+                    return None, None\n+\n+            except IOError as e:\n+                logger.info('pdf render IOError' + str(e))\n+                return None, None\n+            except Exception as e:\n+                logger.info(\"other error pdf render \" + str(e))\n+                return None, None\n+\n+    def download_render_sign_url_doc(self, pdf_url, timestamp_now, is_contract=False):\n+        \"\"\"Downloads, renders and signs pdf document from an external url\"\"\"\n+\n+        with tempfile.TemporaryDirectory() as tmpdir:\n+            try:\n+                file_full_path = tmpdir + \"/\" + pdf_url.split(\"/\")[-1]\n+                file_tittle = file_full_path.split(\".\")[0]\n+                watermark = \"Document generated for: \" + self.signer_user.email\n+                complete_hash = get_hash([timestamp_now, self.signer_user.email], [file_tittle])\n+\n+                req = requests.get(pdf_url)\n+                if req.status_code == 200:\n+                    with open(file_full_path, 'wb') as mypdf:\n+                        mypdf.write(req.content)\n+\n+                    if not req.content:\n+                        logger.info(\"Error rendering the pdf external document\")\n+                        return None, None, None\n+\n+                    if not is_contract:\n+                        pointa = fitz.Point(conf.AXIS_X, conf.AXIS_Y)\n+                        pointb = fitz.Point(conf.AXIS_X_LOWER, conf.AXIS_Y)\n+                        document = fitz.open(file_full_path)\n+                        for page in document:\n+                            page.insertText(pointa, text=watermark, fontsize=conf.WATERMARK_SIZE,\n+                                            fontname=conf.WATERMARK_FONT,\n+                                            rotate=conf.WATERMARK_ROTATION)\n+                            page.insertText(pointb, text=\"DocId: \" + complete_hash, fontsize=conf.WATERMARK_SIZE,\n+                                            fontname=conf.WATERMARK_FONT, rotate=conf.WATERMARK_ROTATION)\n+                        document.save(file_full_path, incremental=1)\n+                        document.close()\n+\n+                    pdffile = open(file_full_path, 'rb').read()\n+                    return pdffile, complete_hash, file_tittle\n+                else:","path":"handlers/manageDocuments.py","position":199,"original_position":199,"commit_id":"68b045b80c3bcfb9d06e39296bbc2f434decb79f","original_commit_id":"68b045b80c3bcfb9d06e39296bbc2f434decb79f","user":{"login":"xtornasol512","id":1806894,"node_id":"MDQ6VXNlcjE4MDY4OTQ=","avatar_url":"https://avatars3.githubusercontent.com/u/1806894?v=4","gravatar_id":"","url":"https://api.github.com/users/xtornasol512","html_url":"https://github.com/xtornasol512","followers_url":"https://api.github.com/users/xtornasol512/followers","following_url":"https://api.github.com/users/xtornasol512/following{/other_user}","gists_url":"https://api.github.com/users/xtornasol512/gists{/gist_id}","starred_url":"https://api.github.com/users/xtornasol512/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xtornasol512/subscriptions","organizations_url":"https://api.github.com/users/xtornasol512/orgs","repos_url":"https://api.github.com/users/xtornasol512/repos","events_url":"https://api.github.com/users/xtornasol512/events{/privacy}","received_events_url":"https://api.github.com/users/xtornasol512/received_events","type":"User","site_admin":false},"body":"SI nos mando algo diferente a 200, vale la pena imprimir el resultado del content o status code en el log?","created_at":"2019-09-30T20:28:04Z","updated_at":"2019-09-30T20:28:04Z","html_url":"https://github.com/Prescrypto/WPCI/pull/90#discussion_r329771193","pull_request_url":"https://api.github.com/repos/Prescrypto/WPCI/pulls/90","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/Prescrypto/WPCI/pulls/comments/329771193"},"html":{"href":"https://github.com/Prescrypto/WPCI/pull/90#discussion_r329771193"},"pull_request":{"href":"https://api.github.com/repos/Prescrypto/WPCI/pulls/90"}}},"pull_request":{"url":"https://api.github.com/repos/Prescrypto/WPCI/pulls/90","id":317079577,"node_id":"MDExOlB1bGxSZXF1ZXN0MzE3MDc5NTc3","html_url":"https://github.com/Prescrypto/WPCI/pull/90","diff_url":"https://github.com/Prescrypto/WPCI/pull/90.diff","patch_url":"https://github.com/Prescrypto/WPCI/pull/90.patch","issue_url":"https://api.github.com/repos/Prescrypto/WPCI/issues/90","number":90,"state":"open","locked":false,"title":"Feature/add pdf enpoint","user":{"login":"valerybriz","id":22871092,"node_id":"MDQ6VXNlcjIyODcxMDky","avatar_url":"https://avatars1.githubusercontent.com/u/22871092?v=4","gravatar_id":"","url":"https://api.github.com/users/valerybriz","html_url":"https://github.com/valerybriz","followers_url":"https://api.github.com/users/valerybriz/followers","following_url":"https://api.github.com/users/valerybriz/following{/other_user}","gists_url":"https://api.github.com/users/valerybriz/gists{/gist_id}","starred_url":"https://api.github.com/users/valerybriz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/valerybriz/subscriptions","organizations_url":"https://api.github.com/users/valerybriz/orgs","repos_url":"https://api.github.com/users/valerybriz/repos","events_url":"https://api.github.com/users/valerybriz/events{/privacy}","received_events_url":"https://api.github.com/users/valerybriz/received_events","type":"User","site_admin":false},"body":"Refactorization of flow","created_at":"2019-09-12T20:38:45Z","updated_at":"2019-09-30T20:28:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a1ea6ca9801517aef3889f45f0ea97c87aaeca46","assignee":{"login":"valerybriz","id":22871092,"node_id":"MDQ6VXNlcjIyODcxMDky","avatar_url":"https://avatars1.githubusercontent.com/u/22871092?v=4","gravatar_id":"","url":"https://api.github.com/users/valerybriz","html_url":"https://github.com/valerybriz","followers_url":"https://api.github.com/users/valerybriz/followers","following_url":"https://api.github.com/users/valerybriz/following{/other_user}","gists_url":"https://api.github.com/users/valerybriz/gists{/gist_id}","starred_url":"https://api.github.com/users/valerybriz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/valerybriz/subscriptions","organizations_url":"https://api.github.com/users/valerybriz/orgs","repos_url":"https://api.github.com/users/valerybriz/repos","events_url":"https://api.github.com/users/valerybriz/events{/privacy}","received_events_url":"https://api.github.com/users/valerybriz/received_events","type":"User","site_admin":false},"assignees":[{"login":"valerybriz","id":22871092,"node_id":"MDQ6VXNlcjIyODcxMDky","avatar_url":"https://avatars1.githubusercontent.com/u/22871092?v=4","gravatar_id":"","url":"https://api.github.com/users/valerybriz","html_url":"https://github.com/valerybriz","followers_url":"https://api.github.com/users/valerybriz/followers","following_url":"https://api.github.com/users/valerybriz/following{/other_user}","gists_url":"https://api.github.com/users/valerybriz/gists{/gist_id}","starred_url":"https://api.github.com/users/valerybriz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/valerybriz/subscriptions","organizations_url":"https://api.github.com/users/valerybriz/orgs","repos_url":"https://api.github.com/users/valerybriz/repos","events_url":"https://api.github.com/users/valerybriz/events{/privacy}","received_events_url":"https://api.github.com/users/valerybriz/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":850562758,"node_id":"MDU6TGFiZWw4NTA1NjI3NTg=","url":"https://api.github.com/repos/Prescrypto/WPCI/labels/enhancement","name":"enhancement","color":"a2eeef","default":true}],"milestone":null,"commits_url":"https://api.github.com/repos/Prescrypto/WPCI/pulls/90/commits","review_comments_url":"https://api.github.com/repos/Prescrypto/WPCI/pulls/90/comments","review_comment_url":"https://api.github.com/repos/Prescrypto/WPCI/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Prescrypto/WPCI/issues/90/comments","statuses_url":"https://api.github.com/repos/Prescrypto/WPCI/statuses/68b045b80c3bcfb9d06e39296bbc2f434decb79f","head":{"label":"Prescrypto:feature/add_pdf_enpoint","ref":"feature/add_pdf_enpoint","sha":"68b045b80c3bcfb9d06e39296bbc2f434decb79f","user":{"login":"Prescrypto","id":22649410,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNjQ5NDEw","avatar_url":"https://avatars0.githubusercontent.com/u/22649410?v=4","gravatar_id":"","url":"https://api.github.com/users/Prescrypto","html_url":"https://github.com/Prescrypto","followers_url":"https://api.github.com/users/Prescrypto/followers","following_url":"https://api.github.com/users/Prescrypto/following{/other_user}","gists_url":"https://api.github.com/users/Prescrypto/gists{/gist_id}","starred_url":"https://api.github.com/users/Prescrypto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Prescrypto/subscriptions","organizations_url":"https://api.github.com/users/Prescrypto/orgs","repos_url":"https://api.github.com/users/Prescrypto/repos","events_url":"https://api.github.com/users/Prescrypto/events{/privacy}","received_events_url":"https://api.github.com/users/Prescrypto/received_events","type":"Organization","site_admin":false},"repo":{"id":123171150,"node_id":"MDEwOlJlcG9zaXRvcnkxMjMxNzExNTA=","name":"WPCI","full_name":"Prescrypto/WPCI","private":false,"owner":{"login":"Prescrypto","id":22649410,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNjQ5NDEw","avatar_url":"https://avatars0.githubusercontent.com/u/22649410?v=4","gravatar_id":"","url":"https://api.github.com/users/Prescrypto","html_url":"https://github.com/Prescrypto","followers_url":"https://api.github.com/users/Prescrypto/followers","following_url":"https://api.github.com/users/Prescrypto/following{/other_user}","gists_url":"https://api.github.com/users/Prescrypto/gists{/gist_id}","starred_url":"https://api.github.com/users/Prescrypto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Prescrypto/subscriptions","organizations_url":"https://api.github.com/users/Prescrypto/orgs","repos_url":"https://api.github.com/users/Prescrypto/repos","events_url":"https://api.github.com/users/Prescrypto/events{/privacy}","received_events_url":"https://api.github.com/users/Prescrypto/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/Prescrypto/WPCI","description":"White paper continuous deployment system","fork":false,"url":"https://api.github.com/repos/Prescrypto/WPCI","forks_url":"https://api.github.com/repos/Prescrypto/WPCI/forks","keys_url":"https://api.github.com/repos/Prescrypto/WPCI/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Prescrypto/WPCI/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Prescrypto/WPCI/teams","hooks_url":"https://api.github.com/repos/Prescrypto/WPCI/hooks","issue_events_url":"https://api.github.com/repos/Prescrypto/WPCI/issues/events{/number}","events_url":"https://api.github.com/repos/Prescrypto/WPCI/events","assignees_url":"https://api.github.com/repos/Prescrypto/WPCI/assignees{/user}","branches_url":"https://api.github.com/repos/Prescrypto/WPCI/branches{/branch}","tags_url":"https://api.github.com/repos/Prescrypto/WPCI/tags","blobs_url":"https://api.github.com/repos/Prescrypto/WPCI/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Prescrypto/WPCI/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Prescrypto/WPCI/git/refs{/sha}","trees_url":"https://api.github.com/repos/Prescrypto/WPCI/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Prescrypto/WPCI/statuses/{sha}","languages_url":"https://api.github.com/repos/Prescrypto/WPCI/languages","stargazers_url":"https://api.github.com/repos/Prescrypto/WPCI/stargazers","contributors_url":"https://api.github.com/repos/Prescrypto/WPCI/contributors","subscribers_url":"https://api.github.com/repos/Prescrypto/WPCI/subscribers","subscription_url":"https://api.github.com/repos/Prescrypto/WPCI/subscription","commits_url":"https://api.github.com/repos/Prescrypto/WPCI/commits{/sha}","git_commits_url":"https://api.github.com/repos/Prescrypto/WPCI/git/commits{/sha}","comments_url":"https://api.github.com/repos/Prescrypto/WPCI/comments{/number}","issue_comment_url":"https://api.github.com/repos/Prescrypto/WPCI/issues/comments{/number}","contents_url":"https://api.github.com/repos/Prescrypto/WPCI/contents/{+path}","compare_url":"https://api.github.com/repos/Prescrypto/WPCI/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Prescrypto/WPCI/merges","archive_url":"https://api.github.com/repos/Prescrypto/WPCI/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Prescrypto/WPCI/downloads","issues_url":"https://api.github.com/repos/Prescrypto/WPCI/issues{/number}","pulls_url":"https://api.github.com/repos/Prescrypto/WPCI/pulls{/number}","milestones_url":"https://api.github.com/repos/Prescrypto/WPCI/milestones{/number}","notifications_url":"https://api.github.com/repos/Prescrypto/WPCI/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Prescrypto/WPCI/labels{/name}","releases_url":"https://api.github.com/repos/Prescrypto/WPCI/releases{/id}","deployments_url":"https://api.github.com/repos/Prescrypto/WPCI/deployments","created_at":"2018-02-27T18:31:40Z","updated_at":"2019-09-09T20:25:15Z","pushed_at":"2019-09-24T21:59:32Z","git_url":"git://github.com/Prescrypto/WPCI.git","ssh_url":"git@github.com:Prescrypto/WPCI.git","clone_url":"https://github.com/Prescrypto/WPCI.git","svn_url":"https://github.com/Prescrypto/WPCI","homepage":null,"size":646,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":12,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":1,"open_issues":12,"watchers":1,"default_branch":"master"}},"base":{"label":"Prescrypto:develop","ref":"develop","sha":"c3539f90df4111ced866afa80a8ae1ab47237467","user":{"login":"Prescrypto","id":22649410,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNjQ5NDEw","avatar_url":"https://avatars0.githubusercontent.com/u/22649410?v=4","gravatar_id":"","url":"https://api.github.com/users/Prescrypto","html_url":"https://github.com/Prescrypto","followers_url":"https://api.github.com/users/Prescrypto/followers","following_url":"https://api.github.com/users/Prescrypto/following{/other_user}","gists_url":"https://api.github.com/users/Prescrypto/gists{/gist_id}","starred_url":"https://api.github.com/users/Prescrypto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Prescrypto/subscriptions","organizations_url":"https://api.github.com/users/Prescrypto/orgs","repos_url":"https://api.github.com/users/Prescrypto/repos","events_url":"https://api.github.com/users/Prescrypto/events{/privacy}","received_events_url":"https://api.github.com/users/Prescrypto/received_events","type":"Organization","site_admin":false},"repo":{"id":123171150,"node_id":"MDEwOlJlcG9zaXRvcnkxMjMxNzExNTA=","name":"WPCI","full_name":"Prescrypto/WPCI","private":false,"owner":{"login":"Prescrypto","id":22649410,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIyNjQ5NDEw","avatar_url":"https://avatars0.githubusercontent.com/u/22649410?v=4","gravatar_id":"","url":"https://api.github.com/users/Prescrypto","html_url":"https://github.com/Prescrypto","followers_url":"https://api.github.com/users/Prescrypto/followers","following_url":"https://api.github.com/users/Prescrypto/following{/other_user}","gists_url":"https://api.github.com/users/Prescrypto/gists{/gist_id}","starred_url":"https://api.github.com/users/Prescrypto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Prescrypto/subscriptions","organizations_url":"https://api.github.com/users/Prescrypto/orgs","repos_url":"https://api.github.com/users/Prescrypto/repos","events_url":"https://api.github.com/users/Prescrypto/events{/privacy}","received_events_url":"https://api.github.com/users/Prescrypto/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/Prescrypto/WPCI","description":"White paper continuous deployment system","fork":false,"url":"https://api.github.com/repos/Prescrypto/WPCI","forks_url":"https://api.github.com/repos/Prescrypto/WPCI/forks","keys_url":"https://api.github.com/repos/Prescrypto/WPCI/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Prescrypto/WPCI/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Prescrypto/WPCI/teams","hooks_url":"https://api.github.com/repos/Prescrypto/WPCI/hooks","issue_events_url":"https://api.github.com/repos/Prescrypto/WPCI/issues/events{/number}","events_url":"https://api.github.com/repos/Prescrypto/WPCI/events","assignees_url":"https://api.github.com/repos/Prescrypto/WPCI/assignees{/user}","branches_url":"https://api.github.com/repos/Prescrypto/WPCI/branches{/branch}","tags_url":"https://api.github.com/repos/Prescrypto/WPCI/tags","blobs_url":"https://api.github.com/repos/Prescrypto/WPCI/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Prescrypto/WPCI/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Prescrypto/WPCI/git/refs{/sha}","trees_url":"https://api.github.com/repos/Prescrypto/WPCI/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Prescrypto/WPCI/statuses/{sha}","languages_url":"https://api.github.com/repos/Prescrypto/WPCI/languages","stargazers_url":"https://api.github.com/repos/Prescrypto/WPCI/stargazers","contributors_url":"https://api.github.com/repos/Prescrypto/WPCI/contributors","subscribers_url":"https://api.github.com/repos/Prescrypto/WPCI/subscribers","subscription_url":"https://api.github.com/repos/Prescrypto/WPCI/subscription","commits_url":"https://api.github.com/repos/Prescrypto/WPCI/commits{/sha}","git_commits_url":"https://api.github.com/repos/Prescrypto/WPCI/git/commits{/sha}","comments_url":"https://api.github.com/repos/Prescrypto/WPCI/comments{/number}","issue_comment_url":"https://api.github.com/repos/Prescrypto/WPCI/issues/comments{/number}","contents_url":"https://api.github.com/repos/Prescrypto/WPCI/contents/{+path}","compare_url":"https://api.github.com/repos/Prescrypto/WPCI/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Prescrypto/WPCI/merges","archive_url":"https://api.github.com/repos/Prescrypto/WPCI/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Prescrypto/WPCI/downloads","issues_url":"https://api.github.com/repos/Prescrypto/WPCI/issues{/number}","pulls_url":"https://api.github.com/repos/Prescrypto/WPCI/pulls{/number}","milestones_url":"https://api.github.com/repos/Prescrypto/WPCI/milestones{/number}","notifications_url":"https://api.github.com/repos/Prescrypto/WPCI/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Prescrypto/WPCI/labels{/name}","releases_url":"https://api.github.com/repos/Prescrypto/WPCI/releases{/id}","deployments_url":"https://api.github.com/repos/Prescrypto/WPCI/deployments","created_at":"2018-02-27T18:31:40Z","updated_at":"2019-09-09T20:25:15Z","pushed_at":"2019-09-24T21:59:32Z","git_url":"git://github.com/Prescrypto/WPCI.git","ssh_url":"git@github.com:Prescrypto/WPCI.git","clone_url":"https://github.com/Prescrypto/WPCI.git","svn_url":"https://github.com/Prescrypto/WPCI","homepage":null,"size":646,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":12,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":1,"open_issues":12,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Prescrypto/WPCI/pulls/90"},"html":{"href":"https://github.com/Prescrypto/WPCI/pull/90"},"issue":{"href":"https://api.github.com/repos/Prescrypto/WPCI/issues/90"},"comments":{"href":"https://api.github.com/repos/Prescrypto/WPCI/issues/90/comments"},"review_comments":{"href":"https://api.github.com/repos/Prescrypto/WPCI/pulls/90/comments"},"review_comment":{"href":"https://api.github.com/repos/Prescrypto/WPCI/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Prescrypto/WPCI/pulls/90/commits"},"statuses":{"href":"https://api.github.com/repos/Prescrypto/WPCI/statuses/68b045b80c3bcfb9d06e39296bbc2f434decb79f"}},"author_association":"CONTRIBUTOR"}}
other: {"actor":{"display_login":"xtornasol512"}}