Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
b7bf18e
added payment intent resource
Feb 18, 2021
a253baa
added update request. added payment source resource.
Mar 9, 2021
78f15a9
Merge remote-tracking branch 'saastune/master'
gerbal Dec 3, 2021
5712529
`mix format`
gerbal Dec 9, 2021
3a2396c
feature: Add Item Interface
gerbal Dec 9, 2021
1e085da
Refactor for readability
gerbal Dec 9, 2021
3ee5d97
docs: Add basic docs of resources
gerbal Dec 9, 2021
eb72551
Add Mix Check
gerbal Dec 9, 2021
56f323d
feature: Add ItemPrice
gerbal Dec 9, 2021
eaadd01
Update config imports
gerbal Jan 12, 2022
de1317e
✨ Add Coupon Resource
gerbal Jan 12, 2022
497dbed
Fix coupon paths
gerbal Jan 12, 2022
0715301
🔧 rewrite query body serialization to match Chargebee's expected beha…
gerbal Jan 12, 2022
a0101a0
✨ _correctly_ compute nested parameters in Chargebee's preferred format
gerbal Jan 12, 2022
ededae3
Fix POST body serialization of nested arrays
gerbal Jan 14, 2022
695c850
Remove unused dependencies
gerbal Jan 14, 2022
74f6e9d
Add Coupon Codes and Coupon Sets resources
gerbal Jan 17, 2022
e31c8ed
Add ItemFamily Resource
gerbal Mar 29, 2022
76bd60f
interface.ex - Drop fields with nil value when serializing
gerbal Mar 29, 2022
b498a8b
mix.exs - remove minor version constraint on inflex
gerbal Mar 29, 2022
737d925
Fix: ensure metadata is always json-encoded if present
gerbal Mar 30, 2022
c3547fc
:bug: resouce.ex - escape resource ids in uris
gerbal Mar 31, 2022
546d716
Add gift resource
gerbal Apr 20, 2022
f73a21b
📝 Udpate Readme. I guess we're v0.2.0 now
gerbal Apr 20, 2022
18d2300
Fix regressions in Chargebee Resoruce
gerbal Apr 20, 2022
ff1ba21
v0.2.1 - Add Customer Merge
gerbal Apr 21, 2022
8b0911d
Merge branch 'master' into update-resources
gerbal Nov 18, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,34 +3,38 @@

Elixir implementation of [Chargebee API](https://apidocs.chargebee.com/docs/api).

## v0.1.4
## v0.2.0
This is a work in progress: right now, we only implement those methods:
- list
- retrieve
- create

on those resources:
- addon
- coupon_code
- coupon_set
- customer
- event
- gift
- hosted_page
- also checkout_new
- also checkout_existing
- subscription
- also create_for_customer
- invoice
- item_family
- item_price
- item
- payment_intent
- payment_source
- plan
- portal_session
- subscription
- invoice
- also close
- also import_invoice


## Installation
The package can be installed by adding `chargebee_elixir` to your list of dependencies in `mix.exs`:

```elixir
def deps do
[
{:chargebee_elixir, "~> 0.1.4"}
{:chargebee_elixir, "~> 0.2.0"}
]
end
```
Expand Down
2 changes: 1 addition & 1 deletion config/config.exs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# is restricted to this project.

# General application configuration
use Mix.Config
import Config

# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.
Expand Down
2 changes: 1 addition & 1 deletion config/dev.exs
Original file line number Diff line number Diff line change
@@ -1 +1 @@
use Mix.Config
import Config
2 changes: 1 addition & 1 deletion config/test.exs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use Mix.Config
import Config

config :chargebee_elixir,
namespace: "test-namespace",
Expand Down
4 changes: 3 additions & 1 deletion lib/chargebee_elixir.ex
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
defmodule ChargebeeElixir do

@moduledoc """
Resources for interacting with Chargebee API Resources
"""
end
3 changes: 3 additions & 0 deletions lib/chargebee_elixir/addon.ex
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
defmodule ChargebeeElixir.Addon do
@moduledoc """
an interface for interacting with Addons
"""
use ChargebeeElixir.Resource, "addon"
end
26 changes: 26 additions & 0 deletions lib/chargebee_elixir/coupon.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
defmodule ChargebeeElixir.Coupon do
@moduledoc """
an interface for interacting with Coupons
"""
use ChargebeeElixir.Resource, "coupon"

def create_for_items(params) do
create(params, "/create_for_items")
end

def update_for_items(coupon_id, params) do
post_resource(coupon_id, "/update_for_items", params)
end

def delete(coupon_id) do
post_resource(coupon_id, "/delete", %{})
end

def copy(coupon_id, params) do
post_resource(coupon_id, "/copy", params)
end

def unarchive(coupon_id) do
post_resource(coupon_id, "/unarchive", %{})
end
end
14 changes: 14 additions & 0 deletions lib/chargebee_elixir/coupon_code.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
defmodule ChargebeeElixir.CouponCode do
@moduledoc """
an interface for interacting with Coupon Codes

Supports:
- List
- Retrieve
"""
use ChargebeeElixir.Resource, "coupon_code"

def archive(coupon_code) do
post_resource(coupon_code, "/archive", %{})
end
end
24 changes: 24 additions & 0 deletions lib/chargebee_elixir/coupon_set.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
defmodule ChargebeeElixir.CouponSet do
@moduledoc """
an interface for interacting with Coupon Sets

Supports
- List
- Retrieve
- Create
- Update
"""
use ChargebeeElixir.Resource, "coupon_set"

def add_coupon_codes(coupon_id, params) do
post_resource(coupon_id, "/add_coupon_codes", params)
end

def delete(coupon_id) do
post_resource(coupon_id, "/delete", %{})
end

def delete_unused_coupon_codes(coupon_id) do
post_resource(coupon_id, "/delete_unused_coupon_codes", %{})
end
end
7 changes: 7 additions & 0 deletions lib/chargebee_elixir/customer.ex
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
defmodule ChargebeeElixir.Customer do
@moduledoc """
an interface for interacting with Customers
"""
use ChargebeeElixir.Resource, "customer"

def merge(args) do
create(args, "/merge")
end
end
33 changes: 33 additions & 0 deletions lib/chargebee_elixir/event.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
defmodule ChargebeeElixir.Event do
@moduledoc """
an interface for interacting with Events
"""
@resource "event"
alias ChargebeeElixir.Interface

def retrieve(id) do
id |> resource_path() |> Interface.get() |> Map.get(@resource)
rescue
ChargebeeElixir.NotFoundError -> nil
end

def list(params \\ %{}) do
# Should pagination be by default?
case Interface.get(resource_base_path(), params) do
%{"list" => current_list, "next_offset" => next_offset} ->
Enum.map(current_list, &Map.get(&1, @resource)) ++
__MODULE__.list(Map.merge(params, %{"offset" => next_offset}))

%{"list" => current_list} ->
Enum.map(current_list, &Map.get(&1, @resource))
end
end

defp resource_base_path do
"/#{@resource}s"
end

defp resource_path(id) do
"#{resource_base_path()}/#{id}"
end
end
18 changes: 18 additions & 0 deletions lib/chargebee_elixir/gift.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
defmodule ChargebeeElixir.Gift do
@moduledoc """
An interface for interacting with Chargebee Gifts
"""
use ChargebeeElixir.Resource, "gift"

def create_for_items(params) do
create(params, "/create_for_items")
end

def cancel(coupon_id) do
post_resource(coupon_id, "/cancel", %{})
end

def claim(coupon_id) do
post_resource(coupon_id, "/claim", %{})
end
end
12 changes: 10 additions & 2 deletions lib/chargebee_elixir/hosted_page.ex
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
defmodule ChargebeeElixir.HostedPage do
@moduledoc """
an interface for interacting with HostedPages
"""
use ChargebeeElixir.Resource, "hosted_page"

def checkout_new(params) do create(params, "/checkout_new") end
def checkout_existing(params) do create(params, "/checkout_existing") end
def checkout_new(params) do
create(params, "/checkout_new")
end

def checkout_existing(params) do
create(params, "/checkout_existing")
end
end
Loading