Skip to content

Commit ac107f5

Browse files
committed
frame error message
1 parent 38dafb3 commit ac107f5

6 files changed

Lines changed: 27 additions & 6 deletions

File tree

examples/simple/api/index.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import os
55
import time
66
from flask import Flask, url_for, jsonify
7-
from framelib import frame, message, validate_message_or_mock, validate_message_or_mock_neynar
7+
from framelib import frame, message, validate_message_or_mock, validate_message_or_mock_neynar, error
88

99
app = Flask(__name__)
1010

@@ -36,6 +36,11 @@ def second_page():
3636
msg = message()
3737
print(f'received frame message: {msg}')
3838

39+
if msg.untrustedData.fid == 123:
40+
e = error('user 123 is not allowed!')
41+
print(e)
42+
return e
43+
3944
# validate frame message with neynar
4045
api_key = os.getenv('NEYNAR_KEY')
4146
msg_neynar = validate_message_or_mock_neynar(msg, api_key, mock=_vercel_local())

examples/simple/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# requirements.txt
2-
framelib~=0.0.4b3
2+
framelib~=0.0.4b4
33
Flask~=3.0.1
44
pydantic

framelib/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
framelib module
33
"""
44

5-
from .frame import frame, message
5+
from .frame import frame, message, error
66
from .hub import validate_message, validate_message_or_mock
77
from .models import FrameMessage, ValidatedMessage, User
88
from .warpcast import get_user

framelib/frame.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
import json
77
from importlib import resources
88
from typing import Literal
9-
from flask import render_template_string, request, make_response, Response
9+
from flask import render_template_string, request, make_response, jsonify, Response
1010

1111
# src
12-
from .models import FrameMessage
12+
from .models import FrameMessage, FrameError
1313

1414
# enum types
1515
ButtonActions = Literal['post', 'post_redirect', 'mint', 'link', 'tx']
@@ -63,3 +63,12 @@ def message() -> FrameMessage:
6363
body = json.loads(request.data)
6464
msg = FrameMessage(**body)
6565
return msg
66+
67+
68+
def error(text: str, status: int = 400) -> Response:
69+
if len(text) > 90:
70+
print('warning: error message exceeds 90 characters')
71+
e = FrameError(message=text)
72+
res = jsonify(e.model_dump())
73+
res.status_code = status
74+
return res

framelib/models.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class FrameAction(BaseModel):
2020
inputText: Optional[str] = None
2121
state: Optional[str] = None
2222
transactionId: Optional[str] = None
23+
address: Optional[str] = None
2324
castId: CastId
2425

2526

@@ -55,6 +56,12 @@ class Transaction(BaseModel):
5556
params: EthTransactionParams
5657

5758

59+
# ---- frame error ----
60+
61+
class FrameError(BaseModel):
62+
message: str
63+
64+
5865
# ---- hub ----
5966

6067
class ValidatedData(BaseModel):

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setuptools.setup(
77
name='framelib',
8-
version='0.0.4b3',
8+
version='0.0.4b4',
99
author='Devin A. Conley',
1010
author_email='devinaconley@gmail.com',
1111
description='lightweight library for building farcaster frames using python and flask',

0 commit comments

Comments
 (0)