@@ -1060,91 +1060,105 @@ def create_item(request, body: CreateItemBody, query: CreateItemQueryParamsParam
10601060
10611061# ===== Server-Sent Events (SSE) Routes =====
10621062
1063+
10631064@app .get ("/sse/basic" )
10641065def sse_basic (request ):
10651066 """Basic SSE endpoint that sends 3 messages"""
1067+
10661068 def event_generator ():
10671069 for i in range (3 ):
10681070 yield f"data: Test message { i } \n \n "
1071+
10691072 return sse_response (event_generator ())
10701073
10711074
10721075@app .get ("/sse/formatted" )
10731076def sse_formatted (request ):
10741077 """SSE endpoint using sse_message formatter"""
1078+
10751079 def event_generator ():
10761080 for i in range (3 ):
10771081 yield sse_message (f"Formatted message { i } " , event = "test" , id = str (i ))
1082+
10781083 return sse_response (event_generator ())
10791084
10801085
10811086@app .get ("/sse/json" )
10821087def sse_json (request ):
10831088 """SSE endpoint that sends JSON data"""
10841089 import json
1090+
10851091 def event_generator ():
10861092 for i in range (3 ):
10871093 data = {"id" : i , "message" : f"JSON message { i } " , "type" : "test" }
10881094 yield f"data: { json .dumps (data )} \n \n "
1095+
10891096 return sse_response (event_generator ())
10901097
10911098
10921099@app .get ("/sse/named_events" )
10931100def sse_named_events (request ):
10941101 """SSE endpoint with different event types"""
1102+
10951103 def event_generator ():
1096- events = [
1097- ("start" , "Test started" ),
1098- ("progress" , "Test in progress" ),
1099- ("end" , "Test completed" )
1100- ]
1104+ events = [("start" , "Test started" ), ("progress" , "Test in progress" ), ("end" , "Test completed" )]
11011105 for event_type , message in events :
11021106 yield sse_message (message , event = event_type )
1107+
11031108 return sse_response (event_generator ())
11041109
11051110
11061111@app .get ("/sse/async" )
11071112def sse_async (request ):
11081113 """Async SSE endpoint (sync implementation)"""
1114+
11091115 def event_generator ():
11101116 # Simple generator for testing
11111117 for i in range (3 ):
11121118 yield f"data: Async message { i } \n \n "
1113-
1119+
11141120 return sse_response (event_generator ())
11151121
11161122
11171123@app .get ("/sse/single" )
11181124def sse_single (request ):
11191125 """SSE endpoint that sends a single message and closes"""
1126+
11201127 def event_generator ():
11211128 yield "data: Single message\n \n "
1129+
11221130 return sse_response (event_generator ())
11231131
11241132
11251133@app .get ("/sse/empty" )
11261134def sse_empty (request ):
11271135 """SSE endpoint that sends no messages"""
1136+
11281137 def event_generator ():
11291138 return
11301139 yield # This will never be reached
1140+
11311141 return sse_response (event_generator ())
11321142
11331143
11341144@app .get ("/sse/with_headers" )
11351145def sse_with_headers (request ):
11361146 """SSE endpoint with custom headers"""
11371147 headers = Headers ({"X-Custom-Header" : "custom-value" })
1148+
11381149 def event_generator ():
11391150 yield "data: Message with custom headers\n \n "
1151+
11401152 return sse_response (event_generator (), headers = headers )
11411153
11421154
11431155@app .get ("/sse/status_code" )
11441156def sse_status_code (request ):
11451157 """SSE endpoint with custom status code"""
1158+
11461159 def event_generator ():
11471160 yield "data: Message with custom status\n \n "
1161+
11481162 return sse_response (event_generator (), status_code = 201 )
11491163
11501164
@@ -1170,7 +1184,7 @@ def authenticate(self, request: Request) -> Optional[Identity]:
11701184 return None
11711185
11721186 app .configure_authentication (BasicAuthHandler (token_getter = BearerGetter ()))
1173-
1187+
11741188 # Read port from environment variable if set, otherwise default to 8080
11751189 port = int (os .getenv ("ROBYN_PORT" , "8080" ))
11761190 app .start (port = port , _check_port = False )
0 commit comments