README.md

# OnesignalElixir

This project is a wrapper for using the awesome Onesignal APIs.
Currently supports the following Onesignal APIs
Create Notification

## Installation

The package is [available in Hex](https://hexdocs.pm/onesignal_elixir), and can be installed
by adding `onesignal_elixir` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:onesignal_elixir, "~> 0.1.5"}
  ]
end
```
Config
```elixir
config :onesignal_elixir,
    rest_api_key: "YOUR-ONESIGNAL-REST-API-KEY",
    app_id: "YOUR-ONESIGNAL-APP-ID"
```
Usage Examples
```elixir
iex(1)> alias OnesignalElixir.{Notification,Builder,Filter}
[OnesignalElixir.Notification, OnesignalElixir.Builder, OnesignalElixir.Filter]

iex(2)> filters = Filter.new() |> Filter.last_session(">","1.2") |> Filter.add_operator("AND") |> Filter.tag("exists", "email")
[                                                                                                                       %{field: "last_session", hours_ago: "1.2", relation: ">"},
  %{operator: "AND"},
  %{field: "tag", key: "email", relation: "exists"}
]
iex(3)> body = OnesignalElixir.new() |> Builder.add_content(:en, "Welcome to One Signal") |> Builder.add_content(:es, "Bienvenido a One Signal")|> Builder.add_heading(:en, "Hello") |> Builder.add_heading(:es, "Hola") |> Builder.add_subtitle(:en, "Welcome") |> Builder.add_subtitle(:es, "Bienvenido") |> Builder.add_filters(filters)
%{
  __struct__: OnesignalElixir.Notification,
  app_id: "YOUR-ONESIGNAL-APP-ID",
  contents: %{en: "Welcome to One Signal", es: "Bienvenido a One Signal"},
  filters: [
    %{field: "last_session", hours_ago: "1.2", relation: ">"},
    %{operator: "AND"},
    %{field: "tag", key: "email", relation: "exists"}
  ],
  headings: %{en: "Hello", es: "Hola"}, 
  subtitles: %{en: "Welcome", es: "Bienvenido"}
}
iex(4)> OnesignalElixir.send_notification(body)
{:ok,                                                                                                                 %{                                             
  "external_id" => nil,
  "id" => "GENERATED_NOTIFICATION_ID",
  "recipients" => 6
}}

iex(5)> body = OnesignalElixir.new() |> Builder.add_content(:en, "Welcome to One Signal") |> Builder.add_content(:es, "Bienvenido a One Signal")|> Builder.add_heading(:en, "Hello") |> Builder.add_heading(:es, "Hola") |> Builder.add_subtitle(:en, "Welcome") |> Builder.add_subtitle(:es, "Bienvenido") |> Builder.include_segment("Active Users")
%{
  __struct__: OnesignalElixir.Notification,
  app_id: "YOUR-ONESIGNAL-APP-ID",
  contents: %{en: "Welcome to One Signal", es: "Bienvenido a One Signal"},
  headings: %{en: "Hello", es: "Hola"},
  included_segments: ["Active Users"],
  subtitles: %{en: "Welcome", es: "Bienvenido"}
}

iex(6)> OnesignalElixir.send_notification(body)
{:ok,
%{
  "external_id" => nil,
  "id" => "GENERATED_NOTIFICATION_ID",
  "recipients" => 5
}}
```
Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at [https://hexdocs.pm/onesignal_elixir](https://hexdocs.pm/onesignal_elixir).