Skip to content
This repository was archived by the owner on May 23, 2023. It is now read-only.

Commit 0ad9c67

Browse files
Pequenos ajustes em helpers;
Ajustes em scripts de migrations;
1 parent cd9a926 commit 0ad9c67

File tree

13 files changed

+287
-100
lines changed

13 files changed

+287
-100
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import ast
2+
import json
3+
4+
from lambda_app import helper
5+
from lambda_app.decorators import SQSEvent
6+
from lambda_app.decorators.events import SQSRecord
7+
from lambda_app.logging import get_logger
8+
9+
10+
def read_event(record, logger=None):
11+
if logger is None:
12+
logger = get_logger()
13+
logger.info('try to reading event form record: {}'.format(record))
14+
logger.info('Getting type of data: {}'.format(type(record)))
15+
try:
16+
logger.info('dump: {}'.format(json.dumps(record)))
17+
except Exception as err:
18+
logger.error(err)
19+
event_body = None
20+
try:
21+
if isinstance(record, dict):
22+
try:
23+
event_body = json.loads(record['body'])
24+
except Exception as err:
25+
logger.error(err)
26+
unescaped_str = ast.literal_eval(record['body'])
27+
event_body = json.loads(unescaped_str)
28+
elif isinstance(record, str):
29+
record = json.loads(record)
30+
event_body = json.loads(record.body)
31+
elif isinstance(record.body, str):
32+
event_body = json.loads(record.body)
33+
else:
34+
event_body = record.body
35+
except Exception as err:
36+
logger.error(err)
37+
logger.info('event_body: {}'.format(event_body))
38+
return event_body
39+
40+
41+
def get_records_from_sqs_event(sqs_event, logger=None):
42+
if logger is None:
43+
logger = get_logger()
44+
records = []
45+
try:
46+
if isinstance(sqs_event, SQSEvent):
47+
logger.info("SQSEvent instance")
48+
if not helper.empty(sqs_event.to_dict()):
49+
try:
50+
sqs_event_dict = sqs_event.to_dict()
51+
if 'Records' in sqs_event_dict:
52+
sqs_event_dict = sqs_event_dict['Records']
53+
for record in sqs_event_dict:
54+
records.append(record)
55+
except Exception as err:
56+
logger.error(err)
57+
records.append(sqs_event.to_dict())
58+
elif isinstance(sqs_event, SQSRecord):
59+
logger.info("SQSRecord instance")
60+
if not helper.empty(sqs_event.to_dict()):
61+
records.append(sqs_event)
62+
except Exception as err:
63+
logger.error(err)
64+
if isinstance(sqs_event, SQSEvent) or isinstance(sqs_event, SQSRecord):
65+
logger.error(sqs_event.__dict__)
66+
else:
67+
try:
68+
logger.error(json.dumps(sqs_event))
69+
except Exception as err:
70+
logger.error(err)
71+
logger.error(str(sqs_event))
72+
return records

examples/lambda_api/lambda_app/helper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def to_dict(obj, force_str=False):
7777

7878

7979
def to_json(obj):
80-
return json.dumps(obj)
80+
return json.dumps(obj, default=str)
8181

8282

8383
def debug_mode():

examples/lambda_api/public/swagger/openapi.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ paths:
224224
$ref: '#/components/schemas/EventCreateErrorResponse'
225225
summary: Create event
226226
servers:
227-
- description: Development server
228-
url: http://localhost:5000
229-
- description: Development server
227+
- description: null
228+
url: null
229+
- description: 'Development server '
230230
url: http://localhost:5000

examples/lambda_api/scripts/boot-db.sh

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,30 @@
1-
python3 -m venv venv
2-
source ./venv/bin/activate
3-
bash $1
1+
#!/bin/bash
2+
current_path=$(basename $(pwd))
3+
current_filename=$(basename -- "$0")
4+
current_filename_path=$0
5+
# echo $current_filename_path
6+
current_filename_path="${current_filename_path/$current_filename/''}"
7+
# echo $current_filename_path
8+
current_filename_path="${current_filename_path/scripts\//''}"
9+
# echo $current_filename_path
10+
current_filename_path_basename=$(basename -- "$current_filename_path")
11+
12+
echo "current_path: $current_path"
13+
echo "current_filename: $current_filename"
14+
echo "current_filename_path: $current_filename_path"
15+
echo "current_filename_path_basename: $current_filename_path_basename"
16+
17+
if test -f "${current_filename_path}venv/bin/activate"; then
18+
python3 -m venv venv
19+
source ${current_filename_path}venv/bin/activate
20+
else
21+
echo "Unable to find ${current_filename_path}venv/bin/activate"
22+
exit 1
23+
fi
24+
25+
if test -f "$1"; then
26+
bash $1
27+
else
28+
echo "Unable to find $1"
29+
exit 1
30+
fi

examples/lambda_api/scripts/venv.sh

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,30 @@
1-
python3 -m venv venv
2-
source ./venv/bin/activate
1+
#!/bin/bash
2+
current_path=$(basename $(pwd))
3+
current_filename=$(basename -- "$0")
4+
current_filename_path=$0
5+
# echo $current_filename_path
6+
current_filename_path="${current_filename_path/$current_filename/''}"
7+
# echo $current_filename_path
8+
current_filename_path="${current_filename_path/scripts\//''}"
9+
# echo $current_filename_path
10+
current_filename_path_basename=$(basename -- "$current_filename_path")
311

4-
if test -f "./scripts/install.sh"; then
5-
bash ./scripts/install.sh
12+
echo "current_path: $current_path"
13+
echo "current_filename: $current_filename"
14+
echo "current_filename_path: $current_filename_path"
15+
echo "current_filename_path_basename: $current_filename_path_basename"
16+
17+
18+
if test -f "${current_filename_path}venv/bin/activate"; then
19+
python3 -m venv venv
20+
source ${current_filename_path}venv/bin/activate
21+
else
22+
echo "Unable to find ${current_filename_path}venv/bin/activate"
23+
exit 1
24+
fi
25+
26+
if test -f "${current_filename_path}scripts/install.sh"; then
27+
bash ${current_filename_path}scripts/install.sh
628
fi
729

830
if test -f "./scripts/tests/install-tests.sh"; then

examples/lambda_api/server.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from gevent.pywsgi import WSGIServer
2-
from app import app
2+
from app import APP
33

44
# Não remover do projeto, muito útil para executar o debug via IDE Pycharm
5-
http_server = WSGIServer(('0.0.0.0', 5000), app)
5+
http_server = WSGIServer(('0.0.0.0', 5000), APP)
66
http_server.serve_forever()
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import ast
2+
import json
3+
4+
from lambda_app import helper
5+
from lambda_app.decorators import SQSEvent
6+
from lambda_app.decorators.events import SQSRecord
7+
from lambda_app.logging import get_logger
8+
9+
10+
def read_event(record, logger=None):
11+
if logger is None:
12+
logger = get_logger()
13+
logger.info('try to reading event form record: {}'.format(record))
14+
logger.info('Getting type of data: {}'.format(type(record)))
15+
try:
16+
logger.info('dump: {}'.format(json.dumps(record)))
17+
except Exception as err:
18+
logger.error(err)
19+
event_body = None
20+
try:
21+
if isinstance(record, dict):
22+
try:
23+
event_body = json.loads(record['body'])
24+
except Exception as err:
25+
logger.error(err)
26+
unescaped_str = ast.literal_eval(record['body'])
27+
event_body = json.loads(unescaped_str)
28+
elif isinstance(record, str):
29+
record = json.loads(record)
30+
event_body = json.loads(record.body)
31+
elif isinstance(record.body, str):
32+
event_body = json.loads(record.body)
33+
else:
34+
event_body = record.body
35+
except Exception as err:
36+
logger.error(err)
37+
logger.info('event_body: {}'.format(event_body))
38+
return event_body
39+
40+
41+
def get_records_from_sqs_event(sqs_event, logger=None):
42+
if logger is None:
43+
logger = get_logger()
44+
records = []
45+
try:
46+
if isinstance(sqs_event, SQSEvent):
47+
logger.info("SQSEvent instance")
48+
if not helper.empty(sqs_event.to_dict()):
49+
try:
50+
sqs_event_dict = sqs_event.to_dict()
51+
if 'Records' in sqs_event_dict:
52+
sqs_event_dict = sqs_event_dict['Records']
53+
for record in sqs_event_dict:
54+
records.append(record)
55+
except Exception as err:
56+
logger.error(err)
57+
records.append(sqs_event.to_dict())
58+
elif isinstance(sqs_event, SQSRecord):
59+
logger.info("SQSRecord instance")
60+
if not helper.empty(sqs_event.to_dict()):
61+
records.append(sqs_event)
62+
except Exception as err:
63+
logger.error(err)
64+
if isinstance(sqs_event, SQSEvent) or isinstance(sqs_event, SQSRecord):
65+
logger.error(sqs_event.__dict__)
66+
else:
67+
try:
68+
logger.error(json.dumps(sqs_event))
69+
except Exception as err:
70+
logger.error(err)
71+
logger.error(str(sqs_event))
72+
return records

examples/lambda_sqs/lambda_app/helper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def to_dict(obj, force_str=False):
7777

7878

7979
def to_json(obj):
80-
return json.dumps(obj)
80+
return json.dumps(obj, default=str)
8181

8282

8383
def debug_mode():

examples/lambda_sqs/lambda_app/services/v1/carrier_notifier_service.py

Lines changed: 4 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from lambda_app.decorators import SQSEvent
66
from lambda_app.decorators.events import SQSRecord
77
from lambda_app.events.tracker import EventTracker
8+
from lambda_app.events_helper import get_records_from_sqs_event, read_event
89
from lambda_app.helper import generate_hash
910
from lambda_app.logging import get_logger
1011
from lambda_app.repositories.mysql.ocoren_repository import OcorenRepository
@@ -31,13 +32,13 @@ def process(self, sqs_event):
3132

3233
event_tracker = EventTracker(self.logger)
3334
event_hash = None
34-
# todo extrair essa logica daqui, o servico nao tem que fazer isso
35-
records = self.get_records_from_sqs_event(sqs_event)
35+
36+
records = get_records_from_sqs_event(sqs_event, self.logger)
3637
if records is not None:
3738
process_counter = 0
3839
for record in records:
3940
process_counter += 1
40-
event = self._read_event(record)
41+
event = read_event(record, self.logger)
4142
if event is None:
4243
raise Exception('Event is None')
4344
event_hash = event['hash'] if 'hash' in event else generate_hash(event)
@@ -73,62 +74,3 @@ def process(self, sqs_event):
7374
event_tracker.track(event_hash, {'result': result})
7475
self.logger.info('Finishing the process')
7576
return result
76-
77-
def _read_event(self, record):
78-
self.logger.info('try to reading event form record: {}'.format(record))
79-
self.logger.info('Getting type of data: {}'.format(type(record)))
80-
try:
81-
self.logger.info('dump: {}'.format(json.dumps(record)))
82-
except Exception as err:
83-
self.logger.error(err)
84-
event_body = None
85-
try:
86-
if isinstance(record, dict):
87-
try:
88-
event_body = json.loads(record['body'])
89-
except Exception as err:
90-
self.logger.error(err)
91-
unescaped_str = ast.literal_eval(record['body'])
92-
event_body = json.loads(unescaped_str)
93-
elif isinstance(record, str):
94-
record = json.loads(record)
95-
event_body = json.loads(record.body)
96-
elif isinstance(record.body, str):
97-
event_body = json.loads(record.body)
98-
else:
99-
event_body = record.body
100-
except Exception as err:
101-
self.logger.error(err)
102-
self.logger.info('event_body: {}'.format(event_body))
103-
return event_body
104-
105-
def get_records_from_sqs_event(self, sqs_event):
106-
records = []
107-
try:
108-
if isinstance(sqs_event, SQSEvent):
109-
self.logger.info("SQSEvent instance")
110-
if not helper.empty(sqs_event.to_dict()):
111-
try:
112-
sqs_event_dict = sqs_event.to_dict()
113-
if 'Records' in sqs_event_dict:
114-
sqs_event_dict = sqs_event_dict['Records']
115-
for record in sqs_event_dict:
116-
records.append(record)
117-
except Exception as err:
118-
self.logger.error(err)
119-
records.append(sqs_event.to_dict())
120-
elif isinstance(sqs_event, SQSRecord):
121-
self.logger.info("SQSRecord instance")
122-
if not helper.empty(sqs_event.to_dict()):
123-
records.append(sqs_event)
124-
except Exception as err:
125-
self.logger.error(err)
126-
if isinstance(sqs_event, SQSEvent) or isinstance(sqs_event, SQSRecord):
127-
self.logger.error(sqs_event.__dict__)
128-
else:
129-
try:
130-
self.logger.error(json.dumps(sqs_event))
131-
except Exception as err:
132-
self.logger.error(err)
133-
self.logger.error(str(sqs_event))
134-
return records

0 commit comments

Comments
 (0)