filippotosetto / SwiftOpenWeatherMapAPI

Swift Open Weather Map API is a wrapper around OpenWeatherAPI
MIT License
38 stars 15 forks source link

Swift Open Weather Map API

Swift Open Weather Map API is a wrapper around OpenWeatherAPI

Platform CocoaPods Compatible Carthage compatible

Requirements

Installation

CocoaPods

You can use CocoaPods to install SwiftOpenWeatherMapAPI adding it to your Podfile:

pod 'SwiftOpenWeatherMapAPI'

Then, run the following command:

$ pod install

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate Alamofire into your Xcode project using Carthage, specify it in your Cartfile:

github "filippotosetto/SwiftOpenWeatherMapAPI"

Run carthage update to build the framework and drag the built Alamofire.framework, SwiftyJSON.framework and SwiftOpenWeatherMapAPI.framework into your Xcode project.

Initialization

Include the header:

import SwiftOpenWeatherMapAPI

Setup the api:

// Setup weather api
let weatherAPI = WAPIManager(apiKey: "YOUR_API_KEY")

// Setup weather api with temperature format
let weatherAPI = WAPIManager(apiKey: "YOUR_API_KEY", temperatureFormat: .Celsius)

// Setup weather api with temperature format and language
let weatherAPI = WAPIManager(apiKey: "YOUR_API_KEY", temperatureFormat: .Celsius, lang: .English)

Getting data

The api is at this time just simple wrapper for the http-api.

weatherAPI.currentWeatherByCityNameAsJson("London") { (result) -> Void in
    //Do something with the data
}

The result is a WeatherResult emum

public enum WeatherResult {
    case Success(JSON)
    case Error(String)
}

In case of success the associated object is of type JSOM coming from mapping the api data using SwiftyJSON.

In case of error the associated type is a String describing the failure.

Usage

The following methods are available at this time:

Current Weather

Current weather by city name:

public func currentWeatherByCityNameAsJson(cityName: String, data: (WeatherResult) -> Void)

Current weather by coordinate:

public func currentWeatherByCoordinatesAsJson(coordinates: CLLocationCoordinate2D, data: (WeatherResult) -> Void)

Forecasts (3 hour intervals)

forecast by city name:

public func forecastWeatherByCityNameAsJson(cityName: String, data: (WeatherResult) -> Void)

forecast by coordinate:

public func forecastWeatherByCoordinatesAsJson(coordinates: CLLocationCoordinate2D, data: (WeatherResult) -> Void)

Daily Forecasts

daily forecast by city name:

public func dailyForecastWeatherByCityNameAsJson(cityName: String, data: (WeatherResult) -> Void)

daily forecast by coordinates:

public func dailyForecastWeatherByCoordinatesAsJson(coordinates: CLLocationCoordinate2D, data: (WeatherResult) -> Void)

Historic Data

historic data by city name:

public func historicDataByCityNameAsJson(cityName: String, start: NSDate, end: NSDate?, data: (WeatherResult) -> Void)

historic data by coordinates:

public func historicDataByCoordinatesAsJson(coordinates: CLLocationCoordinate2D, start: NSDate, end: NSDate?, data: (WeatherResult) -> Void)