Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/trenpixster/asanaficator

An elixir wrapper for Asana
https://github.com/trenpixster/asanaficator

Last synced: about 2 months ago
JSON representation

An elixir wrapper for Asana

Awesome Lists containing this project

README

        

[![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" => "[email protected]", "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