[oauth] use custom key/secret values during oauth:…

This commit is contained in:
Mike Fährmann
2018-01-16 17:39:46 +01:00
parent 421a9740a3
commit 91ed147cef
2 changed files with 15 additions and 10 deletions

View File

@@ -10,7 +10,7 @@
from .common import Extractor, Message
from . import deviantart, flickr, reddit, tumblr
from .. import text, util
from .. import text, util, config
import os
import urllib.parse
@@ -24,6 +24,10 @@ class OAuthBase(Extractor):
Extractor.__init__(self)
self.client = None
def oauth_config(self, key, default=None):
return config.interpolate(
("extractor", self.subcategory, key), default)
def recv(self):
"""Open local HTTP server and recv callback parameters"""
import socket
@@ -66,7 +70,7 @@ class OAuthBase(Extractor):
import webbrowser
url += "?" + urllib.parse.urlencode(params)
browser = self.config("browser", True)
if not browser or (browser and not webbrowser.open(url)):
if not browser or not webbrowser.open(url):
print("Please open this URL in your browser:")
print(url, end="\n\n", flush=True)
return self.recv()
@@ -155,8 +159,10 @@ class OAuthDeviantart(OAuthBase):
yield Message.Version, 1
self._oauth2_authorization_code_grant(
deviantart.DeviantartAPI.CLIENT_ID,
deviantart.DeviantartAPI.CLIENT_SECRET,
self.oauth_config(
"client-id", deviantart.DeviantartAPI.CLIENT_ID),
self.oauth_config(
"client-secret", deviantart.DeviantartAPI.CLIENT_SECRET),
"https://www.deviantart.com/oauth2/authorize",
"https://www.deviantart.com/oauth2/token",
"browse",
@@ -171,8 +177,8 @@ class OAuthFlickr(OAuthBase):
OAuthBase.__init__(self, match)
self.session = util.OAuthSession(
self.session,
flickr.FlickrAPI.API_KEY,
flickr.FlickrAPI.API_SECRET,
self.oauth_config("api-key", flickr.FlickrAPI.API_KEY),
self.oauth_config("api-secret", flickr.FlickrAPI.API_SECRET),
)
def items(self):
@@ -194,7 +200,7 @@ class OAuthReddit(OAuthBase):
self.session.headers["User-Agent"] = reddit.RedditAPI.USER_AGENT
self._oauth2_authorization_code_grant(
reddit.RedditAPI.CLIENT_ID,
self.oauth_config("client-id", reddit.RedditAPI.CLIENT_ID),
"",
"https://www.reddit.com/api/v1/authorize",
"https://www.reddit.com/api/v1/access_token",
@@ -210,8 +216,8 @@ class OAuthTumblr(OAuthBase):
OAuthBase.__init__(self, match)
self.session = util.OAuthSession(
self.session,
tumblr.TumblrAPI.API_KEY,
tumblr.TumblrAPI.API_SECRET,
self.oauth_config("api-key", tumblr.TumblrAPI.API_KEY),
self.oauth_config("api-secret", tumblr.TumblrAPI.API_SECRET),
)
def items(self):