README.md

[![Build Status](https://travis-ci.org/trenpixster/asanaficator.png)](https://travis-ci.org/trenpixster/asanaficator)

# Asanaficator

Simple Elixir wrapper for the [Asana API](https://asana.com/developers/api-reference).
Based on [Tentacat](https://github.com/edgurgel/tentacat).

Documentation can be found [here](http://hexdocs.pm/asanaficator/).

## Features

* Users
* Tasks
  * Projects

## Quickstart

Fetching dependencies and running on elixir console:

```console
mix deps.get
iex -S mix
```

You will see something like this:

```
Erlang/OTP 17 [erts-6.0] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Interactive Elixir (0.13.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
```

Now you can run the examples!

## Examples

Every call to Asana need a client.

Getting info from a user using a client

```iex
iex> client = Asanaficator.Client.new(%{access_token: "1234567890"})
Asanaficator.Client{auth: %{access_token: "1234567890"}, endpoint: "https://app.asana.com/api/1.0/"}
iex> Asanaficator.Users.me client
%{"data" => %{"email" => "john.doe@example.com", "id" => 123,
    "name" => "John Doe",
    "photo" => %{"image_128x128" => "https://s3.amazonaws.com/profile_photos/123.abc_128x128.png",
      "image_21x21" => "https://s3.amazonaws.com/profile_photos/123.abc_21x21.png",
      "image_27x27" => "https://s3.amazonaws.com/profile_photos/123.abc_27x27.png",
      "image_36x36" => "https://s3.amazonaws.com/profile_photos/123.abc_36x36.png",
      "image_60x60" => "https://s3.amazonaws.com/profile_photos/123.abc_60x60.png"},
    "workspaces" => [%{"id" => 456, "name" => "example.com"},
     %{"id" => 789, "name" => "Personal Projects"}]}}
```

Getting a task

```iex
iex> Asanaficator.Tasks.find(12345, client)
%{"data" => %{"assignee" => nil, "assignee_status" => "upcoming",
    "completed" => false, "completed_at" => nil,
    "created_at" => "2015-06-30T00:40:30.971Z", "due_at" => nil,
    "due_on" => nil,
    "followers" => [%{"id" => 123, "name" => "John Doe"}], "hearted" => false,
    "hearts" => [], "id" => 456,
    "memberships" => [%{"project" => %{"id" => 456,
         "name" => "That Awesome Project"}, "section" => nil}],
    "modified_at" => "2015-06-30T11:11:37.472Z",
    "name" => "This is an example task",
    "notes" => "Some really great descriptive notes",
    "num_hearts" => 0, "parent" => nil,
    "projects" => [%{"id" => 456,
       "name" => "That Awesome Project"}], "tags" => [],
    "workspace" => %{"id" => 456, "name" => "example.com"}}}
```

## Contributing

Start by forking this repo

Then run this command to fetch dependencies and run tests:

```console
MIX_ENV=test mix do deps.get, test
```

Pull requests are greatly appreciated