Improved http module, improved mcuser
This commit is contained in:
parent
0acb22e0a7
commit
17b75a2ba9
|
@ -1,3 +1,4 @@
|
||||||
|
import json
|
||||||
from util import hook, http
|
from util import hook, http
|
||||||
|
|
||||||
NAME_URL = "https://account.minecraft.net/buy/frame/checkName/{}"
|
NAME_URL = "https://account.minecraft.net/buy/frame/checkName/{}"
|
||||||
|
@ -24,18 +25,41 @@ def get_status(name):
|
||||||
return "invalid"
|
return "invalid"
|
||||||
|
|
||||||
|
|
||||||
def is_paid(name):
|
def get_profile(name):
|
||||||
""" takes a name and returns true if it's assosiated with a paid minecraft account
|
profile = {}
|
||||||
if the account does not exist or is not paid, returns false """
|
|
||||||
|
# form the profile request
|
||||||
|
request = {
|
||||||
|
"name": name,
|
||||||
|
"agent": "minecraft"
|
||||||
|
}
|
||||||
|
|
||||||
|
# submit the profile request
|
||||||
|
try:
|
||||||
|
headers = {"Content-Type": "application/json"}
|
||||||
|
r = http.get_json(
|
||||||
|
'https://api.mojang.com/profiles/page/1',
|
||||||
|
post_data=json.dumps(request),
|
||||||
|
headers=headers
|
||||||
|
)
|
||||||
|
except (http.URLError, http.HTTPError) as e:
|
||||||
|
raise McuError("Could not get profile status: {}".format(e))
|
||||||
|
|
||||||
|
user = r["profiles"][0]
|
||||||
|
profile["name"] = user["name"]
|
||||||
|
profile["id"] = user["id"]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = http.get(PAID_URL, user=name)
|
response = http.get(PAID_URL, user=name)
|
||||||
except (http.URLError, http.HTTPError) as e:
|
except (http.URLError, http.HTTPError) as e:
|
||||||
raise McuError("Could not get payment status: {}".format(e))
|
raise McuError("Could not get payment status: {}".format(e))
|
||||||
|
|
||||||
if "true" in response:
|
if "true" in response:
|
||||||
return True
|
profile["paid"] = True
|
||||||
else:
|
else:
|
||||||
return False
|
profile["paid"] = False
|
||||||
|
|
||||||
|
return profile
|
||||||
|
|
||||||
|
|
||||||
@hook.command("haspaid")
|
@hook.command("haspaid")
|
||||||
|
@ -46,20 +70,24 @@ def mcuser(inp):
|
||||||
user = inp.strip()
|
user = inp.strip()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
# get status of name (does it exist?)
|
||||||
name_status = get_status(user)
|
name_status = get_status(user)
|
||||||
except McuError as e:
|
except McuError as e:
|
||||||
return e
|
return e
|
||||||
|
|
||||||
if name_status == "taken":
|
if name_status == "taken":
|
||||||
try:
|
try:
|
||||||
paid = is_paid(user)
|
# get information about user
|
||||||
|
profile = get_profile(user)
|
||||||
except McuError as e:
|
except McuError as e:
|
||||||
return e
|
return "Error: {}".format(e)
|
||||||
|
|
||||||
if paid:
|
if profile["paid"]:
|
||||||
return u"The account \x02{}\x02 exists and \x02is a paid\x02 minecraft account.".format(user)
|
return u"The account \x02{name}\x02 ({id}) exists and \x02is a paid\x02 minecraft" \
|
||||||
|
u" account.".format(**profile)
|
||||||
else:
|
else:
|
||||||
return u"The account \x02{}\x02 exists, but \x02is not\x02 a paid minecraft account.".format(user)
|
return u"The account \x02{name}\x02 ({id}) exists, but \x02is NOT\x02 a paid minecraft" \
|
||||||
|
u" account.".format(**profile)
|
||||||
elif name_status == "free":
|
elif name_status == "free":
|
||||||
return u"The account \x02{}\x02 does not exist.".format(user)
|
return u"The account \x02{}\x02 does not exist.".format(user)
|
||||||
elif name_status == "invalid":
|
elif name_status == "invalid":
|
||||||
|
|
|
@ -52,7 +52,7 @@ def get_json(*args, **kwargs):
|
||||||
|
|
||||||
|
|
||||||
def open(url, query_params=None, user_agent=None, post_data=None,
|
def open(url, query_params=None, user_agent=None, post_data=None,
|
||||||
referer=None, get_method=None, cookies=False, timeout=None, **kwargs):
|
referer=None, get_method=None, cookies=False, timeout=None, headers=None, **kwargs):
|
||||||
if query_params is None:
|
if query_params is None:
|
||||||
query_params = {}
|
query_params = {}
|
||||||
|
|
||||||
|
@ -68,6 +68,10 @@ def open(url, query_params=None, user_agent=None, post_data=None,
|
||||||
if get_method is not None:
|
if get_method is not None:
|
||||||
request.get_method = lambda: get_method
|
request.get_method = lambda: get_method
|
||||||
|
|
||||||
|
if headers is not None:
|
||||||
|
for header_key, header_value in headers.iteritems():
|
||||||
|
request.add_header(header_key, header_value)
|
||||||
|
|
||||||
request.add_header('User-Agent', user_agent)
|
request.add_header('User-Agent', user_agent)
|
||||||
|
|
||||||
if referer is not None:
|
if referer is not None:
|
||||||
|
|
Reference in New Issue