Added more helptext, added action handling for redir and html
This commit is contained in:
		
					parent
					
						
							
								3895fcb8ba
							
						
					
				
			
			
				commit
				
					
						b5d344c9fe
					
				
			
		
					 1 changed files with 43 additions and 16 deletions
				
			
		
							
								
								
									
										45
									
								
								chainlink.py
									
										
									
									
									
								
							
							
						
						
									
										45
									
								
								chainlink.py
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
from bottle import Bottle, run, response, request
 | 
			
		||||
import json
 | 
			
		||||
import requests
 | 
			
		||||
import json2html
 | 
			
		||||
 | 
			
		||||
VERSION = '0.0.1'
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -12,28 +13,54 @@ app = Bottle()
 | 
			
		|||
@app.route("/")
 | 
			
		||||
def root():
 | 
			
		||||
    host = request.get_header('host')
 | 
			
		||||
    return f'specify domain in URL like {host}/domain.crypto'
 | 
			
		||||
    helptext = f"""
 | 
			
		||||
    <p>General format is {host}/<domain>/<action>
 | 
			
		||||
    <p>If <action> is blank, it will attempt to use the redirect
 | 
			
		||||
    <p>You may also/optionally specify an action which can be any of the following
 | 
			
		||||
    <table margin-left="100px">
 | 
			
		||||
    <tr>
 | 
			
		||||
    <td>raw</td>
 | 
			
		||||
    <td>Show the raw json (formatted as an html table)</td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <td>html</td>
 | 
			
		||||
    <td>Hit the IPFS hash via cloudflare-ipfs.com</td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <td>redir</td>
 | 
			
		||||
    <td>Use the redirect parameter and just return a 302 redirect to whatever is set</td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    </table>
 | 
			
		||||
    """
 | 
			
		||||
    return helptext
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@app.route("/<domain>")
 | 
			
		||||
def showdomain(domain):
 | 
			
		||||
@app.route("/<domain>/<action>")
 | 
			
		||||
def redirectDomain(domain, action=None):
 | 
			
		||||
    apiurl =f'https://unstoppabledomains.com/api/v1/{domain}'
 | 
			
		||||
    redirect = requests.get(apiurl)
 | 
			
		||||
    dnslookup = requests.get(apiurl)
 | 
			
		||||
    if action == None or action == 'redir':
 | 
			
		||||
        try:
 | 
			
		||||
        if redirect.status_code == 200:
 | 
			
		||||
            body = json.loads(redirect.content)
 | 
			
		||||
            if dnslookup.status_code == 200:
 | 
			
		||||
                body = json.loads(dnslookup.content)
 | 
			
		||||
                print(body)
 | 
			
		||||
                redirect_url = body['ipfs']['redirect_domain']
 | 
			
		||||
            # TODO: Add handler for the ipfs vs redirect
 | 
			
		||||
#            if body['ipfs']['html']:
 | 
			
		||||
#                print('We have html')
 | 
			
		||||
                response.status = 302
 | 
			
		||||
                response.set_header('Location',redirect_url)
 | 
			
		||||
            else:
 | 
			
		||||
                return f'Error making call to {apiurl} for {domain}'
 | 
			
		||||
        except KeyError:
 | 
			
		||||
            return f'Did not find a redirect for {domain}'
 | 
			
		||||
 | 
			
		||||
    elif action == 'html':
 | 
			
		||||
        # TODO: clean this up by functionalizing this call.  It's basically the same as above
 | 
			
		||||
        if dnslookup.status_code == 200:
 | 
			
		||||
            body = json.loads(dnslookup.content)
 | 
			
		||||
            print(body)
 | 
			
		||||
            response.status = 302
 | 
			
		||||
            response.set_header('Location', f"https://cloudflare-ipfs.com/ipfs/{body['ipfs']['html']}")
 | 
			
		||||
    elif action == 'raw':
 | 
			
		||||
        if dnslookup.status_code == 200:
 | 
			
		||||
            body = json.loads(dnslookup.content)
 | 
			
		||||
            return json2html.json2html.convert(json = body)
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    run(app, host='localhost', port='5000', reloader=True)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue