Library for using forecast.io api
Clone or download
kushanj1 Merge pull request #1 from jowieweb/patch-1
added spaces to the headlines to fix for markdown
Latest commit a2e0862 Jun 14, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
jarfiles javadoc Aug 20, 2013
javadoc updated javadocs Aug 20, 2013
release better way to set option Aug 19, 2013
src/com/arcusweather/forecastio couple extra checks Aug 23, 2013
.gitattributes first commit Aug 18, 2013
.gitignore first commit Aug 18, 2013
LICENSE.txt update license Oct 12, 2013
readme.md added spaces to the headlines to fix for markdown Jun 13, 2017

readme.md

ForecastIOLibrary

This library was created for and used by the Android App "Arcus Weather".

This project provides a Java library for using the Forecast.IO weather api. Please take a look at http://developer.forecast.io to get details on the API and what data is returned.

I have implemented classes for each data block/point that forecast.io provides.

All attempts to get a value from the respective object will either return the value, or null if it does not exist. (Hopefully I haven't missed any occurences of this).

The Classes provided are as follows:

  • ForecastIO.java - The main class that sets up the API request.
  • ForecastIOResponse.java - Class that handles the response from the API call, and sets all data points.
  • ForecastIOCurrently.java - Implements a ForecastIODataPoint representing current weather conditions.
  • ForecastIOMinutely.java - Implements a ForecastIODataBlock representing next hour weather conditions.
  • ForecastIOHourly.java - Implements a ForecastIODataBlock representing next 48 hour weather conditions.
  • ForecastIODaily.java - Implements a ForecastIODataBlock representing next 7 day weather conditions.
  • ForecastIODataBlock.java - Implements a list of ForecastIODataPoints.
  • ForecastIODataPoint.java - Implements all data points sent back by the API call.
  • ForecastIOAlerts.java - Implements a list of ForecastIOAlert.
  • ForecastIOAlert.java - Implements all data points sent back for alerts by the API call.
  • ForecastIOFlags.java - Implements a portion of data points sent back by the API call.

Usage

Use the jar file as you normally would in your project. Then proceed as follows:

    ForecastIO FIO = new ForecastIO(apiKey, latitude, longitude);  
	
	//ability to set the units, exclude blocks, extend options and user agent for the request. This is not required.
	HashMap<String, String> requestParam = new HashMap<String, String>();
	requestParams.put("units", "us");
	requestParams.put("userAgent", "Custom User Agent 1.0");
	FIO.setRequestParams(requestParams);
    FIO.makeRequest();  

    String responseString = FIO.getResponseString();  
    ForecastIOResponse FIOR = new ForecastIOResponse(responseString);  

    //The library provides an easy way to access values as strings and data points as a list.
    String currentSummary = FIOR.getValue("current-summary");
    String thirdHourlyTemperature = FIOR.getValue("hourly-2-temperature");
    String firstDailyIcon = FIOR.getValue("daily-0-icon");
	
	//alerts defaults to first alert if not given an index. (Usually there is only one alert).
    String alertDescription = FIOR.getValue("alerts-description"); 

    ForecastIODataPoint[] minutelyPoints = FIOR.getDataPoints("minutely");
    double thirtiethMinutePrecipitation = minutelyPoints[29].getValueAsDouble("precipitationIntensity");

    ForecastIODataPoint[] hourlyPoints = FIOR.getDataPoints("hourly");
    ForecastIODataPoint[] dailyPoints = FIOR.getDataPoints("daily");

    //you can also do it the hard way
    String currentSummary = FIOR.getCurrently().getValue("summary");
    String firstDailyIcon = FIOR.getDaily().getData[0].getValue("icon");

Please note that this library requires the JSON project that you will need to add to your build path.

I got the .jar file from here: http://www.java2s.com/Code/JarDownload/java/java-json.jar.zip

My Java is probably at a very low level, so excuse any weirdness.

It was also very late at night when I wrote the javadoc method descriptions, so please excuse the terrible descriptions and the random nonsensical words/