Web API, Web UI #86
|
@ -13,7 +13,3 @@ tenebrous-rpc = { path = "../rpc" }
|
||||||
juniper = { git = "https://github.com/graphql-rust/juniper", branch = "master" }
|
juniper = { git = "https://github.com/graphql-rust/juniper", branch = "master" }
|
||||||
juniper_rocket_async = { git = "https://github.com/graphql-rust/juniper", branch = "master" }
|
juniper_rocket_async = { git = "https://github.com/graphql-rust/juniper", branch = "master" }
|
||||||
rocket = { git = "https://github.com/SergioBenitez/Rocket", branch = "master" }
|
rocket = { git = "https://github.com/SergioBenitez/Rocket", branch = "master" }
|
||||||
|
|
||||||
# [dependencies.tokio]
|
|
||||||
# version = "1"
|
|
||||||
# features = [ "full" ]
|
|
||||||
|
|
|
@ -6,26 +6,9 @@ use rocket::{response::content, Rocket, State};
|
||||||
use std::env;
|
use std::env;
|
||||||
use tenebrous_rpc::protos::dicebot::dicebot_client::DicebotClient;
|
use tenebrous_rpc::protos::dicebot::dicebot_client::DicebotClient;
|
||||||
use tenebrous_rpc::protos::dicebot::GetVariableRequest;
|
use tenebrous_rpc::protos::dicebot::GetVariableRequest;
|
||||||
use tonic::{metadata::MetadataValue, transport::Channel as TonicChannel, Request as TonicRequest};
|
use tonic::{transport::Channel as TonicChannel, Request as TonicRequest};
|
||||||
use tracing_subscriber::filter::EnvFilter;
|
use tracing_subscriber::filter::EnvFilter;
|
||||||
|
|
||||||
//grpc stuff
|
|
||||||
async fn create_client(
|
|
||||||
shared_secret: &str,
|
|
||||||
) -> Result<DicebotClient<TonicChannel>, Box<dyn std::error::Error>> {
|
|
||||||
let channel = TonicChannel::from_static("http://0.0.0.0:9090")
|
|
||||||
.connect()
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
let bearer = MetadataValue::from_str(&format!("Bearer {}", shared_secret))?;
|
|
||||||
let client = DicebotClient::with_interceptor(channel, move |mut req: TonicRequest<()>| {
|
|
||||||
req.metadata_mut().insert("authorization", bearer.clone());
|
|
||||||
Ok(req)
|
|
||||||
});
|
|
||||||
|
|
||||||
Ok(client)
|
|
||||||
}
|
|
||||||
|
|
||||||
//api stuff
|
//api stuff
|
||||||
#[derive(GraphQLInputObject)]
|
#[derive(GraphQLInputObject)]
|
||||||
struct UserVariableArgument {
|
struct UserVariableArgument {
|
||||||
|
@ -141,7 +124,7 @@ pub async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
tracing_subscriber::fmt().with_env_filter(filter).init();
|
tracing_subscriber::fmt().with_env_filter(filter).init();
|
||||||
|
|
||||||
log::info!("Setting up gRPC connection");
|
log::info!("Setting up gRPC connection");
|
||||||
let client = create_client("abc123").await?;
|
let client = tenebrous_rpc::create_client("http://localhost:9090", "abc123").await?;
|
||||||
|
|
||||||
log::info!("Listening on 127.0.0.1:8080");
|
log::info!("Listening on 127.0.0.1:8080");
|
||||||
let context = Context {
|
let context = Context {
|
||||||
|
|
|
@ -7,3 +7,22 @@ pub mod protos {
|
||||||
tonic::include_proto!("dicebot");
|
tonic::include_proto!("dicebot");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
use protos::dicebot::dicebot_client::DicebotClient;
|
||||||
|
use tonic::{metadata::MetadataValue, transport::Channel as TonicChannel, Request as TonicRequest};
|
||||||
|
|
||||||
|
#[cfg(feature = "default")]
|
||||||
|
pub async fn create_client(
|
||||||
|
address: &'static str,
|
||||||
|
shared_secret: &str,
|
||||||
|
) -> Result<DicebotClient<TonicChannel>, Box<dyn std::error::Error>> {
|
||||||
|
let channel = TonicChannel::from_shared(address)?.connect().await?;
|
||||||
|
|
||||||
|
let bearer = MetadataValue::from_str(&format!("Bearer {}", shared_secret))?;
|
||||||
|
let client = DicebotClient::with_interceptor(channel, move |mut req: TonicRequest<()>| {
|
||||||
|
req.metadata_mut().insert("authorization", bearer.clone());
|
||||||
|
Ok(req)
|
||||||
|
});
|
||||||
|
|
||||||
|
Ok(client)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue