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
				
			
		
							
								
								
									
										59
									
								
								chainlink.py
									
										
									
									
									
								
							
							
						
						
									
										59
									
								
								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) | ||||
|     try: | ||||
|         if redirect.status_code == 200: | ||||
|             body = json.loads(redirect.content) | ||||
|     dnslookup = requests.get(apiurl) | ||||
|     if action == None or action == 'redir': | ||||
|         try: | ||||
|             if dnslookup.status_code == 200: | ||||
|                 body = json.loads(dnslookup.content) | ||||
|                 print(body) | ||||
|                 redirect_url = body['ipfs']['redirect_domain'] | ||||
|                 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) | ||||
|             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}' | ||||
| 
 | ||||
|             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