Quick Start Guide
View SourceGet started with Flowfull Elixir client in 5 minutes!
Installation
Add to your mix.exs:
def deps do
[
{:flowfull, "~> 0.1.0"}
]
endRun:
mix deps.get
Basic Usage
1. Create a Client
client = Flowfull.new("https://api.example.com")2. Make HTTP Requests
# GET request
{:ok, response} = Flowfull.get(client, "/users")
# POST request
{:ok, response} = Flowfull.post(client, "/users", %{
name: "John Doe",
email: "john@example.com"
})
# PUT request
{:ok, response} = Flowfull.put(client, "/users/123", %{
name: "Jane Doe"
})
# DELETE request
{:ok, response} = Flowfull.delete(client, "/users/123")3. Use Query Builder
alias Flowfull.Operators
{:ok, users} =
Flowfull.query(client, "/users")
|> Flowfull.Query.where("age", Operators.gte(18))
|> Flowfull.Query.where("status", Operators.eq("active"))
|> Flowfull.Query.sort("created_at", :desc)
|> Flowfull.Query.page(1)
|> Flowfull.Query.limit(10)
|> Flowfull.Query.execute()4. Authentication
# Login
{:ok, result} = Flowfull.Auth.login(client, %{
email: "user@example.com",
password: "password123"
})
# Session is automatically stored
# Now you can make authenticated requests
# Get current user
{:ok, user} = Flowfull.Auth.me(client)
# Logout
{:ok, _} = Flowfull.Auth.logout(client)5. Advanced Configuration
# With custom options
client = Flowfull.new("https://api.example.com",
timeout: 60_000,
headers: %{"X-API-Key" => "your-api-key"},
retry_attempts: 5,
retry_exponential: true,
storage: Flowfull.Storage.File.new(".sessions")
)
# With session ID
client = Flowfull.new("https://api.example.com",
session_id: "your-session-id"
)
# With session function
client = Flowfull.new("https://api.example.com",
get_session_id: fn ->
{:ok, System.get_env("SESSION_ID")}
end
)Phoenix Integration
WebSocket Authentication
defmodule MyAppWeb.UserSocket do
use Phoenix.Socket
def connect(%{"session_id" => session_id}, socket, _connect_info) do
client = Flowfull.new("https://api.example.com")
case Flowfull.Phoenix.validate_socket_session(client, session_id) do
{:ok, user} ->
{:ok, assign(socket, :user, user)}
{:error, _} ->
:error
end
end
endLiveView Authentication
defmodule MyAppWeb.DashboardLive do
use MyAppWeb, :live_view
def mount(_params, %{"session_id" => session_id}, socket) do
client = Flowfull.new("https://api.example.com")
case Flowfull.Phoenix.validate_liveview_session(client, session_id) do
{:ok, user} ->
{:ok, assign(socket, :current_user, user)}
{:error, _} ->
{:ok, redirect(socket, to: "/login")}
end
end
endComplete Example
defmodule MyApp.FlowfullExample do
alias Flowfull.Operators
def run do
# Create client
client = Flowfull.new("https://api.example.com")
# Login
{:ok, result} = Flowfull.Auth.login(client, %{
email: "user@example.com",
password: "password123"
})
IO.puts("Logged in as: #{result.user["name"]}")
# Query users
{:ok, response} =
Flowfull.query(client, "/users")
|> Flowfull.Query.where("age", Operators.gte(18))
|> Flowfull.Query.where("status", Operators.eq("active"))
|> Flowfull.Query.sort("created_at", :desc)
|> Flowfull.Query.limit(10)
|> Flowfull.Query.execute()
IO.inspect(response.data, label: "Users")
# Logout
{:ok, _} = Flowfull.Auth.logout(client)
IO.puts("Logged out successfully")
end
endNext Steps
- Read the full documentation
- Check out the examples
- Learn about Phoenix integration
- Explore the API reference