aboutsummaryrefslogtreecommitdiff
path: root/azalea-client/src/get_mc_dir.rs
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2022-10-16 22:54:54 -0500
committerGitHub <noreply@github.com>2022-10-16 22:54:54 -0500
commit4cef62e8e4aa04e44048eb67e5091c12a73d2a09 (patch)
tree1c3b03bad262bdcab878cd42d445676290000bea /azalea-client/src/get_mc_dir.rs
parent993914d175609e5d291e7caafc1983379642e7fe (diff)
downloadazalea-drasl-4cef62e8e4aa04e44048eb67e5091c12a73d2a09.tar.xz
Microsoft Authentication (#29)
* a * try to do more work on auth signing (untested) * well auth works when i remove the d= so * auth stuff * sessionserver stuff * add auth in azalea-protocol/client * caching* refreshing microsoft auth tokens isn't implemented yet, also i haven't tested it * how did i not notice that i had the code duplicated * fix cache * add refreshing msa token * replace some printlns with log::trace * auth works! * Update main.rs * fix clippy warnings
Diffstat (limited to 'azalea-client/src/get_mc_dir.rs')
-rw-r--r--azalea-client/src/get_mc_dir.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/azalea-client/src/get_mc_dir.rs b/azalea-client/src/get_mc_dir.rs
new file mode 100644
index 00000000..abc5b3c8
--- /dev/null
+++ b/azalea-client/src/get_mc_dir.rs
@@ -0,0 +1,34 @@
+//! Find out where the user's .minecraft directory is.
+//!
+//! Used for the auth cache.
+
+use std::path::PathBuf;
+
+/// Return the location of the user's .minecraft directory.
+///
+/// Windows: `%appdata%\.minecraft`\
+/// Mac: `$HOME/Library/Application Support/minecraft`\
+/// Linux: `$HOME/.minecraft`
+///
+/// Anywhere else it'll return None.
+pub fn minecraft_dir() -> Option<PathBuf> {
+ #[cfg(target_os = "windows")]
+ {
+ let appdata = std::env::var("APPDATA").ok()?;
+ Some(PathBuf::from(appdata).join(".minecraft"))
+ }
+ #[cfg(target_os = "macos")]
+ {
+ let home = std::env::var("HOME").ok()?;
+ Some(PathBuf::from(home).join("Library/Application Support/minecraft"))
+ }
+ #[cfg(target_os = "linux")]
+ {
+ let home = std::env::var("HOME").ok()?;
+ Some(PathBuf::from(home).join(".minecraft"))
+ }
+ #[cfg(not(any(target_os = "windows", target_os = "macos", target_os = "linux")))]
+ {
+ None
+ }
+}