49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
import asyncio
|
|
|
|
from falyx import Falyx
|
|
from falyx.action import ActionFactoryAction, ChainedAction, HTTPAction, SelectionAction
|
|
|
|
# Selection of a post ID to fetch (just an example set)
|
|
post_selector = SelectionAction(
|
|
name="Pick Post ID",
|
|
selections=["1", "2", "3", "4", "5"],
|
|
title="Choose a Post ID to submit",
|
|
prompt_message="Post ID > ",
|
|
show_table=True,
|
|
)
|
|
|
|
|
|
# Factory that builds and executes the actual HTTP POST request
|
|
def build_post_action(post_id) -> HTTPAction:
|
|
print(f"Building HTTPAction for Post ID: {post_id}")
|
|
return HTTPAction(
|
|
name=f"POST to /posts (id={post_id})",
|
|
method="POST",
|
|
url="https://jsonplaceholder.typicode.com/posts",
|
|
json={"title": "foo", "body": "bar", "userId": int(post_id)},
|
|
)
|
|
|
|
|
|
post_factory = ActionFactoryAction(
|
|
name="Build HTTPAction from Post ID",
|
|
factory=build_post_action,
|
|
inject_last_result=True,
|
|
inject_into="post_id",
|
|
preview_kwargs={"post_id": "100"},
|
|
)
|
|
|
|
# Wrap in a ChainedAction
|
|
chain = ChainedAction(
|
|
name="Submit Post Flow",
|
|
actions=[post_selector, post_factory],
|
|
auto_inject=True,
|
|
)
|
|
|
|
flx = Falyx()
|
|
flx.add_command(
|
|
key="S",
|
|
description="Submit a Post",
|
|
action=chain,
|
|
)
|
|
asyncio.run(flx.run())
|