Skip to content
This repository has been archived by the owner on Aug 3, 2023. It is now read-only.

Rename proxy to dev #890

Merged
merged 1 commit into from
Nov 20, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ pub use build::build;
pub use build::watch_and_build;
pub use generate::generate;
pub use init::init;
pub use preview::{preview, proxy, HTTPMethod};
pub use preview::{dev_server, preview, HTTPMethod};
pub use publish::publish;
use regex::Regex;
pub use subdomain::get_subdomain;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,24 @@ use uuid::Uuid;

use url::Url;

use crate::commands;
use crate::commands::preview::upload;

use crate::settings::global_user::GlobalUser;
use crate::settings::target::Target;

use crate::commands;
use crate::commands::preview::upload;
use crate::terminal::emoji;

const PREVIEW_HOST: &str = "rawhttp.cloudflareworkers.com";

#[derive(Clone)]
struct ProxyConfig {
struct ServerConfig {
host: String,
listening_address: SocketAddr,
is_https: bool,
}

impl ProxyConfig {
impl ServerConfig {
pub fn new(
host: Option<&str>,
ip: Option<&str>,
Expand Down Expand Up @@ -64,7 +66,7 @@ impl ProxyConfig {

let host = parsed_url.host_str().ok_or(format_err!("Invalid host, accepted formats are example.com, http://example.com, or https://example.com"))?.to_string();

Ok(ProxyConfig {
Ok(ServerConfig {
listening_address,
host,
is_https,
Expand All @@ -78,40 +80,44 @@ impl ProxyConfig {
}
}

pub async fn proxy(
pub async fn dev_server(
target: Target,
user: Option<GlobalUser>,
host: Option<&str>,
port: Option<&str>,
ip: Option<&str>,
) -> Result<(), failure::Error> {
commands::build(&target)?;
let proxy_config = ProxyConfig::new(host, ip, port)?;
let server_config = ServerConfig::new(host, ip, port)?;
let https = HttpsConnector::new().expect("TLS initialization failed");
let client = Client::builder().build::<_, Body>(https);

let preview_id = get_preview_id(target, user, &proxy_config)?;
let listening_address = &proxy_config.listening_address.clone();
let listening_address_string = proxy_config.listening_address_as_string();
let preview_id = get_preview_id(target, user, &server_config)?;
let listening_address = &server_config.listening_address.clone();
let listening_address_string = server_config.listening_address_as_string();

let make_service = make_service_fn(move |_| {
let client = client.clone();
let preview_id = preview_id.to_owned();
let proxy_config = proxy_config.clone();
let server_config = server_config.clone();
async move {
Ok::<_, failure::Error>(service_fn(move |req| {
preview_request(
req,
client.to_owned(),
preview_id.to_owned(),
proxy_config.clone(),
server_config.clone(),
)
}))
}
});

let server = Server::bind(listening_address).serve(make_service);
println!("Listening on http://{}", listening_address_string);
println!(
"{} Listening on http://{}",
emoji::EAR,
listening_address_string
);
if let Err(e) = server.await {
eprintln!("server error: {}", e);
}
Expand All @@ -133,7 +139,7 @@ fn preview_request(
req: Request<Body>,
client: Client<HttpsConnector<HttpConnector>>,
preview_id: String,
proxy_config: ProxyConfig,
server_config: ServerConfig,
) -> ResponseFuture {
let (mut parts, body) = req.into_parts();

Expand Down Expand Up @@ -161,7 +167,7 @@ fn preview_request(
"[{}] \"{} {}{} {:?}\"",
now.format("%Y-%m-%d %H:%M:%S"),
method,
proxy_config.host,
server_config.host,
path,
req.version()
);
Expand All @@ -171,14 +177,14 @@ fn preview_request(
fn get_preview_id(
mut target: Target,
user: Option<GlobalUser>,
proxy_config: &ProxyConfig,
server_config: &ServerConfig,
) -> Result<String, failure::Error> {
let session = Uuid::new_v4().to_simple();
let verbose = true;
let sites_preview = false;
let script_id: String = upload(&mut target, user.as_ref(), sites_preview, verbose)?;
Ok(format!(
"{}{}{}{}",
&script_id, session, proxy_config.is_https as u8, proxy_config.host
&script_id, session, server_config.is_https as u8, server_config.host
))
}
4 changes: 2 additions & 2 deletions src/commands/preview/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ use fiddle_messenger::*;
mod http_method;
pub use http_method::HTTPMethod;

mod proxy;
pub use proxy::proxy;
mod dev_server;
pub use dev_server::dev_server;

mod upload;
use upload::upload;
Expand Down
12 changes: 6 additions & 6 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -349,10 +349,10 @@ fn run() -> Result<(), failure::Error> {
),
)
.subcommand(
SubCommand::with_name("proxy")
SubCommand::with_name("dev")
.about(&*format!(
"{} Create a proxy to preview your worker",
emoji::UP // TODO: get new emoji
"{} Start a local server for developing your worker",
emoji::EAR
))
.arg(
Arg::with_name("port")
Expand Down Expand Up @@ -544,8 +544,8 @@ fn run() -> Result<(), failure::Error> {
let headless = matches.is_present("headless");

commands::preview(target, user, method, body, watch, verbose, headless)?;
} else if let Some(matches) = matches.subcommand_matches("proxy") {
log::info!("Starting proxy service");
} else if let Some(matches) = matches.subcommand_matches("dev") {
log::info!("Starting dev server");
let port = matches.value_of("port");
let host = matches.value_of("host");
let ip = matches.value_of("ip");
Expand All @@ -554,7 +554,7 @@ fn run() -> Result<(), failure::Error> {
let target = manifest.get_target(env)?;
let user = settings::global_user::GlobalUser::new().ok();
let rt = Runtime::new().unwrap();
rt.block_on(commands::proxy(target, user, host, port, ip))?;
rt.block_on(commands::dev_server(target, user, host, port, ip))?;
rt.shutdown_now();
} else if matches.subcommand_matches("whoami").is_some() {
log::info!("Getting User settings");
Expand Down
2 changes: 2 additions & 0 deletions src/terminal/emoji.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ use console::Emoji;

pub static BICEP: Emoji = Emoji("💪 ", "");
pub static CRAB: Emoji = Emoji("🦀 ", "");
pub static COMPUTER: Emoji = Emoji("💻 ", "");
pub static DANCERS: Emoji = Emoji("👯 ", "");
pub static EAR: Emoji = Emoji("👂 ", "");
pub static EYES: Emoji = Emoji("👀 ", "");
pub static FILES: Emoji = Emoji("🗂️ ", "");
pub static INBOX: Emoji = Emoji("📥 ", "");
Expand Down