A Darksky.net (formerly forecast.io) weather API client for Elixir
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config
lib
test
.formatter.exs
.gitignore
LICENSE
README.md
mix.exs
mix.lock

README.md

Darkskyx

Build Status Hex version Hex downloads

A Darksky.net weather api client for Elixir

Installation

If available in Hex, the package can be installed as:

Add darkskyx to your list of dependencies in mix.exs:

def deps do
  [{:darkskyx, "~> 0.1.5"}]
end

Ensure darkskyx is started before your application:

def application do
  [applications: [:darkskyx]]
end

Usage

You can use darkskyx to perform forecast as well as time machine request. You will need to configure the darksky api key properly.

configuration

The simplest would be to set darksky api key as below:

export DARKSKY_API_KEY=<api_key>

Now, in your config.exs (or environment specific configuration), add the config block to configure Darkskyx. You can pass keyword list of units, lang, excludes and extends for the defaults config block which will be used to override the global default configuration. The default configuration is to use units: auto and lang: en. On top of the default configuration, you can also override the default configuration per request by passing the %Darkskyx{} struct configured to your liking.

config :darkskyx, api_key: System.get_env("DARKSKY_API_KEY"),
  defaults: [
    units: "us",
    lang: "en"
  ]

Examples

Darkskyx.forecast(41.032, -94.234)

Darkskyx.forecast(41.043, -93.23432, %Darkskyx{lang: "ar"})

Darkskyx.forecast(41.032, -94.234, %Darkskyx{exclude: "daily,hourly"})

Darkskyx.time_machine(41.043, -93.23432, 13432423)

Darkskyx.time_machine(41.043, -93.23432, 13432423, %Darkskyx{lang: "ar", units: "si"})

Darkskyx.current(37, -94)

Darkskyx.current(37, -94, %Darkskyx{lang: "ar"})

To Do

  • Consider adding shortcuts such as current instead of having to parse response on users side
  • Consider adding rate-limit and show current day API usage

Author

License