@@ -21,13 +21,20 @@ def token():
2121
2222@app .route ("/message/batch" , methods = ["POST" ])
2323def message_batches ():
24- json_data = request .json
24+ valid_headers , headers_error_message = verify_headers_for_consumers (
25+ dict (request .headers )
26+ )
2527
26- messages = populate_message_ids (json_data ["data" ]["attributes" ]["messages" ])
28+ if not valid_headers :
29+ return json .dumps ({"status" : "failed" , "error" : headers_error_message }), 400
30+
31+ json_data = request .json
2732
2833 if not validate_with_schema (json_data ):
2934 return json .dumps ({"error" : "Invalid body" }), 422
3035
36+ messages = populate_message_ids (json_data ["data" ]["attributes" ]["messages" ])
37+
3138 return json .dumps (
3239 {
3340 "data" : {
@@ -66,6 +73,20 @@ def validate_with_schema(data: dict):
6673 return False , str (e )
6774
6875
76+ def verify_headers_for_consumers (headers : dict ) -> tuple [bool , str ]:
77+ lc_headers = header_keys_to_lower (headers )
78+ if lc_headers .get ("authorization" ) is None :
79+ return False , "Missing Authorization header"
80+ if lc_headers .get ("x-consumer-key" ) is None :
81+ return False , "Missing Consumer key header"
82+
83+ return True , ""
84+
85+
86+ def header_keys_to_lower (headers : dict ) -> dict :
87+ return {k .lower (): v for k , v in headers .items ()}
88+
89+
6990def populate_message_ids (messages : list [dict ]) -> list [dict ]:
7091 for message in messages :
7192 message ["id" ] = uid (27 ) if not message .get ("id" ) else message ["id" ]
0 commit comments