Преглед изворни кода

Support 13.0 protocol version by default.

Make extra_data as Optional.
Alexandre Leblanc пре 5 година
родитељ
комит
27a819158e
3 измењених фајлова са 13 додато и 8 уклоњено
  1. 7 2
      src/app_context.rs
  2. 5 5
      src/broadsign/real_time_pop_request.rs
  3. 1 1
      src/main.rs

+ 7 - 2
src/app_context.rs

@@ -5,6 +5,7 @@ extern crate r2d2_sqlite;
 use crate::broadsign::real_time_pop_request::RealTimePopRequest;
 use r2d2_sqlite::SqliteConnectionManager;
 use rusqlite::{params, Result};
+use serde_json::json;
 use std::sync::Arc;
 
 pub struct Database {
@@ -160,7 +161,11 @@ impl Database {
                                 pop.duration_ms as i32,
                                 pop.service_name,
                                 pop.service_value,
-                                pop.extra_data.as_str().unwrap(),
+                                pop.extra_data
+                                    .as_ref()
+                                    .unwrap_or(&json!(""))
+                                    .as_str()
+                                    .unwrap(),
                                 pops.api_key
                             ],
                         );
@@ -244,7 +249,7 @@ mod tests_database {
                 duration_ms: 12996,
                 service_name: "bmb".to_owned(),
                 service_value: "701".to_owned(),
-                extra_data: json!(""),
+                extra_data: Option::Some(json!("")),
             }],
         });
 

+ 5 - 5
src/broadsign/real_time_pop_request.rs

@@ -35,7 +35,7 @@ pub struct RealTimePopEntry {
     //    extra_data: Option<serde_json::Value>
     //
     // You may also want to strongly type it (create a struct and derive serde).
-    pub extra_data: serde_json::Value,
+    pub extra_data: Option<serde_json::Value>,
 }
 
 /* Request sent by Broadsign Player, as defined on Broadsign's website:
@@ -78,8 +78,8 @@ mod protocol_serialization_tests {
         assert_eq!(deserialized.pops[0].duration_ms, 5000);
         assert_eq!(deserialized.pops[0].service_name, "bmb");
         assert_eq!(deserialized.pops[0].service_value, "3451");
-        assert_eq!(deserialized.pops[0].extra_data.is_string(), true);
-        assert_eq!(deserialized.pops[0].extra_data, "");
+        assert_eq!(deserialized.pops[0].extra_data.is_some(), true);
+        assert_eq!(deserialized.pops[0].extra_data.as_ref().unwrap(), "");
 
         // Validate second pop
         assert_eq!(deserialized.pops[1].display_unit_id, 3456);
@@ -97,8 +97,8 @@ mod protocol_serialization_tests {
         assert_eq!(deserialized.pops[1].duration_ms, 5000);
         assert_eq!(deserialized.pops[1].service_name, "");
         assert_eq!(deserialized.pops[1].service_value, "");
-        assert_eq!(deserialized.pops[1].extra_data.is_string(), true);
-        assert_eq!(deserialized.pops[1].extra_data, "");
+        assert_eq!(deserialized.pops[1].extra_data.is_some(), true);
+        assert_eq!(deserialized.pops[1].extra_data.as_ref().unwrap(), "");
     }
 
     #[test]

+ 1 - 1
src/main.rs

@@ -111,7 +111,7 @@ mod tests_endpoint_pop {
                 duration_ms: 12996,
                 service_name: "bmb".to_owned(),
                 service_value: "701".to_owned(),
-                extra_data: json!(""),
+                extra_data: Option::Some(json!("")),
             }],
         }
     }