update readme, add success and failure case instructions
This commit is contained in:
parent
a9bd5ba201
commit
a62b069373
3 changed files with 22 additions and 8 deletions
14
README.md
14
README.md
|
@ -6,10 +6,18 @@ data upon initial return from Stripe, but if you manually enter the URL, it work
|
||||||
|
|
||||||
# How to run
|
# How to run
|
||||||
|
|
||||||
First, run `cargo run --bin=stripe &`; this will start the "Stripe" service listening on
|
In order to demonstrate the issue, the "stripe" service must be run on a different origin than the
|
||||||
localhost:4001. Then, run `cargo run --bin=princess` and visit http://localhost:4000/ and click the
|
"princess" service. The following will set that up:
|
||||||
|
|
||||||
|
`cargo run --bin=stripe & cargo run --bin=princess -- http://$(hostname):4001/`
|
||||||
|
|
||||||
|
Now visit http://localhost:4000/ and click the
|
||||||
buttons. At the end, you'll end up at a page at http://localhost:4000/success and see the test data
|
buttons. At the end, you'll end up at a page at http://localhost:4000/success and see the test data
|
||||||
inserted in the initial get of `/`.
|
inserted in the initial get of `/`, or a message indicating failure. To see it succeed, run:
|
||||||
|
|
||||||
|
`cargo run --bin=stripe & cargo run --bin=princess`
|
||||||
|
|
||||||
|
and follow the buttons starting from http://localhost:4000/ again to the end.
|
||||||
|
|
||||||
# Why is it called "princess"?
|
# Why is it called "princess"?
|
||||||
|
|
||||||
|
|
|
@ -51,19 +51,25 @@ pub async fn post_slash(session: Session) -> impl IntoResponse {
|
||||||
session.insert(&SIGNUP_KEY, user).await.unwrap();
|
session.insert(&SIGNUP_KEY, user).await.unwrap();
|
||||||
session.save().await.unwrap();
|
session.save().await.unwrap();
|
||||||
|
|
||||||
Redirect::to("http://localhost:4001/").into_response()
|
let mut args = std::env::args();
|
||||||
|
args.next();
|
||||||
|
let stripe = args.next().unwrap_or("http://localhost:4001/".into());
|
||||||
|
|
||||||
|
Redirect::to(&stripe).into_response()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn success(session: Session) -> impl IntoResponse {
|
pub async fn success(session: Session) -> impl IntoResponse {
|
||||||
session.load().await.unwrap();
|
session.load().await.unwrap();
|
||||||
dbg!("loaded the session");
|
|
||||||
let user = if let Some(user) = session.get::<TestData>(&SIGNUP_KEY).await.unwrap_or(None) {
|
let user = if let Some(user) = session.get::<TestData>(&SIGNUP_KEY).await.unwrap_or(None) {
|
||||||
dbg!("loaded test data");
|
|
||||||
user
|
user
|
||||||
} else {
|
} else {
|
||||||
dbg!("could not load data from session");
|
|
||||||
TestData::default()
|
TestData::default()
|
||||||
};
|
};
|
||||||
|
let user = if user == TestData::default() {
|
||||||
|
"Default TestData, session fetch failed.".to_string()
|
||||||
|
} else {
|
||||||
|
format!("Successful fetch from session: {user:?}")
|
||||||
|
};
|
||||||
let html: Html<_> = format!("<p>Check out this test data:</p><pre>{user:?}</pre>").into();
|
let html: Html<_> = format!("<p>Check out this test data:</p><pre>{user:?}</pre>").into();
|
||||||
html.into_response()
|
html.into_response()
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ async fn main() {
|
||||||
let app = Router::new()
|
let app = Router::new()
|
||||||
.route("/", get(get_slash).post(post_slash))
|
.route("/", get(get_slash).post(post_slash))
|
||||||
.into_make_service();
|
.into_make_service();
|
||||||
let addr = SocketAddr::from(([127, 0, 0, 1], 4001));
|
let addr = SocketAddr::from(([0, 0, 0, 0], 4001));
|
||||||
let listener = TcpListener::bind(&addr).await.unwrap();
|
let listener = TcpListener::bind(&addr).await.unwrap();
|
||||||
|
|
||||||
axum::serve(listener, app).await.unwrap();
|
axum::serve(listener, app).await.unwrap();
|
||||||
|
|
Loading…
Reference in a new issue