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

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()