https://github.com/totalkrill/bevy_mod_reqwest
https://github.com/totalkrill/bevy_mod_reqwest
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/totalkrill/bevy_mod_reqwest
- Owner: TotalKrill
- License: mit
- Created: 2023-04-05T19:01:10.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-01-03T12:50:47.000Z (over 1 year ago)
- Last Synced: 2025-03-29T13:05:54.961Z (over 1 year ago)
- Language: Rust
- Size: 96.7 KB
- Stars: 31
- Watchers: 2
- Forks: 14
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.md
- License: LICENSE
Awesome Lists containing this project
README
# bevy_mod_reqwest
[](https://crates.io/crates/bevy_mod_reqwest)
[](https://docs.rs/bevy_mod_reqwest)
This crate helps when trying to use reqwest with bevy, without having to deal with async stuff, and it works on both web and and native
( only tested on x86_64 and wasm for now)
| Bevy version | bevy_mod_reqwest version |
| ------------ | ------------------------ |
| 0.15 | 0.18 |
| 0.14 | 0.15 - 0.17 |
| 0.13 | 0.14 |
| 0.12 | 0.12 - 0.13 |
## Example
``` rust
use std::time::Duration;
use bevy::{log::LogPlugin, prelude::*, time::common_conditions::on_timer};
use bevy_mod_reqwest::*;
#[derive(Default, Resource)]
// just a vector that stores all the responses as strings to showcase that the `on_response` methods
// are just regular observersystems, that function very much like regular systems
struct History {
pub responses: Vec,
}
fn send_requests(mut client: BevyReqwest) {
let url = "https://bored-api.appbrewery.com/random";
// use regular reqwest http calls, then poll them to completion.
let reqwest_request = client.get(url).build().unwrap();
client
// Sends the created http request
.send(reqwest_request)
// The response from the http request can be reached using an observersystem,
// where the only requirement is that the first parameter in the system is the specific Trigger type
// the rest is the same as a regular system
.on_response(
|trigger: Trigger, mut history: ResMut| {
let response = trigger.event();
let data = response.as_str();
let status = response.status();
// let headers = req.response_headers();
bevy::log::info!("code: {status}, data: {data:?}");
if let Ok(data) = data {
history.responses.push(format!("OK: {data}"));
}
},
)
// In case of request error, it can be reached using an observersystem as well
.on_error(
|trigger: Trigger, mut history: ResMut| {
let e = &trigger.event().0;
bevy::log::info!("error: {e:?}");
history.responses.push(format!("ERROR: {e:?}"));
},
);
}
fn main() {
App::new()
.add_plugins(MinimalPlugins)
.add_plugins(LogPlugin::default())
.add_plugins(ReqwestPlugin::default())
.init_resource::()
.add_systems(
Update,
send_requests.run_if(on_timer(Duration::from_secs(5))),
)
.run();
}
```