Skip to content

Commit

Permalink
Stop using abandoned json crate
Browse files Browse the repository at this point in the history
  • Loading branch information
javitonino committed Sep 23, 2024
1 parent f50996c commit 36daac0
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 29 deletions.
60 changes: 40 additions & 20 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ path = "src/lib.rs"

[dependencies]
httptest = "0.15.4"
json = "0.12.4"
pyo3 = { version = "0.18.0", features = ["extension-module"], optional = true }
serde_json = "1.0.128"
ureq = "2.6.2"

[features]
Expand Down
35 changes: 27 additions & 8 deletions src/service/retrievers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,43 @@ pub trait FlagRetriever {
}

fn parse_json_config(json: &str) -> Option<HashMap<String, FlagConfig>> {
let json_parsed = json::parse(&json);
let json_parsed = serde_json::from_str(&json);
if json_parsed.is_err() {
print!("Error parsing JSON: {}", json);
return None;
}
let json = json_parsed.unwrap();
let json: serde_json::Value = json_parsed.unwrap();
let json = json
.as_object()
.expect("Expected a JSON object at the root");

let mut config: HashMap<String, FlagConfig> = HashMap::new();
for (key, value) in json.entries() {
let rollout = value["rollout"].as_u8().unwrap();
for (key, value) in json {
let rollout = value["rollout"].as_u64().unwrap() as u8;

// let mut variants: Option<HashMap<String, Vec<String>> = None;
let mut variants: Option<HashMap<String, Vec<String>>> = None;
if value.has_key("variants") {
if let Some(json_variants) = value.get("variants") {
let json_variants = json_variants
.as_object()
.expect("Expected `variants` to be an onject");
variants = Some(
value["variants"]
.entries()
.map(|(k, v)| (k.to_string(), v.members().map(|x| x.to_string()).collect()))
json_variants
.iter()
.map(|(k, v)| {
(
k.to_string(),
v.as_array()
.expect("Variant should be a list of values")
.iter()
.map(|x| {
x.as_str()
.expect("Variant values should be strings")
.to_string()
})
.collect(),
)
})
.collect(),
);
}
Expand Down

0 comments on commit 36daac0

Please sign in to comment.