/unsplash-elixir

Unsplash API client for Elixir

Primary LanguageElixir

Unsplash Build Status Hex pm Codacy Badge

Unsplash API wrapper in Elixir.

Exmaple Usage

  • Unsplash.Photos.search(query: "Austin", catgeroy: "2") |> Enum.take(1)
  • Unsplash.Collections.all |> Enum.take(1)
  • All API endpoints are supported. See the documentation for full list.

Each API call that is paginated returns a stream. You can resolve the stream by calling any Enum function, this way you don't have to think about pagination. For example to get one random photo: Unsplash.Photos.random |> Enum.take(1) or to get 100 random photos: Unsplash.Photos.random |> Enum.take(100).

Configuration

See the secrets.exs file on what configuration variables need to be configured.

Authorization

Get an auth code by directing a user to the url generated by this command (replace the scope with what you would like): Unsplash.OAuth.authorize_url! scope: "public read_user write_user read_photos write_photos write_likes read_collections write_collections"

After the user grants access, she will be redirected back to your redirect_uri whith a code query paramater, which you then set like this: Unsplash.OAuth.authorize!(code: auth_code_from_the_callback)

Now every API call will use the access_code gerenated in the above step automatically.

Installation

  1. Add unsplash to your list of dependencies in mix.exs:
    def deps do
      [{:unsplash, "~> 1.1.0"}]
    end
  1. Ensure unsplash is started before your application:
    def application do
      [applications: [:unsplash]]
    end