generated from mwc/lab_subrosa
	
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import requests
 | 
						|
 | 
						|
class APIError(Exception):
 | 
						|
    "A custom error we'll use when something goes wrong with the API"
 | 
						|
 | 
						|
class SubRosaAPI:
 | 
						|
    """An API for the SubRosa server.
 | 
						|
    """
 | 
						|
 | 
						|
    def __init__(self, url):
 | 
						|
        self.url = url
 | 
						|
 | 
						|
    def get_user(self, username):
 | 
						|
        route = "/users"
 | 
						|
        params = {'name': username}
 | 
						|
        return self.get(route, params)
 | 
						|
 | 
						|
    def create_user(self, username, public_key):
 | 
						|
        route = "/users/new"
 | 
						|
        params = {'name': username, 'public_key': public_key}
 | 
						|
        return self.post(route, params)
 | 
						|
 | 
						|
    def get_messages(self, username):
 | 
						|
        route = "/messages"
 | 
						|
        params = {'name': username}
 | 
						|
        return self.get(route, params)
 | 
						|
 | 
						|
    def send_message(self, sender, recipient, ciphertext, time_sent, time_sent_signature):
 | 
						|
        route = "/messages/send"
 | 
						|
        params = {
 | 
						|
            'sender': sender, 
 | 
						|
            'recipient': recipient,
 | 
						|
            'ciphertext': ciphertext,
 | 
						|
            'time_sent': time_sent,
 | 
						|
            'time_sent_signature': time_sent_signature,
 | 
						|
        }
 | 
						|
        return self.get(route, params)
 | 
						|
 | 
						|
    def get(self, route, params):
 | 
						|
        response = requests.get(self.url + route, json=params)
 | 
						|
        if response.ok:
 | 
						|
            return response.json()
 | 
						|
        else:
 | 
						|
            raise APIError(response.json()['error'])
 | 
						|
 | 
						|
    def post(self, route, params):
 | 
						|
        response = requests.post(self.url + route, json=params)
 | 
						|
        if response.ok:
 | 
						|
            return response.json()
 | 
						|
        else:
 | 
						|
            raise APIError(response.json()['error'])
 | 
						|
 |