diff --git a/.gitignore b/.gitignore index 9d8f65b..afb0611 100644 --- a/.gitignore +++ b/.gitignore @@ -59,4 +59,4 @@ fabric.properties target/ -test/resources/apikey.txt \ No newline at end of file +src/test/resources/apikey.txt \ No newline at end of file diff --git a/src/test/java/com/github/dvdme/ForecastIOLib/FIOCurrentlyTest.java b/src/test/java/com/github/dvdme/ForecastIOLib/FIOCurrentlyTest.java new file mode 100644 index 0000000..04e9cf7 --- /dev/null +++ b/src/test/java/com/github/dvdme/ForecastIOLib/FIOCurrentlyTest.java @@ -0,0 +1,95 @@ +package com.github.dvdme.ForecastIOLib; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.junit.Assert.*; + +/** + * Created by david on 28/12/2016. + */ +public class FIOCurrentlyTest { + + private String fakeApiKey = "00000000000000000000000000000000"; + private String basePath = "src/test/resources/"; + private FIOCurrently cur; + + @Before + public void setUp() throws Exception { + String jsonText = getJsonText(basePath + "response.json"); + ForecastIO fio = new ForecastIO(fakeApiKey); + fio.getForecast(jsonText); + cur = new FIOCurrently(fio); + assertNotNull("Got null FIOCurrently object", cur); + assertTrue("Got false hasCurrently()", fio.hasCurrently()); + } + + @Test + public void test_precipIntensity() throws Exception { + assertEquals(cur.get().precipIntensity(), 0, 0.1); + } + + @Test + public void test_precipProbability() throws Exception { + assertEquals(cur.get().precipProbability(), 0, 0.1); + } + + @Test + public void test_dewPoint() throws Exception { + assertEquals(cur.get().dewPoint(), 50.3, 0.1); + } + + @Test + public void test_humidity() throws Exception { + assertEquals(cur.get().humidity(), 0.44, 0.1); + } + + @Test + public void test_windSpeed() throws Exception { + assertEquals(cur.get().windSpeed(), 6.94, 0.1); + } + + @Test + public void test_windBearing() throws Exception { + assertEquals(cur.get().windBearing(), 135, 0.1); + } + + @Test + public void test_visibility() throws Exception { + assertEquals(cur.get().visibility(), 6.21, 0.1); + } + + @Test + public void test_cloudCover() throws Exception { + assertEquals(cur.get().cloudCover(), 0.04, 0.1); + } + + @Test + public void test_pressure() throws Exception { + assertEquals(cur.get().pressure(), 1017.6, 0.1); + } + + @Test + public void test_ozone() throws Exception { + assertEquals(cur.get().ozone(), 247.7, 0.1); + } + + @Test + public void test_apparentTemperature() throws Exception { + assertEquals(cur.get().apparentTemperature(), 73.65, 0.1); + } + + @Test + public void get_temperature() throws Exception { + assertEquals(cur.get().temperature(), 73.65, 0.1); + } + + private String getJsonText(String path) throws IOException { + return new String(Files.readAllBytes(Paths.get(path))); + } +} \ No newline at end of file diff --git a/src/test/java/com/github/dvdme/ForecastIOLib/FIOLibTest.java b/src/test/java/com/github/dvdme/ForecastIOLib/FIOLibTest.java index 9506546..906ef55 100644 --- a/src/test/java/com/github/dvdme/ForecastIOLib/FIOLibTest.java +++ b/src/test/java/com/github/dvdme/ForecastIOLib/FIOLibTest.java @@ -21,7 +21,7 @@ public static void main(String[] args) { //Caracas: 10.4880555, -66.8791667 String apikey = null; - String apikeyPath = "test/resources/apikey.txt"; + String apikeyPath = "src/test/resources/apikey.txt"; try { apikey = new String(Files.readAllBytes(Paths.get(apikeyPath))); } catch (IOException e) { diff --git a/src/test/java/com/github/dvdme/ForecastIOLib/ForecastIOTest.java b/src/test/java/com/github/dvdme/ForecastIOLib/ForecastIOTest.java index 728fb6b..1904947 100644 --- a/src/test/java/com/github/dvdme/ForecastIOLib/ForecastIOTest.java +++ b/src/test/java/com/github/dvdme/ForecastIOLib/ForecastIOTest.java @@ -6,6 +6,7 @@ import org.junit.Before; import org.junit.Test; +import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; @@ -17,12 +18,13 @@ public class ForecastIOTest { private String fakeApiKey = "00000000000000000000000000000000"; + private String basePath = "src/test/resources/"; private String jsonText; private ForecastIO fio; @Before public void setUp() throws Exception { - jsonText = new String(Files.readAllBytes(Paths.get("src/test/resources/response.json"))); + jsonText = new String(Files.readAllBytes(Paths.get(basePath + "response.json"))); fio = new ForecastIO(fakeApiKey); assertNotNull("ForecastIO object is null at setUp()", fio); fio.getForecast(jsonText); @@ -137,10 +139,30 @@ public void getLang() throws Exception { @Test public void getCurrently() throws Exception { FIOCurrently cur = new FIOCurrently(fio); - assertNotNull("Got null FIOurrently object", cur); + assertNotNull("Got null FIOCurrently object", cur); assertTrue("Got false hasCurrently()", fio.hasCurrently()); } + @Test + public void getEmptyCurrently() throws Exception { + String jsonText = getJsonText(basePath + "response_empty_currently.json"); + ForecastIO fio = new ForecastIO(fakeApiKey); + fio.getForecast(jsonText); + FIOCurrently cur = new FIOCurrently(fio); + assertNotNull("Got null FIOCurrently object", cur); + assertFalse("Got true hasCurrently()", fio.hasCurrently()); + } + + @Test + public void getNullCurrently() throws Exception { + String jsonText = getJsonText(basePath + "response_null_currently.json"); + ForecastIO fio = new ForecastIO(fakeApiKey); + fio.getForecast(jsonText); + FIOCurrently cur = new FIOCurrently(fio); + assertNotNull("Got null FIOCurrently object", cur); + assertFalse("Got true hasCurrently()", fio.hasCurrently()); + } + @Test public void getMinutely() throws Exception { FIOMinutely min = new FIOMinutely(fio); @@ -218,4 +240,8 @@ public void getRawResponse() throws Exception { assertEquals("Got differet raw string", jsonText, fio.getRawResponse()); } + private String getJsonText(String path) throws IOException { + return new String(Files.readAllBytes(Paths.get(path))); + } + } \ No newline at end of file diff --git a/src/test/resources/response_empty_currently.json b/src/test/resources/response_empty_currently.json new file mode 100644 index 0000000..b6d8d5d --- /dev/null +++ b/src/test/resources/response_empty_currently.json @@ -0,0 +1 @@ +{"latitude":37.8267,"longitude":-122.4233,"timezone":"America/Los_Angeles","offset":-8,"currently":{},"minutely":{"summary":"Clear for the hour.","icon":"clear-day","data":[{"time":1482956520,"precipIntensity":0,"precipProbability":0},{"time":1482956580,"precipIntensity":0,"precipProbability":0},{"time":1482956640,"precipIntensity":0,"precipProbability":0},{"time":1482956700,"precipIntensity":0,"precipProbability":0},{"time":1482956760,"precipIntensity":0,"precipProbability":0},{"time":1482956820,"precipIntensity":0,"precipProbability":0},{"time":1482956880,"precipIntensity":0,"precipProbability":0},{"time":1482956940,"precipIntensity":0,"precipProbability":0},{"time":1482957000,"precipIntensity":0,"precipProbability":0},{"time":1482957060,"precipIntensity":0,"precipProbability":0},{"time":1482957120,"precipIntensity":0,"precipProbability":0},{"time":1482957180,"precipIntensity":0,"precipProbability":0},{"time":1482957240,"precipIntensity":0,"precipProbability":0},{"time":1482957300,"precipIntensity":0,"precipProbability":0},{"time":1482957360,"precipIntensity":0,"precipProbability":0},{"time":1482957420,"precipIntensity":0,"precipProbability":0},{"time":1482957480,"precipIntensity":0,"precipProbability":0},{"time":1482957540,"precipIntensity":0,"precipProbability":0},{"time":1482957600,"precipIntensity":0,"precipProbability":0},{"time":1482957660,"precipIntensity":0,"precipProbability":0},{"time":1482957720,"precipIntensity":0,"precipProbability":0},{"time":1482957780,"precipIntensity":0,"precipProbability":0},{"time":1482957840,"precipIntensity":0,"precipProbability":0},{"time":1482957900,"precipIntensity":0,"precipProbability":0},{"time":1482957960,"precipIntensity":0,"precipProbability":0},{"time":1482958020,"precipIntensity":0,"precipProbability":0},{"time":1482958080,"precipIntensity":0,"precipProbability":0},{"time":1482958140,"precipIntensity":0,"precipProbability":0},{"time":1482958200,"precipIntensity":0,"precipProbability":0},{"time":1482958260,"precipIntensity":0,"precipProbability":0},{"time":1482958320,"precipIntensity":0,"precipProbability":0},{"time":1482958380,"precipIntensity":0,"precipProbability":0},{"time":1482958440,"precipIntensity":0,"precipProbability":0},{"time":1482958500,"precipIntensity":0,"precipProbability":0},{"time":1482958560,"precipIntensity":0,"precipProbability":0},{"time":1482958620,"precipIntensity":0,"precipProbability":0},{"time":1482958680,"precipIntensity":0,"precipProbability":0},{"time":1482958740,"precipIntensity":0,"precipProbability":0},{"time":1482958800,"precipIntensity":0,"precipProbability":0},{"time":1482958860,"precipIntensity":0,"precipProbability":0},{"time":1482958920,"precipIntensity":0,"precipProbability":0},{"time":1482958980,"precipIntensity":0,"precipProbability":0},{"time":1482959040,"precipIntensity":0,"precipProbability":0},{"time":1482959100,"precipIntensity":0,"precipProbability":0},{"time":1482959160,"precipIntensity":0,"precipProbability":0},{"time":1482959220,"precipIntensity":0,"precipProbability":0},{"time":1482959280,"precipIntensity":0,"precipProbability":0},{"time":1482959340,"precipIntensity":0,"precipProbability":0},{"time":1482959400,"precipIntensity":0,"precipProbability":0},{"time":1482959460,"precipIntensity":0,"precipProbability":0},{"time":1482959520,"precipIntensity":0,"precipProbability":0},{"time":1482959580,"precipIntensity":0,"precipProbability":0},{"time":1482959640,"precipIntensity":0,"precipProbability":0},{"time":1482959700,"precipIntensity":0,"precipProbability":0},{"time":1482959760,"precipIntensity":0,"precipProbability":0},{"time":1482959820,"precipIntensity":0,"precipProbability":0},{"time":1482959880,"precipIntensity":0,"precipProbability":0},{"time":1482959940,"precipIntensity":0,"precipProbability":0},{"time":1482960000,"precipIntensity":0,"precipProbability":0},{"time":1482960060,"precipIntensity":0,"precipProbability":0},{"time":1482960120,"precipIntensity":0,"precipProbability":0}]},"hourly":{"summary":"Partly cloudy starting tomorrow morning.","icon":"partly-cloudy-day","data":[{"time":1482955200,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":53.01,"apparentTemperature":53.01,"dewPoint":37.59,"humidity":0.56,"windSpeed":6.22,"windBearing":30,"visibility":10,"cloudCover":0.13,"pressure":1026.4,"ozone":271.92},{"time":1482958800,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":54.4,"apparentTemperature":54.4,"dewPoint":37.42,"humidity":0.53,"windSpeed":6.55,"windBearing":27,"visibility":10,"cloudCover":0.12,"pressure":1024.28,"ozone":271.22},{"time":1482962400,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":55.46,"apparentTemperature":55.46,"dewPoint":38.85,"humidity":0.53,"windSpeed":6.11,"windBearing":31,"visibility":10,"cloudCover":0.11,"pressure":1023.56,"ozone":270.65},{"time":1482966000,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":56.97,"apparentTemperature":56.97,"dewPoint":40.56,"humidity":0.54,"windSpeed":5.66,"windBearing":31,"visibility":10,"cloudCover":0.11,"pressure":1022.99,"ozone":270.12},{"time":1482969600,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":56.62,"apparentTemperature":56.62,"dewPoint":41.9,"humidity":0.58,"windSpeed":4.77,"windBearing":29,"visibility":10,"cloudCover":0.11,"pressure":1022.67,"ozone":269.52},{"time":1482973200,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":54.71,"apparentTemperature":54.71,"dewPoint":41.81,"humidity":0.62,"windSpeed":4.07,"windBearing":33,"visibility":9.83,"cloudCover":0.1,"pressure":1022.69,"ozone":268.73},{"time":1482976800,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":52.58,"apparentTemperature":52.58,"dewPoint":41.22,"humidity":0.65,"windSpeed":3.66,"windBearing":45,"visibility":9.66,"cloudCover":0.1,"pressure":1022.89,"ozone":267.86},{"time":1482980400,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":50.75,"apparentTemperature":50.75,"dewPoint":40.11,"humidity":0.67,"windSpeed":3.59,"windBearing":52,"visibility":9.56,"cloudCover":0.1,"pressure":1023.13,"ozone":267.11},{"time":1482984000,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":49.28,"apparentTemperature":48.71,"dewPoint":39.01,"humidity":0.68,"windSpeed":3.16,"windBearing":60,"visibility":9.59,"cloudCover":0.04,"pressure":1023.35,"ozone":266.57},{"time":1482987600,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":48.12,"apparentTemperature":48.12,"dewPoint":38.07,"humidity":0.68,"windSpeed":2.77,"windBearing":65,"visibility":9.6,"cloudCover":0.04,"pressure":1023.55,"ozone":266.15},{"time":1482991200,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":47.23,"apparentTemperature":46.51,"dewPoint":37.71,"humidity":0.69,"windSpeed":3.03,"windBearing":59,"visibility":9.64,"cloudCover":0.05,"pressure":1023.62,"ozone":265.84},{"time":1482994800,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":46.77,"apparentTemperature":44.99,"dewPoint":37.31,"humidity":0.69,"windSpeed":4.19,"windBearing":52,"visibility":9.69,"cloudCover":0.13,"pressure":1023.45,"ozone":265.67},{"time":1482998400,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":45.92,"apparentTemperature":42.98,"dewPoint":36.68,"humidity":0.7,"windSpeed":5.7,"windBearing":51,"visibility":9.77,"cloudCover":0.25,"pressure":1023.16,"ozone":265.6},{"time":1483002000,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":45.33,"apparentTemperature":41.67,"dewPoint":36.16,"humidity":0.7,"windSpeed":6.78,"windBearing":55,"visibility":9.81,"cloudCover":0.27,"pressure":1022.89,"ozone":265.51},{"time":1483005600,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":44.32,"apparentTemperature":40.21,"dewPoint":35.51,"humidity":0.71,"windSpeed":7.25,"windBearing":59,"visibility":9.95,"cloudCover":0.18,"pressure":1022.69,"ozone":265.29},{"time":1483009200,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":43.77,"apparentTemperature":39.3,"dewPoint":34.91,"humidity":0.71,"windSpeed":7.73,"windBearing":63,"visibility":10,"cloudCover":0.05,"pressure":1022.52,"ozone":265.06},{"time":1483012800,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":43.26,"apparentTemperature":38.45,"dewPoint":34.43,"humidity":0.71,"windSpeed":8.22,"windBearing":65,"visibility":10,"cloudCover":0.02,"pressure":1022.39,"ozone":264.95},{"time":1483016400,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":42.71,"apparentTemperature":37.6,"dewPoint":34.9,"humidity":0.74,"windSpeed":8.61,"windBearing":67,"visibility":10,"cloudCover":0.01,"pressure":1022.3,"ozone":265.08},{"time":1483020000,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":42.46,"apparentTemperature":37.21,"dewPoint":35.13,"humidity":0.75,"windSpeed":8.78,"windBearing":70,"visibility":10,"cloudCover":0.01,"pressure":1022.26,"ozone":265.34},{"time":1483023600,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":43.59,"apparentTemperature":38.54,"dewPoint":36.31,"humidity":0.75,"windSpeed":8.92,"windBearing":73,"visibility":10,"cloudCover":0.11,"pressure":1022.31,"ozone":265.61},{"time":1483027200,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":44.76,"apparentTemperature":39.91,"dewPoint":37.17,"humidity":0.75,"windSpeed":9.06,"windBearing":74,"visibility":10,"cloudCover":0.33,"pressure":1022.55,"ozone":265.81},{"time":1483030800,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":48.09,"apparentTemperature":43.98,"dewPoint":38.94,"humidity":0.7,"windSpeed":9.13,"windBearing":74,"visibility":10,"cloudCover":0.43,"pressure":1022.87,"ozone":266.02},{"time":1483034400,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":49.94,"apparentTemperature":46.34,"dewPoint":38.99,"humidity":0.66,"windSpeed":8.94,"windBearing":73,"visibility":10,"cloudCover":0.54,"pressure":1022.94,"ozone":266.34},{"time":1483038000,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":51.77,"apparentTemperature":51.77,"dewPoint":39.46,"humidity":0.63,"windSpeed":8.89,"windBearing":71,"visibility":10,"cloudCover":0.48,"pressure":1022.56,"ozone":266.89},{"time":1483041600,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":54.32,"apparentTemperature":54.32,"dewPoint":40.48,"humidity":0.59,"windSpeed":8.96,"windBearing":68,"visibility":10,"cloudCover":0.3,"pressure":1021.93,"ozone":267.54},{"time":1483045200,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":57.16,"apparentTemperature":57.16,"dewPoint":42.43,"humidity":0.58,"windSpeed":8.89,"windBearing":65,"visibility":10,"cloudCover":0.16,"pressure":1021.34,"ozone":267.99},{"time":1483048800,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":59.63,"apparentTemperature":59.63,"dewPoint":44.6,"humidity":0.57,"windSpeed":8.48,"windBearing":61,"visibility":10,"cloudCover":0.14,"pressure":1020.89,"ozone":268.08},{"time":1483052400,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":61.01,"apparentTemperature":61.01,"dewPoint":46.4,"humidity":0.59,"windSpeed":8,"windBearing":57,"visibility":10,"cloudCover":0.23,"pressure":1020.5,"ozone":267.96},{"time":1483056000,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":60.77,"apparentTemperature":60.77,"dewPoint":47,"humidity":0.6,"windSpeed":7.45,"windBearing":55,"visibility":10,"cloudCover":0.31,"pressure":1020.25,"ozone":267.84},{"time":1483059600,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":59.96,"apparentTemperature":59.96,"dewPoint":47.46,"humidity":0.63,"windSpeed":6.73,"windBearing":57,"visibility":10,"cloudCover":0.38,"pressure":1020.18,"ozone":267.75},{"time":1483063200,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":57.92,"apparentTemperature":57.92,"dewPoint":46.91,"humidity":0.67,"windSpeed":5.97,"windBearing":65,"visibility":10,"cloudCover":0.49,"pressure":1020.23,"ozone":267.65},{"time":1483066800,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":56.07,"apparentTemperature":56.07,"dewPoint":46.04,"humidity":0.69,"windSpeed":5.65,"windBearing":70,"visibility":10,"cloudCover":0.56,"pressure":1020.32,"ozone":267.66},{"time":1483070400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":54.89,"apparentTemperature":54.89,"dewPoint":45,"humidity":0.69,"windSpeed":5.57,"windBearing":70,"visibility":10,"cloudCover":0.6,"pressure":1020.45,"ozone":267.81},{"time":1483074000,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":54.09,"apparentTemperature":54.09,"dewPoint":43.9,"humidity":0.68,"windSpeed":5.54,"windBearing":66,"visibility":10,"cloudCover":0.61,"pressure":1020.6,"ozone":268.06},{"time":1483077600,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":53.27,"apparentTemperature":53.27,"dewPoint":42.79,"humidity":0.68,"windSpeed":5.56,"windBearing":65,"visibility":10,"cloudCover":0.59,"pressure":1020.64,"ozone":268.35},{"time":1483081200,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":52.49,"apparentTemperature":52.49,"dewPoint":41.89,"humidity":0.67,"windSpeed":5.38,"windBearing":69,"visibility":10,"cloudCover":0.48,"pressure":1020.5,"ozone":268.75},{"time":1483084800,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":51.87,"apparentTemperature":51.87,"dewPoint":41.16,"humidity":0.67,"windSpeed":5.2,"windBearing":76,"visibility":10,"cloudCover":0.32,"pressure":1020.25,"ozone":269.18},{"time":1483088400,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":51.28,"apparentTemperature":51.28,"dewPoint":40.57,"humidity":0.67,"windSpeed":4.93,"windBearing":81,"visibility":10,"cloudCover":0.24,"pressure":1019.99,"ozone":269.42},{"time":1483092000,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":50.68,"apparentTemperature":50.68,"dewPoint":40.1,"humidity":0.67,"windSpeed":4.43,"windBearing":82,"visibility":10,"cloudCover":0.3,"pressure":1019.7,"ozone":269.33},{"time":1483095600,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":50.13,"apparentTemperature":50.13,"dewPoint":39.78,"humidity":0.67,"windSpeed":3.8,"windBearing":80,"visibility":10,"cloudCover":0.43,"pressure":1019.41,"ozone":269.05},{"time":1483099200,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":49.74,"apparentTemperature":49.25,"dewPoint":39.69,"humidity":0.68,"windSpeed":3.15,"windBearing":80,"visibility":10,"cloudCover":0.53,"pressure":1019.23,"ozone":268.73},{"time":1483102800,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":49.32,"apparentTemperature":49.32,"dewPoint":39.69,"humidity":0.69,"windSpeed":2.5,"windBearing":90,"visibility":10,"cloudCover":0.55,"pressure":1019.21,"ozone":268.32},{"time":1483106400,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":49.05,"apparentTemperature":49.05,"dewPoint":39.92,"humidity":0.71,"windSpeed":1.85,"windBearing":119,"visibility":10,"cloudCover":0.54,"pressure":1019.31,"ozone":267.88},{"time":1483110000,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":49.49,"apparentTemperature":49.49,"dewPoint":40.72,"humidity":0.72,"windSpeed":1.73,"windBearing":145,"visibility":10,"cloudCover":0.51,"pressure":1019.49,"ozone":267.64},{"time":1483113600,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":51.01,"apparentTemperature":51.01,"dewPoint":42.45,"humidity":0.72,"windSpeed":1.37,"windBearing":161,"visibility":10,"cloudCover":0.46,"pressure":1019.84,"ozone":267.89},{"time":1483117200,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":52.9,"apparentTemperature":52.9,"dewPoint":44.43,"humidity":0.73,"windSpeed":0.82,"windBearing":197,"visibility":10,"cloudCover":0.39,"pressure":1020.28,"ozone":268.35},{"time":1483120800,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":54.77,"apparentTemperature":54.77,"dewPoint":46.1,"humidity":0.72,"windSpeed":1.05,"windBearing":245,"visibility":10,"cloudCover":0.33,"pressure":1020.51,"ozone":268.51},{"time":1483124400,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":56.63,"apparentTemperature":56.63,"dewPoint":47.16,"humidity":0.71,"windSpeed":2.07,"windBearing":248,"visibility":10,"cloudCover":0.27,"pressure":1020.34,"ozone":268.04},{"time":1483128000,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":58.53,"apparentTemperature":58.53,"dewPoint":47.92,"humidity":0.68,"windSpeed":3.35,"windBearing":245,"visibility":10,"cloudCover":0.21,"pressure":1019.94,"ozone":267.26}]},"daily":{"summary":"Light rain on Saturday through Wednesday, with temperatures falling to 49°F on Wednesday.","icon":"rain","data":[{"time":1482912000,"summary":"Partly cloudy overnight.","icon":"partly-cloudy-night","sunriseTime":1482938748,"sunsetTime":1482973181,"moonPhase":0.98,"precipIntensity":0,"precipIntensityMax":0,"precipProbability":0,"temperatureMin":43.91,"temperatureMinTime":1482937200,"temperatureMax":56.97,"temperatureMaxTime":1482966000,"apparentTemperatureMin":39.5,"apparentTemperatureMinTime":1482937200,"apparentTemperatureMax":56.97,"apparentTemperatureMaxTime":1482966000,"dewPoint":38.32,"humidity":0.67,"windSpeed":5.21,"windBearing":27,"visibility":9.2,"cloudCover":0.07,"pressure":1025.09,"ozone":271.35},{"time":1482998400,"summary":"Partly cloudy throughout the day.","icon":"partly-cloudy-night","sunriseTime":1483025162,"sunsetTime":1483059623,"moonPhase":0.02,"precipIntensity":0,"precipIntensityMax":0,"precipProbability":0,"temperatureMin":42.46,"temperatureMinTime":1483020000,"temperatureMax":61.01,"temperatureMaxTime":1483052400,"apparentTemperatureMin":37.21,"apparentTemperatureMinTime":1483020000,"apparentTemperatureMax":61.01,"apparentTemperatureMaxTime":1483052400,"dewPoint":40.56,"humidity":0.67,"windSpeed":7.46,"windBearing":65,"visibility":9.98,"cloudCover":0.31,"pressure":1021.64,"ozone":266.79},{"time":1483084800,"summary":"Partly cloudy in the morning.","icon":"partly-cloudy-night","sunriseTime":1483111575,"sunsetTime":1483146066,"moonPhase":0.05,"precipIntensity":0,"precipIntensityMax":0,"precipProbability":0,"temperatureMin":46.82,"temperatureMinTime":1483167600,"temperatureMax":60.72,"temperatureMaxTime":1483138800,"apparentTemperatureMin":42.78,"apparentTemperatureMinTime":1483167600,"apparentTemperatureMax":60.72,"apparentTemperatureMaxTime":1483138800,"dewPoint":44.34,"humidity":0.73,"windSpeed":2.29,"windBearing":245,"visibility":10,"cloudCover":0.31,"pressure":1019.36,"ozone":269.71},{"time":1483171200,"summary":"Drizzle in the afternoon.","icon":"rain","sunriseTime":1483197986,"sunsetTime":1483232511,"moonPhase":0.08,"precipIntensity":0.0017,"precipIntensityMax":0.0061,"precipIntensityMaxTime":1483221600,"precipProbability":0.25,"precipType":"rain","temperatureMin":43.09,"temperatureMinTime":1483196400,"temperatureMax":54.8,"temperatureMaxTime":1483228800,"apparentTemperatureMin":42.56,"apparentTemperatureMinTime":1483171200,"apparentTemperatureMax":54.8,"apparentTemperatureMaxTime":1483228800,"dewPoint":41.45,"humidity":0.78,"windSpeed":3.44,"windBearing":315,"visibility":10,"cloudCover":0.35,"pressure":1017.22,"ozone":298.21},{"time":1483257600,"summary":"Light rain overnight.","icon":"rain","sunriseTime":1483284394,"sunsetTime":1483318958,"moonPhase":0.11,"precipIntensity":0,"precipIntensityMax":0,"precipProbability":0,"temperatureMin":42.29,"temperatureMinTime":1483282800,"temperatureMax":53.69,"temperatureMaxTime":1483311600,"apparentTemperatureMin":39.12,"apparentTemperatureMinTime":1483282800,"apparentTemperatureMax":53.69,"apparentTemperatureMaxTime":1483311600,"dewPoint":39.09,"humidity":0.73,"windSpeed":8.4,"windBearing":297,"cloudCover":0.02,"pressure":1016.89,"ozone":319.71},{"time":1483344000,"summary":"Light rain in the morning.","icon":"rain","sunriseTime":1483370801,"sunsetTime":1483405406,"moonPhase":0.15,"precipIntensity":0.0028,"precipIntensityMax":0.0149,"precipIntensityMaxTime":1483358400,"precipProbability":0.5,"precipType":"rain","temperatureMin":42.3,"temperatureMinTime":1483369200,"temperatureMax":49.82,"temperatureMaxTime":1483401600,"apparentTemperatureMin":36.75,"apparentTemperatureMinTime":1483369200,"apparentTemperatureMax":46.39,"apparentTemperatureMaxTime":1483401600,"dewPoint":35.77,"humidity":0.67,"windSpeed":8.7,"windBearing":301,"cloudCover":0.33,"pressure":1017.47,"ozone":323.43},{"time":1483430400,"summary":"Drizzle overnight.","icon":"rain","sunriseTime":1483457206,"sunsetTime":1483491855,"moonPhase":0.18,"precipIntensity":0.0021,"precipIntensityMax":0.0038,"precipIntensityMaxTime":1483513200,"precipProbability":0.13,"precipType":"rain","temperatureMin":37.27,"temperatureMinTime":1483455600,"temperatureMax":49.14,"temperatureMaxTime":1483488000,"apparentTemperatureMin":30.95,"apparentTemperatureMinTime":1483455600,"apparentTemperatureMax":45.67,"apparentTemperatureMaxTime":1483488000,"dewPoint":25.79,"humidity":0.54,"windSpeed":7.09,"windBearing":29,"cloudCover":0,"pressure":1023.39,"ozone":289.83},{"time":1483516800,"summary":"Drizzle in the morning and evening.","icon":"rain","sunriseTime":1483543608,"sunsetTime":1483578306,"moonPhase":0.22,"precipIntensity":0.0049,"precipIntensityMax":0.0087,"precipIntensityMaxTime":1483596000,"precipProbability":0.41,"precipType":"rain","temperatureMin":34.33,"temperatureMinTime":1483542000,"temperatureMax":48.75,"temperatureMaxTime":1483574400,"apparentTemperatureMin":29.05,"apparentTemperatureMinTime":1483542000,"apparentTemperatureMax":46.74,"apparentTemperatureMaxTime":1483574400,"dewPoint":20.27,"humidity":0.44,"windSpeed":5.14,"windBearing":54,"cloudCover":0,"pressure":1024.72,"ozone":293.3}]},"flags":{"sources":["darksky","lamp","gfs","cmc","nam","rap","rtma","sref","fnmoc","isd","nwspa","madis","nearest-precip"],"darksky-stations":["KMUX"],"lamp-stations":["KAPC","KCCR","KHWD","KLVK","KNUQ","KOAK","KPAO","KSFO","KSQL"],"isd-stations":["724943-99999","745039-99999","745065-99999","994016-99999","998479-99999"],"madis-stations":["AU915","C5988","C8158","C9629","CQ147","D5422","E0426","E6067","E9227","FTPC1","GGBC1","OKXC1","PPXC1","PXOC1","SFOC1","TIBC1"],"units":"us"}} \ No newline at end of file diff --git a/src/test/resources/response_null_currently.json b/src/test/resources/response_null_currently.json new file mode 100644 index 0000000..a56a63c --- /dev/null +++ b/src/test/resources/response_null_currently.json @@ -0,0 +1 @@ +{"latitude":37.8267,"longitude":-122.4233,"timezone":"America/Los_Angeles","offset":-8,"minutely":{"summary":"Clear for the hour.","icon":"clear-day","data":[{"time":1482956520,"precipIntensity":0,"precipProbability":0},{"time":1482956580,"precipIntensity":0,"precipProbability":0},{"time":1482956640,"precipIntensity":0,"precipProbability":0},{"time":1482956700,"precipIntensity":0,"precipProbability":0},{"time":1482956760,"precipIntensity":0,"precipProbability":0},{"time":1482956820,"precipIntensity":0,"precipProbability":0},{"time":1482956880,"precipIntensity":0,"precipProbability":0},{"time":1482956940,"precipIntensity":0,"precipProbability":0},{"time":1482957000,"precipIntensity":0,"precipProbability":0},{"time":1482957060,"precipIntensity":0,"precipProbability":0},{"time":1482957120,"precipIntensity":0,"precipProbability":0},{"time":1482957180,"precipIntensity":0,"precipProbability":0},{"time":1482957240,"precipIntensity":0,"precipProbability":0},{"time":1482957300,"precipIntensity":0,"precipProbability":0},{"time":1482957360,"precipIntensity":0,"precipProbability":0},{"time":1482957420,"precipIntensity":0,"precipProbability":0},{"time":1482957480,"precipIntensity":0,"precipProbability":0},{"time":1482957540,"precipIntensity":0,"precipProbability":0},{"time":1482957600,"precipIntensity":0,"precipProbability":0},{"time":1482957660,"precipIntensity":0,"precipProbability":0},{"time":1482957720,"precipIntensity":0,"precipProbability":0},{"time":1482957780,"precipIntensity":0,"precipProbability":0},{"time":1482957840,"precipIntensity":0,"precipProbability":0},{"time":1482957900,"precipIntensity":0,"precipProbability":0},{"time":1482957960,"precipIntensity":0,"precipProbability":0},{"time":1482958020,"precipIntensity":0,"precipProbability":0},{"time":1482958080,"precipIntensity":0,"precipProbability":0},{"time":1482958140,"precipIntensity":0,"precipProbability":0},{"time":1482958200,"precipIntensity":0,"precipProbability":0},{"time":1482958260,"precipIntensity":0,"precipProbability":0},{"time":1482958320,"precipIntensity":0,"precipProbability":0},{"time":1482958380,"precipIntensity":0,"precipProbability":0},{"time":1482958440,"precipIntensity":0,"precipProbability":0},{"time":1482958500,"precipIntensity":0,"precipProbability":0},{"time":1482958560,"precipIntensity":0,"precipProbability":0},{"time":1482958620,"precipIntensity":0,"precipProbability":0},{"time":1482958680,"precipIntensity":0,"precipProbability":0},{"time":1482958740,"precipIntensity":0,"precipProbability":0},{"time":1482958800,"precipIntensity":0,"precipProbability":0},{"time":1482958860,"precipIntensity":0,"precipProbability":0},{"time":1482958920,"precipIntensity":0,"precipProbability":0},{"time":1482958980,"precipIntensity":0,"precipProbability":0},{"time":1482959040,"precipIntensity":0,"precipProbability":0},{"time":1482959100,"precipIntensity":0,"precipProbability":0},{"time":1482959160,"precipIntensity":0,"precipProbability":0},{"time":1482959220,"precipIntensity":0,"precipProbability":0},{"time":1482959280,"precipIntensity":0,"precipProbability":0},{"time":1482959340,"precipIntensity":0,"precipProbability":0},{"time":1482959400,"precipIntensity":0,"precipProbability":0},{"time":1482959460,"precipIntensity":0,"precipProbability":0},{"time":1482959520,"precipIntensity":0,"precipProbability":0},{"time":1482959580,"precipIntensity":0,"precipProbability":0},{"time":1482959640,"precipIntensity":0,"precipProbability":0},{"time":1482959700,"precipIntensity":0,"precipProbability":0},{"time":1482959760,"precipIntensity":0,"precipProbability":0},{"time":1482959820,"precipIntensity":0,"precipProbability":0},{"time":1482959880,"precipIntensity":0,"precipProbability":0},{"time":1482959940,"precipIntensity":0,"precipProbability":0},{"time":1482960000,"precipIntensity":0,"precipProbability":0},{"time":1482960060,"precipIntensity":0,"precipProbability":0},{"time":1482960120,"precipIntensity":0,"precipProbability":0}]},"hourly":{"summary":"Partly cloudy starting tomorrow morning.","icon":"partly-cloudy-day","data":[{"time":1482955200,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":53.01,"apparentTemperature":53.01,"dewPoint":37.59,"humidity":0.56,"windSpeed":6.22,"windBearing":30,"visibility":10,"cloudCover":0.13,"pressure":1026.4,"ozone":271.92},{"time":1482958800,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":54.4,"apparentTemperature":54.4,"dewPoint":37.42,"humidity":0.53,"windSpeed":6.55,"windBearing":27,"visibility":10,"cloudCover":0.12,"pressure":1024.28,"ozone":271.22},{"time":1482962400,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":55.46,"apparentTemperature":55.46,"dewPoint":38.85,"humidity":0.53,"windSpeed":6.11,"windBearing":31,"visibility":10,"cloudCover":0.11,"pressure":1023.56,"ozone":270.65},{"time":1482966000,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":56.97,"apparentTemperature":56.97,"dewPoint":40.56,"humidity":0.54,"windSpeed":5.66,"windBearing":31,"visibility":10,"cloudCover":0.11,"pressure":1022.99,"ozone":270.12},{"time":1482969600,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":56.62,"apparentTemperature":56.62,"dewPoint":41.9,"humidity":0.58,"windSpeed":4.77,"windBearing":29,"visibility":10,"cloudCover":0.11,"pressure":1022.67,"ozone":269.52},{"time":1482973200,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":54.71,"apparentTemperature":54.71,"dewPoint":41.81,"humidity":0.62,"windSpeed":4.07,"windBearing":33,"visibility":9.83,"cloudCover":0.1,"pressure":1022.69,"ozone":268.73},{"time":1482976800,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":52.58,"apparentTemperature":52.58,"dewPoint":41.22,"humidity":0.65,"windSpeed":3.66,"windBearing":45,"visibility":9.66,"cloudCover":0.1,"pressure":1022.89,"ozone":267.86},{"time":1482980400,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":50.75,"apparentTemperature":50.75,"dewPoint":40.11,"humidity":0.67,"windSpeed":3.59,"windBearing":52,"visibility":9.56,"cloudCover":0.1,"pressure":1023.13,"ozone":267.11},{"time":1482984000,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":49.28,"apparentTemperature":48.71,"dewPoint":39.01,"humidity":0.68,"windSpeed":3.16,"windBearing":60,"visibility":9.59,"cloudCover":0.04,"pressure":1023.35,"ozone":266.57},{"time":1482987600,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":48.12,"apparentTemperature":48.12,"dewPoint":38.07,"humidity":0.68,"windSpeed":2.77,"windBearing":65,"visibility":9.6,"cloudCover":0.04,"pressure":1023.55,"ozone":266.15},{"time":1482991200,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":47.23,"apparentTemperature":46.51,"dewPoint":37.71,"humidity":0.69,"windSpeed":3.03,"windBearing":59,"visibility":9.64,"cloudCover":0.05,"pressure":1023.62,"ozone":265.84},{"time":1482994800,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":46.77,"apparentTemperature":44.99,"dewPoint":37.31,"humidity":0.69,"windSpeed":4.19,"windBearing":52,"visibility":9.69,"cloudCover":0.13,"pressure":1023.45,"ozone":265.67},{"time":1482998400,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":45.92,"apparentTemperature":42.98,"dewPoint":36.68,"humidity":0.7,"windSpeed":5.7,"windBearing":51,"visibility":9.77,"cloudCover":0.25,"pressure":1023.16,"ozone":265.6},{"time":1483002000,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":45.33,"apparentTemperature":41.67,"dewPoint":36.16,"humidity":0.7,"windSpeed":6.78,"windBearing":55,"visibility":9.81,"cloudCover":0.27,"pressure":1022.89,"ozone":265.51},{"time":1483005600,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":44.32,"apparentTemperature":40.21,"dewPoint":35.51,"humidity":0.71,"windSpeed":7.25,"windBearing":59,"visibility":9.95,"cloudCover":0.18,"pressure":1022.69,"ozone":265.29},{"time":1483009200,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":43.77,"apparentTemperature":39.3,"dewPoint":34.91,"humidity":0.71,"windSpeed":7.73,"windBearing":63,"visibility":10,"cloudCover":0.05,"pressure":1022.52,"ozone":265.06},{"time":1483012800,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":43.26,"apparentTemperature":38.45,"dewPoint":34.43,"humidity":0.71,"windSpeed":8.22,"windBearing":65,"visibility":10,"cloudCover":0.02,"pressure":1022.39,"ozone":264.95},{"time":1483016400,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":42.71,"apparentTemperature":37.6,"dewPoint":34.9,"humidity":0.74,"windSpeed":8.61,"windBearing":67,"visibility":10,"cloudCover":0.01,"pressure":1022.3,"ozone":265.08},{"time":1483020000,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":42.46,"apparentTemperature":37.21,"dewPoint":35.13,"humidity":0.75,"windSpeed":8.78,"windBearing":70,"visibility":10,"cloudCover":0.01,"pressure":1022.26,"ozone":265.34},{"time":1483023600,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":43.59,"apparentTemperature":38.54,"dewPoint":36.31,"humidity":0.75,"windSpeed":8.92,"windBearing":73,"visibility":10,"cloudCover":0.11,"pressure":1022.31,"ozone":265.61},{"time":1483027200,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":44.76,"apparentTemperature":39.91,"dewPoint":37.17,"humidity":0.75,"windSpeed":9.06,"windBearing":74,"visibility":10,"cloudCover":0.33,"pressure":1022.55,"ozone":265.81},{"time":1483030800,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":48.09,"apparentTemperature":43.98,"dewPoint":38.94,"humidity":0.7,"windSpeed":9.13,"windBearing":74,"visibility":10,"cloudCover":0.43,"pressure":1022.87,"ozone":266.02},{"time":1483034400,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":49.94,"apparentTemperature":46.34,"dewPoint":38.99,"humidity":0.66,"windSpeed":8.94,"windBearing":73,"visibility":10,"cloudCover":0.54,"pressure":1022.94,"ozone":266.34},{"time":1483038000,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":51.77,"apparentTemperature":51.77,"dewPoint":39.46,"humidity":0.63,"windSpeed":8.89,"windBearing":71,"visibility":10,"cloudCover":0.48,"pressure":1022.56,"ozone":266.89},{"time":1483041600,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":54.32,"apparentTemperature":54.32,"dewPoint":40.48,"humidity":0.59,"windSpeed":8.96,"windBearing":68,"visibility":10,"cloudCover":0.3,"pressure":1021.93,"ozone":267.54},{"time":1483045200,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":57.16,"apparentTemperature":57.16,"dewPoint":42.43,"humidity":0.58,"windSpeed":8.89,"windBearing":65,"visibility":10,"cloudCover":0.16,"pressure":1021.34,"ozone":267.99},{"time":1483048800,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":59.63,"apparentTemperature":59.63,"dewPoint":44.6,"humidity":0.57,"windSpeed":8.48,"windBearing":61,"visibility":10,"cloudCover":0.14,"pressure":1020.89,"ozone":268.08},{"time":1483052400,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":61.01,"apparentTemperature":61.01,"dewPoint":46.4,"humidity":0.59,"windSpeed":8,"windBearing":57,"visibility":10,"cloudCover":0.23,"pressure":1020.5,"ozone":267.96},{"time":1483056000,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":60.77,"apparentTemperature":60.77,"dewPoint":47,"humidity":0.6,"windSpeed":7.45,"windBearing":55,"visibility":10,"cloudCover":0.31,"pressure":1020.25,"ozone":267.84},{"time":1483059600,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":59.96,"apparentTemperature":59.96,"dewPoint":47.46,"humidity":0.63,"windSpeed":6.73,"windBearing":57,"visibility":10,"cloudCover":0.38,"pressure":1020.18,"ozone":267.75},{"time":1483063200,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":57.92,"apparentTemperature":57.92,"dewPoint":46.91,"humidity":0.67,"windSpeed":5.97,"windBearing":65,"visibility":10,"cloudCover":0.49,"pressure":1020.23,"ozone":267.65},{"time":1483066800,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":56.07,"apparentTemperature":56.07,"dewPoint":46.04,"humidity":0.69,"windSpeed":5.65,"windBearing":70,"visibility":10,"cloudCover":0.56,"pressure":1020.32,"ozone":267.66},{"time":1483070400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":54.89,"apparentTemperature":54.89,"dewPoint":45,"humidity":0.69,"windSpeed":5.57,"windBearing":70,"visibility":10,"cloudCover":0.6,"pressure":1020.45,"ozone":267.81},{"time":1483074000,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":54.09,"apparentTemperature":54.09,"dewPoint":43.9,"humidity":0.68,"windSpeed":5.54,"windBearing":66,"visibility":10,"cloudCover":0.61,"pressure":1020.6,"ozone":268.06},{"time":1483077600,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":53.27,"apparentTemperature":53.27,"dewPoint":42.79,"humidity":0.68,"windSpeed":5.56,"windBearing":65,"visibility":10,"cloudCover":0.59,"pressure":1020.64,"ozone":268.35},{"time":1483081200,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":52.49,"apparentTemperature":52.49,"dewPoint":41.89,"humidity":0.67,"windSpeed":5.38,"windBearing":69,"visibility":10,"cloudCover":0.48,"pressure":1020.5,"ozone":268.75},{"time":1483084800,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":51.87,"apparentTemperature":51.87,"dewPoint":41.16,"humidity":0.67,"windSpeed":5.2,"windBearing":76,"visibility":10,"cloudCover":0.32,"pressure":1020.25,"ozone":269.18},{"time":1483088400,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":51.28,"apparentTemperature":51.28,"dewPoint":40.57,"humidity":0.67,"windSpeed":4.93,"windBearing":81,"visibility":10,"cloudCover":0.24,"pressure":1019.99,"ozone":269.42},{"time":1483092000,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":50.68,"apparentTemperature":50.68,"dewPoint":40.1,"humidity":0.67,"windSpeed":4.43,"windBearing":82,"visibility":10,"cloudCover":0.3,"pressure":1019.7,"ozone":269.33},{"time":1483095600,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":50.13,"apparentTemperature":50.13,"dewPoint":39.78,"humidity":0.67,"windSpeed":3.8,"windBearing":80,"visibility":10,"cloudCover":0.43,"pressure":1019.41,"ozone":269.05},{"time":1483099200,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":49.74,"apparentTemperature":49.25,"dewPoint":39.69,"humidity":0.68,"windSpeed":3.15,"windBearing":80,"visibility":10,"cloudCover":0.53,"pressure":1019.23,"ozone":268.73},{"time":1483102800,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":49.32,"apparentTemperature":49.32,"dewPoint":39.69,"humidity":0.69,"windSpeed":2.5,"windBearing":90,"visibility":10,"cloudCover":0.55,"pressure":1019.21,"ozone":268.32},{"time":1483106400,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":49.05,"apparentTemperature":49.05,"dewPoint":39.92,"humidity":0.71,"windSpeed":1.85,"windBearing":119,"visibility":10,"cloudCover":0.54,"pressure":1019.31,"ozone":267.88},{"time":1483110000,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":49.49,"apparentTemperature":49.49,"dewPoint":40.72,"humidity":0.72,"windSpeed":1.73,"windBearing":145,"visibility":10,"cloudCover":0.51,"pressure":1019.49,"ozone":267.64},{"time":1483113600,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":51.01,"apparentTemperature":51.01,"dewPoint":42.45,"humidity":0.72,"windSpeed":1.37,"windBearing":161,"visibility":10,"cloudCover":0.46,"pressure":1019.84,"ozone":267.89},{"time":1483117200,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":52.9,"apparentTemperature":52.9,"dewPoint":44.43,"humidity":0.73,"windSpeed":0.82,"windBearing":197,"visibility":10,"cloudCover":0.39,"pressure":1020.28,"ozone":268.35},{"time":1483120800,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":54.77,"apparentTemperature":54.77,"dewPoint":46.1,"humidity":0.72,"windSpeed":1.05,"windBearing":245,"visibility":10,"cloudCover":0.33,"pressure":1020.51,"ozone":268.51},{"time":1483124400,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":56.63,"apparentTemperature":56.63,"dewPoint":47.16,"humidity":0.71,"windSpeed":2.07,"windBearing":248,"visibility":10,"cloudCover":0.27,"pressure":1020.34,"ozone":268.04},{"time":1483128000,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":58.53,"apparentTemperature":58.53,"dewPoint":47.92,"humidity":0.68,"windSpeed":3.35,"windBearing":245,"visibility":10,"cloudCover":0.21,"pressure":1019.94,"ozone":267.26}]},"daily":{"summary":"Light rain on Saturday through Wednesday, with temperatures falling to 49°F on Wednesday.","icon":"rain","data":[{"time":1482912000,"summary":"Partly cloudy overnight.","icon":"partly-cloudy-night","sunriseTime":1482938748,"sunsetTime":1482973181,"moonPhase":0.98,"precipIntensity":0,"precipIntensityMax":0,"precipProbability":0,"temperatureMin":43.91,"temperatureMinTime":1482937200,"temperatureMax":56.97,"temperatureMaxTime":1482966000,"apparentTemperatureMin":39.5,"apparentTemperatureMinTime":1482937200,"apparentTemperatureMax":56.97,"apparentTemperatureMaxTime":1482966000,"dewPoint":38.32,"humidity":0.67,"windSpeed":5.21,"windBearing":27,"visibility":9.2,"cloudCover":0.07,"pressure":1025.09,"ozone":271.35},{"time":1482998400,"summary":"Partly cloudy throughout the day.","icon":"partly-cloudy-night","sunriseTime":1483025162,"sunsetTime":1483059623,"moonPhase":0.02,"precipIntensity":0,"precipIntensityMax":0,"precipProbability":0,"temperatureMin":42.46,"temperatureMinTime":1483020000,"temperatureMax":61.01,"temperatureMaxTime":1483052400,"apparentTemperatureMin":37.21,"apparentTemperatureMinTime":1483020000,"apparentTemperatureMax":61.01,"apparentTemperatureMaxTime":1483052400,"dewPoint":40.56,"humidity":0.67,"windSpeed":7.46,"windBearing":65,"visibility":9.98,"cloudCover":0.31,"pressure":1021.64,"ozone":266.79},{"time":1483084800,"summary":"Partly cloudy in the morning.","icon":"partly-cloudy-night","sunriseTime":1483111575,"sunsetTime":1483146066,"moonPhase":0.05,"precipIntensity":0,"precipIntensityMax":0,"precipProbability":0,"temperatureMin":46.82,"temperatureMinTime":1483167600,"temperatureMax":60.72,"temperatureMaxTime":1483138800,"apparentTemperatureMin":42.78,"apparentTemperatureMinTime":1483167600,"apparentTemperatureMax":60.72,"apparentTemperatureMaxTime":1483138800,"dewPoint":44.34,"humidity":0.73,"windSpeed":2.29,"windBearing":245,"visibility":10,"cloudCover":0.31,"pressure":1019.36,"ozone":269.71},{"time":1483171200,"summary":"Drizzle in the afternoon.","icon":"rain","sunriseTime":1483197986,"sunsetTime":1483232511,"moonPhase":0.08,"precipIntensity":0.0017,"precipIntensityMax":0.0061,"precipIntensityMaxTime":1483221600,"precipProbability":0.25,"precipType":"rain","temperatureMin":43.09,"temperatureMinTime":1483196400,"temperatureMax":54.8,"temperatureMaxTime":1483228800,"apparentTemperatureMin":42.56,"apparentTemperatureMinTime":1483171200,"apparentTemperatureMax":54.8,"apparentTemperatureMaxTime":1483228800,"dewPoint":41.45,"humidity":0.78,"windSpeed":3.44,"windBearing":315,"visibility":10,"cloudCover":0.35,"pressure":1017.22,"ozone":298.21},{"time":1483257600,"summary":"Light rain overnight.","icon":"rain","sunriseTime":1483284394,"sunsetTime":1483318958,"moonPhase":0.11,"precipIntensity":0,"precipIntensityMax":0,"precipProbability":0,"temperatureMin":42.29,"temperatureMinTime":1483282800,"temperatureMax":53.69,"temperatureMaxTime":1483311600,"apparentTemperatureMin":39.12,"apparentTemperatureMinTime":1483282800,"apparentTemperatureMax":53.69,"apparentTemperatureMaxTime":1483311600,"dewPoint":39.09,"humidity":0.73,"windSpeed":8.4,"windBearing":297,"cloudCover":0.02,"pressure":1016.89,"ozone":319.71},{"time":1483344000,"summary":"Light rain in the morning.","icon":"rain","sunriseTime":1483370801,"sunsetTime":1483405406,"moonPhase":0.15,"precipIntensity":0.0028,"precipIntensityMax":0.0149,"precipIntensityMaxTime":1483358400,"precipProbability":0.5,"precipType":"rain","temperatureMin":42.3,"temperatureMinTime":1483369200,"temperatureMax":49.82,"temperatureMaxTime":1483401600,"apparentTemperatureMin":36.75,"apparentTemperatureMinTime":1483369200,"apparentTemperatureMax":46.39,"apparentTemperatureMaxTime":1483401600,"dewPoint":35.77,"humidity":0.67,"windSpeed":8.7,"windBearing":301,"cloudCover":0.33,"pressure":1017.47,"ozone":323.43},{"time":1483430400,"summary":"Drizzle overnight.","icon":"rain","sunriseTime":1483457206,"sunsetTime":1483491855,"moonPhase":0.18,"precipIntensity":0.0021,"precipIntensityMax":0.0038,"precipIntensityMaxTime":1483513200,"precipProbability":0.13,"precipType":"rain","temperatureMin":37.27,"temperatureMinTime":1483455600,"temperatureMax":49.14,"temperatureMaxTime":1483488000,"apparentTemperatureMin":30.95,"apparentTemperatureMinTime":1483455600,"apparentTemperatureMax":45.67,"apparentTemperatureMaxTime":1483488000,"dewPoint":25.79,"humidity":0.54,"windSpeed":7.09,"windBearing":29,"cloudCover":0,"pressure":1023.39,"ozone":289.83},{"time":1483516800,"summary":"Drizzle in the morning and evening.","icon":"rain","sunriseTime":1483543608,"sunsetTime":1483578306,"moonPhase":0.22,"precipIntensity":0.0049,"precipIntensityMax":0.0087,"precipIntensityMaxTime":1483596000,"precipProbability":0.41,"precipType":"rain","temperatureMin":34.33,"temperatureMinTime":1483542000,"temperatureMax":48.75,"temperatureMaxTime":1483574400,"apparentTemperatureMin":29.05,"apparentTemperatureMinTime":1483542000,"apparentTemperatureMax":46.74,"apparentTemperatureMaxTime":1483574400,"dewPoint":20.27,"humidity":0.44,"windSpeed":5.14,"windBearing":54,"cloudCover":0,"pressure":1024.72,"ozone":293.3}]},"flags":{"sources":["darksky","lamp","gfs","cmc","nam","rap","rtma","sref","fnmoc","isd","nwspa","madis","nearest-precip"],"darksky-stations":["KMUX"],"lamp-stations":["KAPC","KCCR","KHWD","KLVK","KNUQ","KOAK","KPAO","KSFO","KSQL"],"isd-stations":["724943-99999","745039-99999","745065-99999","994016-99999","998479-99999"],"madis-stations":["AU915","C5988","C8158","C9629","CQ147","D5422","E0426","E6067","E9227","FTPC1","GGBC1","OKXC1","PPXC1","PXOC1","SFOC1","TIBC1"],"units":"us"}} \ No newline at end of file