I am writing APIs in Flask RESTful framework. For every end point, I need to do a check which are same in structure but process inside are different. Here is the snippet.
def get_all_users():
users = [{"name":"John","dob":"12-10-1990"}, {"name":"David","dob":"25-03-1995"}, {"name":"Maria","dob":"30-02-1998"}]
return users
Endpoint 1:
class ClassOne(Resource):
def get(self):
# Get required info from body
res_body = request.json
name = res_body.get('name', None)
item_list = []
if name is None:
users = get_all_users()
for user in users:
item_list.append(user['name'])
return {"nameList":item_list}
else:
user = get_user_data(user_info=name)
if user:
name = user['name']
return {"Message":"User {} exists!".format(name)}
else:
return {"Error":"User does not exist"}
return "output based on the above process"
Endpoint 2:
class ClassTwo(Resource):
def get(self):
# Get required info from body
res_body = request.json
name = res_body.get('name', None)
item_list = []
if name is None:
users = get_all_users()
for user in users:
item_list.append(user['dob'])
return {"nameList":item_list}
else:
user = get_user_data(user_info=name)
if user:
dob = user['dob']
return {"Message":"User dob is {}".format(dob)}
else:
return {"Error":"User does not exist"}
return "output based on the above process"
What is the best way to write these codes by avoiding code duplication.