You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.0 KiB
Python

2 years ago
import wordsegment
import re
import tldextract
from wordsegment import load, segment
from flask import Flask, json
load()
api = Flask(__name__)
NOTVALIDDOMAIN={"error":{"code":400,"message":"Bad Request. Not valid domain."}}
def is_domain(value: str):
pattern = re.compile(
r'^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|'
r'([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|'
r'([a-zA-Z0-9][-_.a-zA-Z0-9]{0,61}[a-zA-Z0-9]))\.'
r'([a-zA-Z]{2,13}|[a-zA-Z0-9-]{2,30}.[a-zA-Z]{2,3})$'
)
"""
Return whether or not given value is a valid domain.
If the value is valid domain name this function returns ``True``
:param value: domain string to validate
"""
return pattern.match(value)
def get_domain(value: str):
if(is_domain(value)):
ext = tldextract.extract(value)
return ext.domain
@api.route('/words/<string:name>', methods=['GET'])
def get_words(name: str):
if(is_domain(name)):
data = {}
data['words'] = segment(get_domain(name))
return json.dumps(data)
else:
return json.dumps(NOTVALIDDOMAIN)
@api.route('/whois/<string:name>', methods=['GET'])
def get_whois(name: str):
if(is_domain(name)):
import whois
who_var = whois.whois(name)
return json.dumps(who_var)
else:
return json.dumps(NOTVALIDDOMAIN)
@api.route('/tld/<string:name>', methods=['GET'])
def get_tld(name: str):
if(is_domain(name)):
ext = tldextract.extract(name)
data = {}
data['tld'] = ext.suffix
return json.dumps(data)
else:
return json.dumps(NOTVALIDDOMAIN)
@api.route('/domain/<string:name>', methods=['GET'])
def get_onlydomain(name: str):
if(is_domain(name)):
data = {}
data['domain'] = get_domain(name)
return json.dumps(data)
else:
return json.dumps(NOTVALIDDOMAIN)
@api.route('/size/<string:name>', methods=['GET'])
def get_size(name: str):
if(is_domain(name)):
data = {}
data['size'] = len(get_domain(name))
return json.dumps(data)
else:
return json.dumps(NOTVALIDDOMAIN)
if __name__ == '__main__':
api.run()