1+ import json_log_formatter
2+ from ddtrace import tracer
3+ import logging
14import requests
25import random
36import time
1114from bootstrap import create_app
1215from models import Advertisement , db
1316
14- from ddtrace import patch ; patch (logging = True )
15- import logging
16- from ddtrace import tracer
17- import json_log_formatter
17+ from ddtrace import patch
18+ patch (logging = True )
1819
1920formatter = json_log_formatter .VerboseJSONFormatter ()
2021json_handler = logging .StreamHandler (sys .stdout )
2728CORS (app )
2829app .config ['SQLALCHEMY_TRACK_MODIFICATIONS' ] = False
2930
30- ## Add filter to remove color-encoding from logs e.g. "[37mGET / HTTP/1.1 [0m" 200 -
31+ # Add filter to remove color-encoding from logs e.g. "[37mGET / HTTP/1.1 [0m" 200 -
32+
33+
3134class NoEscape (logging .Filter ):
3235 def __init__ (self ):
3336 self .regex = re .compile (r'(\x9B|\x1B\[)[0-?]*[ -\/]*[@-~]' )
37+
3438 def strip_esc (self , s ):
35- try : # string-like
36- return self .regex .sub ('' ,s )
37- except : # non-string-like
39+ try : # string-like
40+ return self .regex .sub ('' , s )
41+ except : # non-string-like
3842 return s
43+
3944 def filter (self , record ):
4045 record .msg = self .strip_esc (record .msg )
4146 if type (record .args ) is tuple :
4247 record .args = tuple (map (self .strip_esc , record .args ))
4348 return 1
4449
45- remove_color_filter = NoEscape ()
50+
51+ remove_color_filter = NoEscape ()
4652logger .addFilter (remove_color_filter )
4753
54+
4855@tracer .wrap ()
4956@app .route ('/' )
5057def hello ():
5158 logger .info ("home url for ads called" )
5259 return Response ({'Hello from Advertisements!' : 'world' }, mimetype = 'application/json' )
5360
61+
5462@tracer .wrap ()
5563@app .route ('/banners/<path:banner>' )
5664def banner_image (banner ):
5765 logger .info (f"attempting to grab banner at { banner } " )
5866 return send_from_directory ('ads' , banner )
5967
68+
6069@tracer .wrap ()
6170@app .route ('/weighted-banners/<float:weight>' )
6271def weighted_image (weight ):
@@ -66,6 +75,7 @@ def weighted_image(weight):
6675 if ad .weight < weight :
6776 return jsonify (ad .serialize ())
6877
78+
6979@tracer .wrap ()
7080@app .route ('/ads' , methods = ['GET' , 'POST' ])
7181def status ():
@@ -90,29 +100,29 @@ def status():
90100 err = jsonify ({'error' : 'Internal Server Error' })
91101 err .status_code = 500
92102 return err
93-
103+
94104 else :
95105
96- try :
97- advertisements = Advertisement .query .all ()
98- logger .info (f"Total advertisements available: { len (advertisements )} " )
99- return jsonify ([b .serialize () for b in advertisements ])
106+ try :
107+ advertisements = Advertisement .query .all ()
108+ logger .info (
109+ f"Total advertisements available: { len (advertisements )} " )
110+ return jsonify ([b .serialize () for b in advertisements ])
100111
101- except :
102- logger .error ("An error occurred while getting ad." )
103- err = jsonify ({'error' : 'Internal Server Error' })
104- err .status_code = 500
105- return err
106-
112+ except :
113+ logger .error ("An error occurred while getting ad." )
114+ err = jsonify ({'error' : 'Internal Server Error' })
115+ err .status_code = 500
116+ return err
107117
108118 elif flask_request .method == 'POST' :
109119
110120 try :
111121 # create a new advertisement with random name and value
112122 advertisements_count = len (Advertisement .query .all ())
113123 new_advertisement = Advertisement ('Advertisement ' + str (advertisements_count + 1 ),
114- '/' ,
115- random .randint (10 ,500 ))
124+ '/' ,
125+ random .randint (10 , 500 ))
116126 logger .info (f"Adding advertisement { new_advertisement } " )
117127 db .session .add (new_advertisement )
118128 db .session .commit ()
@@ -130,4 +140,4 @@ def status():
130140 else :
131141 err = jsonify ({'error' : 'Invalid request method' })
132142 err .status_code = 405
133- return err
143+ return err
0 commit comments