ExTwilio.Resource

Mixin to include ExTwilio.Api module functionality in a module with slightly prettier syntax. Under the hood, it delegates all the work to ExTwilio.Api.

Example

Define a module, and use ExTwilio.Resource.

defmodule ExTwilio.Call do
  use ExTwilio.Resource, import: [:stream, :all, :list]

  defstruct sid: nil, ...
end

The import option specifies which of the ExTwilio.Api methods you want to be able to use. Under the hood, this creates three methods on your new module, and they look like this:

def stream(options \ []), do: Api.stream(__MODULE__, options)
def all(options \ []),    do: Api.all(__MODULE__, options)
def list(options \ []),   do: Api.list(__MODULE__, options)

As you can see, they're simple aliases to Api methods. However, they do make your code look a lot nicer.

# Instead of this:
ExTwilio.Api.all(ExTwilio.Call)

# You can write:
ExTwilio.Call.all

Important: You must define a struct for each module in which you use ExTwilio.Resource. Items from Twilio will be converted into instances of this struct.

Source

Summary

__using__(options)

Provide a use macro for use extending

Macros

__using__(options)

Provide a use macro for use extending.

Source