Skip to content

bean-la/elixir-cloudflare-api-client

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cloudflare

hex.pm hex.pm github.com

Cloudflare API Client. Written for the Elixir community, based on :restlax.

Installation

If available in Hex, the package can be installed by adding cloudflare to your list of dependencies in mix.exs:

def deps do
  [
    {:cloudflare, "~> 0.2"}
  ]
end

Configuration

Authentication

config :cloudflare,
  auth_token: "my-auth-token"

Or

config :cloudflare,
  auth_email: "my@email.com",
  auth_key: "my-auth-key"

Or both ¯\(°_o)/¯.

Or passed in

Cloudflare.Zone.index(opts: [auth_token: "my-auth-token"])
Cloudflare.Zone.index(opts: [auth_email: "my@email.com", auth_key: "my-auth-key"])

Or directly as header

Cloudflare.Zone.index(headers: [{"Authorization", "Bearer my-auth-token"}])
Cloudflare.Zone.index(headers: [{"X-Auth-Email", "my@email.com"}, {"X-Auth-Key", "my-auth-key"}])

Register client

Normally it's teadius to explicitly pass the client module in.

Cloudflare.Zone.index(client: CloudFlare.Client)

It can be registered on application start, e.g. in YourApp.Application.start

defmodule YourApp.Application do
  use Application

  def start(_type, _args) do
    Cloudflare.Client.init() # <- You can add this line
    children = [
      {Phoenix.PubSub, name: App.PubSub},
      App.Repo,
      AppWeb.Endpoint
    ]

    opts = [strategy: :one_for_one, name: App.Supervisor]
    Supervisor.start_link(children, opts)
  end

  def config_change(changed, _new, removed) do
    AppWeb.Endpoint.config_change(changed, removed)
    :ok
  end
end

Usage

Cloudflare.Zone.index()
Cloudflare.DnsRecord.index(params: [zone_id: "my-zone-id"])
Cloudflare.DnsRecord.create(
  %{type: "A", name: "my.domain", content: "127.0.0.1", ttl: 120},
  params: [zone_id: "my-zone-id"]
)

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/cloudflare.

Contribution

Half manually scraped Cloudflare docs are located in priv/docs. Pick an entity and write module for it.

Simple entities can be as easy as Cloudflare.Account and Cloudflare.User

Some need a little customization like Cloudflare.DnsRecord

Some need more Cloudflare.ZoneSetting

About

Cloudflare API Client for Elixir community

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Elixir 100.0%