def post(self): # Provide a method to create access tokens. The create_jwt() # function is used to actually generate the token if not request.is_json: return jsonify({"msg": "Missing JSON in request"}) params = request.get_json() email = params.get('email', None) password = params.get('password', None) if not email: return jsonify({"msg": "Missing email parameter"}) if not password: return jsonify({"msg": "Missing password parameter"}) # Verify the email/password. with grpc.insecure_channel(HOST + ':' + PORT) as channel: stub = accounts_pb2_grpc.AccountServiceStub(channel) try: user = stub.AuthenticateByEmail( accounts_pb2.AuthenticateByEmailRequest(email=email, password=password)) except Exception as e: print( "Invalid username or password? Or perphaps we couldn't connect?" ) print(e) return False if not user: return jsonify({"msg": "Bad email or password"}) # Identity can be any data that is json serializable ret = {'jwt': create_jwt(identity=user.id)} return jsonify(ret)
def delete(self, id): with grpc.insecure_channel(HOST + ':' + PORT) as channel: stub = accounts_pb2_grpc.AccountServiceStub(channel) try: deleteAccountRequest = accounts_pb2.DeleteAccountRequest(id=id) account = stub.Delete(deleteAccountRequest) except Exception as e: print(e) raise return ''
def get(self, id): """Get the details of a single account.""" with grpc.insecure_channel(HOST + ':' + PORT) as channel: stub = accounts_pb2_grpc.AccountServiceStub(channel) try: account = stub.GetByID( accounts_pb2.GetByIDAccountsRequest(id=id)) except Exception as e: print( "Invalid username or password? Or perphaps we couldn't connect?" ) print(e) return False return jsonify(json.loads(MessageToJson(account)))
def get(self): with grpc.insecure_channel(HOST + ':' + PORT) as channel: stub = accounts_pb2_grpc.AccountServiceStub(channel) try: accounts = stub.List( accounts_pb2.ListAccountsRequest(page_size=1, page_token="1")) except Exception as e: print( "Invalid username or password? Or perphaps we couldn't connect?" ) print(e) return False return jsonify(json.loads(MessageToJson(accounts)))
def put(self, id): """Update a specific account.""" params = request.get_json(force=True) email = params.get('email', None) name = params.get('name', None) password = params.get('password', None) with grpc.insecure_channel(HOST + ':' + PORT) as channel: stub = accounts_pb2_grpc.AccountServiceStub(channel) try: account = accounts_pb2.Account(name=name, email=email) updateAccountRequest = accounts_pb2.UpdateAccountRequest( id=id, account=account, password=password) account = stub.Update(updateAccountRequest) except Exception as e: print(e) raise return jsonify(json.loads(MessageToJson(account)))
def post(self): """Signup API endpoint""" params = request.get_json() email = params.get('email', None) name = params.get('name', None) password = params.get('password', None) with grpc.insecure_channel(HOST + ':' + PORT) as channel: stub = accounts_pb2_grpc.AccountServiceStub(channel) try: account = accounts_pb2.Account(name="Leslie Knope", email='*****@*****.**') createAccountRequest = accounts_pb2.CreateAccountRequest( account=account, password='******') account = stub.Create(createAccountRequest) except Exception as e: print(e) raise return jsonify(json.loads(MessageToJson(account)))
def run(): # NOTE(gRPC Python Team): .close() is possible on a channel and should be # used in circumstances in which the with statement does not fit the needs # of the code. with grpc.insecure_channel('0.0.0.0:22222') as channel: stub = accounts_pb2_grpc.AccountServiceStub(channel) # Test authentication. try: response = stub.AuthenticateByEmail(accounts_pb2.AuthenticateByEmailRequest(email='*****@*****.**', password='******')) print("Account ID received: " + response.id) except grpc.RpcError as e: status_code = e.code() if status_code.name == "UNAUTHENTICATED": print("Sorry you are UNAUTHENTICATED") elif status_code.name == "UNAVAILABLE": print("Server is unavailable.") else: print(e) print('-'*20) print("LIST:") # Test the list endpoint. response = stub.List(accounts_pb2.ListAccountsRequest(page_size=1, page_token="1")) for account in response.accounts: print(account) print('-'*20) print("CREATE:") account = accounts_pb2.Account( name="Leslie Knope", email='*****@*****.**' ) createAccountRequest = accounts_pb2.CreateAccountRequest( account=account, password='******' ) # Test the list endpoint. response = stub.Create(createAccountRequest) print(response) print('-'*20) print("LIST:") # Test the list endpoint. response = stub.List(accounts_pb2.ListAccountsRequest(page_size=1, page_token="1")) id_to_update = None for account in response.accounts: print(account) id_to_update = account.id print('-'*20) print("Update:") account = accounts_pb2.Account( name="Andy Dwyr", email='*****@*****.**' ) updateAccountRequest = accounts_pb2.UpdateAccountRequest( id=id_to_update, account=account, password='******', ) # Test the list endpoint. response = stub.Update(updateAccountRequest) print(response) print('-'*20) print("LIST:") # Test the list endpoint. response = stub.List(accounts_pb2.ListAccountsRequest(page_size=1, page_token="1")) id_to_update = None for account in response.accounts: print(account) id_to_update = account.id print('-'*20) print("Delete:") deleteAccountRequest = accounts_pb2.DeleteAccountRequest( id=id_to_update, ) # Test the list endpoint. response = stub.Delete(deleteAccountRequest) print(response) print('-'*20) print("LIST:") # Test the list endpoint. response = stub.List(accounts_pb2.ListAccountsRequest(page_size=1, page_token="1")) id_to_update = None for account in response.accounts: print(account) id_to_update = account.id print('-'*20)