소스 검색

Weather updates

LukePulverenti Luke Pulverenti luke pulverenti 12 년 전
부모
커밋
3c47375229

+ 13 - 5
MediaBrowser.ApiInteraction/ApiClient.cs

@@ -573,9 +573,9 @@ namespace MediaBrowser.ApiInteraction
         {
             string url = ApiUrl + "/ServerConfiguration";
 
-            using (Stream stream = await GetSerializedStreamAsync(url).ConfigureAwait(false))
+            using (Stream stream = await GetSerializedStreamAsync(url, ApiInteraction.SerializationFormat.Json).ConfigureAwait(false))
             {
-                return DeserializeFromStream<ServerConfiguration>(stream);
+                return DeserializeFromStream<ServerConfiguration>(stream, ApiInteraction.SerializationFormat.Json);
             }
         }
 
@@ -622,19 +622,27 @@ namespace MediaBrowser.ApiInteraction
         /// This is a helper around getting a stream from the server that contains serialized data
         /// </summary>
         private Task<Stream> GetSerializedStreamAsync(string url)
+        {
+            return GetSerializedStreamAsync(url, SerializationFormat);
+        }
+
+        /// <summary>
+        /// This is a helper around getting a stream from the server that contains serialized data
+        /// </summary>
+        private Task<Stream> GetSerializedStreamAsync(string url, SerializationFormat serializationFormat)
         {
             if (url.IndexOf('?') == -1)
             {
-                url += "?dataformat=" + SerializationFormat.ToString().ToLower();
+                url += "?dataformat=" + serializationFormat.ToString().ToLower();
             }
             else
             {
-                url += "&dataformat=" + SerializationFormat.ToString().ToLower();
+                url += "&dataformat=" + serializationFormat.ToString().ToLower();
             }
 
             return GetStreamAsync(url);
         }
-
+        
         private T DeserializeFromStream<T>(Stream stream)
         {
             return DeserializeFromStream<T>(stream, SerializationFormat);

+ 9 - 1
MediaBrowser.Common/Kernel/BaseKernel.cs

@@ -41,6 +41,14 @@ namespace MediaBrowser.Common.Kernel
         /// </summary>
         public HttpServer HttpServer { get; private set; }
 
+        protected virtual string HttpServerUrlPrefix
+        {
+            get
+            {
+                return "http://+:" + Configuration.HttpServerPortNumber + "/mediabrowser/";
+            }
+        }
+
         /// <summary>
         /// Gets the kernel context. The UI kernel will have to override this.
         /// </summary>
@@ -181,7 +189,7 @@ namespace MediaBrowser.Common.Kernel
         {
             DisposeHttpServer();
 
-            HttpServer = new HttpServer("http://+:" + Configuration.HttpServerPortNumber + "/mediabrowser/");
+            HttpServer = new HttpServer(HttpServerUrlPrefix);
         }
 
         /// <summary>

+ 1 - 1
MediaBrowser.Common/Net/Handlers/BaseSerializationHandler.cs

@@ -62,7 +62,7 @@ namespace MediaBrowser.Common.Net.Handlers
 
         protected async override Task WriteResponseToOutputStream(Stream stream)
         {
-            await EnsureObjectToSerialize();
+            await EnsureObjectToSerialize().ConfigureAwait(false);
 
             switch (SerializationFormat)
             {

+ 9 - 3
MediaBrowser.Controller/Weather/WeatherClient.cs

@@ -53,12 +53,18 @@ namespace MediaBrowser.Controller.Weather
         {
             WeatherInfo info = new WeatherInfo();
 
-            if (data.current_condition.Any())
+            if (data.current_condition != null)
             {
-                info.CurrentWeather = data.current_condition.First().ToWeatherStatus();
+                if (data.current_condition.Any())
+                {
+                    info.CurrentWeather = data.current_condition.First().ToWeatherStatus();
+                }
             }
 
-            info.Forecasts = data.weather.Select(w => w.ToWeatherForecast()).ToArray();
+            if (data.weather != null)
+            {
+                info.Forecasts = data.weather.Select(w => w.ToWeatherForecast()).ToArray();
+            }
 
             return info;
         }

+ 5 - 3
MediaBrowser.Model/Configuration/ServerConfiguration.cs

@@ -1,17 +1,19 @@
-
+using MediaBrowser.Model.Weather;
+
 namespace MediaBrowser.Model.Configuration
 {
     public class ServerConfiguration : BaseApplicationConfiguration
     {
         public bool EnableInternetProviders { get; set; }
-        public string WeatherZipCode { get; set; }
         public bool EnableUserProfiles { get; set; }
 
+        public string WeatherZipCode { get; set; }
+        public WeatherUnits WeatherUnit { get; set; }
+
         public ServerConfiguration()
             : base()
         {
             EnableUserProfiles = true;
-            WeatherZipCode = "02116";
         }
     }
 }

+ 1 - 0
MediaBrowser.Model/MediaBrowser.Model.csproj

@@ -61,6 +61,7 @@
     <Compile Include="Weather\WeatherForecast.cs" />
     <Compile Include="Weather\WeatherInfo.cs" />
     <Compile Include="Weather\WeatherStatus.cs" />
+    <Compile Include="Weather\WeatherUnits.cs" />
   </ItemGroup>
   <ItemGroup>
     <Reference Include="protobuf-net">

+ 9 - 0
MediaBrowser.Model/Weather/WeatherUnits.cs

@@ -0,0 +1,9 @@
+
+namespace MediaBrowser.Model.Weather
+{
+    public enum WeatherUnits
+    {
+        Fahrenheit,
+        Celsius
+    }
+}