@@ -72,18 +72,14 @@ def page_hello():
7272
7373@app .route ('/signature' , methods = ['POST' ])
7474def page_signature ():
75- # parse frame message
76- msg = message ()
77- print (f'received frame message: { msg } ' )
78-
79- # validate frame message with neynar
75+ # parse and validate frame message
8076 api_key = os .getenv ('NEYNAR_KEY' )
81- msg_neynar = validate_message_or_mock_neynar (msg , api_key , mock = _vercel_local ())
82- print (f'validated frame message, fid : { msg_neynar . interactor . fid } , button: { msg_neynar . tapped_button } ' )
77+ msg = validate_message_or_mock_neynar (message () , api_key , mock = _vercel_local ())
78+ print (f'verified frame message: { msg } ' )
8379
8480 return frame (
8581 image = url_for ('render_image' , title = 'signature' , msg = f'sign an eip-712 message!' , _external = True ),
86- button1 = 'back \U0001F519 ' ,
82+ button1 = 'hello \U0001F519 ' ,
8783 button1_target = url_for ('page_hello' , _external = True ),
8884 post_url = url_for ('handle_signature' , _external = True ),
8985 input_text = f'enter a message to sign' ,
@@ -110,20 +106,21 @@ class Message(BaseModel):
110106def handle_signature ():
111107 msg = message ()
112108 print (msg )
109+
113110 if msg .untrustedData .transactionId is not None :
114111 sig = msg .untrustedData .transactionId
115- print (f'received signature: { sig } ' )
116- # TODO verify
112+ print (f'received eip-712 signature: { sig } ' )
113+ # note: verify signature here
114+
117115 return frame (
118116 image = url_for ('render_image' , title = 'signature' , msg = 'thanks for signing.' , _external = True ),
119- button1 = 'back \U0001F519 ' ,
117+ button1 = 'hello \U0001F519 ' ,
120118 button1_target = url_for ('page_hello' , _external = True ),
121119 post_url = url_for ('handle_signature' , _external = True ),
122120 button2 = 'puzzle \U000027A1 ' ,
123121 button2_target = url_for ('page_puzzle' , _external = True )
124122 )
125123
126- # validate
127124 api_key = os .getenv ('NEYNAR_KEY' )
128125 msg_neynar = validate_message_or_mock_neynar (msg , api_key , mock = _vercel_local ())
129126
@@ -145,22 +142,42 @@ def page_puzzle():
145142 print (f'received frame message: { msg } ' )
146143
147144 # check input
148- if msg .untrustedData .buttonIndex == 2 and msg .untrustedData .inputText .lower () != 'build' :
149- return error ('secret is incorrect!' ) # popup message to user
145+ if msg .untrustedData .inputText :
146+ if msg .untrustedData .inputText .lower () != 'build' :
147+ return error ('secret is incorrect!' ) # popup message to user
148+ else :
149+ return frame (
150+ image = url_for ('render_image' , title = 'puzzle' , msg = '[the secret is build]' , _external = True ),
151+ button1 = 'signature \U0001F519 ' ,
152+ post_url = url_for ('page_signature' , _external = True ),
153+ button2 = 'links \U000027A1 ' ,
154+ button2_target = url_for ('page_link' , _external = True )
155+ )
150156
151157 return frame (
152158 image = url_for ('render_image' , title = 'puzzle' , msg = '20 8 5 19 5 3 18 5 20 9 19 2 21 9 12 4' , _external = True ),
153- button1 = 'back \U0001F519 ' ,
154- button1_target = url_for ('page_hello ' , _external = True ),
159+ button1 = 'signature \U0001F519 ' ,
160+ button1_target = url_for ('page_signature ' , _external = True ),
155161 post_url = url_for ('page_puzzle' , _external = True ),
156162 input_text = f'enter the secret' ,
157163 button2 = '\U0001F512 ' ,
158- button2_target = url_for ('handle_signature' , _external = True ),
159- button3 = 'puzzle \U000027A1 ' ,
164+ button3 = 'links \U000027A1 ' ,
160165 button3_target = url_for ('page_link' , _external = True )
161166 )
162167
163168
169+ @app .route ('/link' , methods = ['POST' ])
170+ def page_link ():
171+ return frame (
172+ image = _github_preview_image (),
173+ button1 = 'puzzle \U0001F519 ' ,
174+ post_url = url_for ('page_puzzle' , _external = True ),
175+ button2 = 'github \U0001F680 ' ,
176+ button2_action = 'link' ,
177+ button2_target = 'https://github.com/devinaconley/python-framelib'
178+ )
179+
180+
164181@app .route ('/image' )
165182def render_image ():
166183 title = request .args .get ('title' , default = '' )
0 commit comments