From 358fe3a8e4470a173ff73c5d6997b10072429e4a Mon Sep 17 00:00:00 2001 From: Erica Marigold Date: Sat, 20 Apr 2024 19:13:26 +0530 Subject: [PATCH] feat(net/util.rs): use a standardized user agent format --- src/lune/builtins/net/mod.rs | 2 +- src/lune/builtins/net/util.rs | 19 +++++++++++++------ src/lune/globals/version.rs | 5 +++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/lune/builtins/net/mod.rs b/src/lune/builtins/net/mod.rs index 6253dec6..9ea59509 100644 --- a/src/lune/builtins/net/mod.rs +++ b/src/lune/builtins/net/mod.rs @@ -23,7 +23,7 @@ use super::serde::encode_decode::{EncodeDecodeConfig, EncodeDecodeFormat}; pub fn create(lua: &Lua) -> LuaResult { NetClientBuilder::new() - .headers(&[("User-Agent", create_user_agent_header())])? + .headers(&[("User-Agent", create_user_agent_header(lua)?)])? .build()? .into_registry(lua); TableBuilder::new(lua)? diff --git a/src/lune/builtins/net/util.rs b/src/lune/builtins/net/util.rs index 46035474..e18235e2 100644 --- a/src/lune/builtins/net/util.rs +++ b/src/lune/builtins/net/util.rs @@ -7,12 +7,19 @@ use mlua::prelude::*; use crate::lune::util::TableBuilder; -pub fn create_user_agent_header() -> String { - let (github_owner, github_repo) = env!("CARGO_PKG_REPOSITORY") - .trim_start_matches("https://github.com/") - .split_once('/') - .unwrap(); - format!("{github_owner}-{github_repo}-cli") +pub fn create_user_agent_header(lua: &Lua) -> LuaResult { + let version_global = lua + .globals() + .get::<_, LuaString>("_VERSION") + .expect("Missing _VERSION global"); + + let version_global_str = version_global + .to_str() + .context("Invalid utf8 found in _VERSION global")?; + + let (package_name, full_version) = version_global_str.split_once(' ').unwrap(); + + Ok(format!("{}/{}", package_name.to_lowercase(), full_version)) } pub fn header_map_to_table( diff --git a/src/lune/globals/version.rs b/src/lune/globals/version.rs index 4904144e..8ca5864c 100644 --- a/src/lune/globals/version.rs +++ b/src/lune/globals/version.rs @@ -1,19 +1,20 @@ use mlua::prelude::*; pub fn create(lua: &Lua) -> LuaResult> { - let lune_version = format!("Lune {}", env!("CARGO_PKG_VERSION")); + let lune_version = format!("{} {}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")); let luau_version_full = lua .globals() .get::<_, LuaString>("_VERSION") .expect("Missing _VERSION global"); + let luau_version_str = luau_version_full .to_str() .context("Invalid utf8 found in _VERSION global")?; // If this function runs more than once, we // may get an already formatted lune version. - if luau_version_str.starts_with(&lune_version) { + if luau_version_str.starts_with(lune_version.as_str()) { return Ok(luau_version_full); }