-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDynamoDB_handler.py
More file actions
61 lines (50 loc) · 2.31 KB
/
Copy pathDynamoDB_handler.py
File metadata and controls
61 lines (50 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import json
import boto3
import base64
import urllib.parse
# Initialize a DynamoDB client
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('UserPreferences')
def lambda_handler(event, context):
try:
print("Received event:", event) # Log the entire incoming event for debugging
# Decode the incoming data
body = base64.b64decode(event['body']) if event.get('isBase64Encoded', False) else event['body']
# Parse the URL-encoded data
parsed_body = urllib.parse.parse_qs(body.decode('utf-8'), keep_blank_values=True)
# Log the parsed body to see structured data
print("Parsed body:", json.dumps(parsed_body))
# Adjust the field names to correctly map the descriptive form field names
druh_zakazek = ', '.join(parsed_body.get("Vyberte druh zakázek:", []))
klicova_slova = ', '.join(parsed_body.get("Vyhledávaná klíčová slova (Max.15 klíčových slov):", []))
frekvence_zasilani = ', '.join(parsed_body.get("Časová frekvence odesílání:", []))
email_pro_zasilani_vysledku = ', '.join(parsed_body.get("Emailová adresa pro zasílání výsledků:", []))
popis_firmy = ', '.join(parsed_body.get("Popis vaší firmy:", []))
user_email = parsed_body.get("user_email", [""])[0]
user_id = parsed_body.get("user_id", [""])[0]
user_role = parsed_body.get("user_role", [""])[0]
# Write to the DynamoDB table
response = table.put_item(
Item={
'user_id': user_id,
'user_email': user_email,
'user_role': user_role,
'preferences': {
'druh_zakazek': druh_zakazek,
'klicova_slova': klicova_slova,
'frekvence_zasilani': frekvence_zasilani,
'email_pro_zasilani_vysledku': email_pro_zasilani_vysledku,
'popis_firmy': popis_firmy
}
}
)
return {
'statusCode': 200,
'body': json.dumps('User preferences updated successfully')
}
except Exception as e:
print(f"Error processing lambda function: {str(e)}")
return {
'statusCode': 500,
'body': json.dumps('Error processing data')
}