1
+ # Copyright (c) Microsoft Corporation. All rights reserved.
2
+ # Licensed under the MIT License.
3
+ import json
4
+
5
+ import azure .functions as func
6
+ import azurefunctions .extensions .bindings .eventhub as eh
7
+
8
+ app = func .FunctionApp (http_auth_level = func .AuthLevel .ANONYMOUS )
9
+
10
+ # An HttpTrigger to generating EventHub event from EventHub Output Binding
11
+ @app .function_name (name = "eventhub_output" )
12
+ @app .route (route = "eventhub_output" )
13
+ @app .event_hub_output (arg_name = "event" ,
14
+ event_hub_name = "python-worker-ci-eventhub-one" ,
15
+ connection = "AzureWebJobsEventHubConnectionString" )
16
+ def eventhub_output (req : func .HttpRequest , event : func .Out [str ]) -> str :
17
+ event .set (req .get_body ().decode ('utf-8' ))
18
+ return 'OK'
19
+
20
+ # This is an actual EventHub trigger which will convert the event data
21
+ # into a storage blob.
22
+ @app .function_name (name = "eventhub_trigger" )
23
+ @app .event_hub_message_trigger (arg_name = "event" ,
24
+ event_hub_name = "python-worker-ci-eventhub-one" ,
25
+ connection = "AzureWebJobsEventHubConnectionString"
26
+ )
27
+ @app .blob_output (arg_name = "$return" ,
28
+ path = "python-worker-tests/test-eventhub-triggered.txt" ,
29
+ connection = "AzureWebJobsStorage" )
30
+ def eventhub_trigger (event : eh .EventData ) -> bytes :
31
+ return bytes (event .body_as_str ())
32
+
33
+ # Retrieve the event data from storage blob and return it as Http response
34
+ @app .function_name (name = "get_eventhub_triggered" )
35
+ @app .route (route = "get_eventhub_triggered" )
36
+ @app .blob_input (arg_name = "file" ,
37
+ path = "python-worker-tests/test-eventhub-triggered.txt" ,
38
+ connection = "AzureWebJobsStorage" )
39
+ def get_eventhub_triggered (req : func .HttpRequest ,
40
+ file : func .InputStream ) -> str :
41
+ return file .read ().decode ('utf-8' )
42
+
43
+ @app .event_hub_message_trigger (
44
+ arg_name = "event" ,
45
+ event_hub_name = "python-worker-ci-eventhub-one" ,
46
+ connection = "AzureWebJobsEventHubConnectionString"
47
+ )
48
+ def eventhub_trigger (event : eh .EventHubData ) -> str :
49
+ return event .body_as_str ()
0 commit comments