Blenderkit: remove unused file doing forbidden things.

Do not *ever* perform actions like web access at 'root' of a py file,
those should *always* be put inside a function that only gets called
when needed. Otherwise one get weird, slow, annoying web access just by
importing the module!
This commit is contained in:
Bastien Montagne 2019-04-18 19:09:08 +02:00
parent 9b59f77544
commit 657e33c6be
1 changed files with 0 additions and 101 deletions

View File

@ -1,101 +0,0 @@
# ##### BEGIN GPL LICENSE BLOCK #####
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####
import json
import webbrowser
from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import parse_qs, urlparse
import requests
SERVER_URL = "http://localhost:8001"
# SERVER_URL = "https://devel.blenderkit.com"
CLIENT_ID = "IdFRwa3SGA8eMpzhRVFMg5Ts8sPK93xBjif93x0F"
PORTS = [62485, 1234]
class SimpleOAuthAuthenticator(object):
def __init__(self, server_url, client_id, ports):
self.server_url = server_url
self.client_id = client_id
self.ports = ports
def _get_tokens(self, authorization_code=None, refresh_token=None, grant_type="authorization_code"):
data = {
"grant_type": grant_type,
"state": "random_state_string",
"client_id": self.client_id,
"scopes": "read write",
}
if authorization_code:
data['code'] = authorization_code
if refresh_token:
data['refresh_token'] = refresh_token
print(data)
response = requests.post(
'%s/o/token/' % self.server_url,
data=data
)
print(response.content)
if response.status_code != 200:
return None, None
refresh_token = json.loads(response.content)['refresh_token']
access_token = json.loads(response.content)['access_token']
return access_token, refresh_token
def get_new_token(self):
class HTTPServerHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
if 'code' in self.path:
self.auth_code = self.path.split('=')[1]
# Display to the user that they no longer need the browser window
self.wfile.write(bytes('<html><h1>You may now close this window.</h1></html>', 'utf-8'))
qs = parse_qs(urlparse(self.path).query)
self.server.authorization_code = qs['code'][0]
for port in self.ports:
print(port)
try:
httpServer = HTTPServer(('localhost', port), HTTPServerHandler)
except OSError:
continue
break
print(port)
webbrowser.open_new(
"%s/o/authorize?client_id=%s&state=random_state_string&response_type=code&"
"redirect_uri=http://localhost:%s/consumer/exchange/" % (self.server_url, self.client_id, port),
)
httpServer.handle_request()
authorization_code = httpServer.authorization_code
return self._get_tokens(authorization_code=authorization_code)
def get_refreshed_token(self, refresh_token):
return self._get_tokens(refresh_token=refresh_token, grant_type="refresh_token")
authenticator = SimpleOAuthAuthenticator(server_url=SERVER_URL, client_id=CLIENT_ID, ports=PORTS)
auth_token, refresh_token = authenticator.get_new_token()
print("auth token: %s, refresh_token: %s" % (auth_token, refresh_token))
auth_token, refresh_token = authenticator.get_refreshed_token(refresh_token)
print("auth_token: %s, new refresh_token: %s" % (auth_token, refresh_token))