LlamaHair Ruby
Ruby implementation of the LlamaHair library for interacting with the LlamaHair API.
Installation
Add this line to your application's Gemfile:
gem 'llamahair'
And then execute:
$ bundle install
Usage
Basic Client Usage
Initialize the client with your API credentials:
client = LlamaHair::Client.new(
LlamaHair::Types::ClientOptions.new(
api_key_id: 'your_api_key_id',
api_key_secret: 'your_api_key_secret'
)
)
You can also use environment variables:
LLAMAHAIR_API_KEY_ID
LLAMAHAIR_API_SECRET
Sending Requests
Send a request to a specific prompt:
request = LlamaHair::Types::SendRequest.new(
llama: LlamaHair::Types::Llama.new(
id: 'unique_id',
body: 'Your prompt text here'
)
)
response = client.send('https://api.llamahair.ai/prompts/your-prompt', request)
puts response.job_id
Retrieving Results
Retrieve results using a job ID:
request = LlamaHair::Types::OutputRequest.new(job_id: 'your_job_id')
response = client.retrieve(request)
puts response.response.output if response.response.output
puts response.response.outputs if response.response.outputs
puts response.response.summary if response.response.summary
Send and Retrieve in One Call
response = client.send_and_retrieve(
'https://api.llamahair.ai/prompts/your-prompt',
request
)
Webhook Validation
Add webhook validation to your Rails controller:
class WebhooksController < ApplicationController
skip_before_action :verify_authenticity_token
def create
validator = LlamaHair::WebhookValidator.new(
LlamaHair::Types::WebhookOptions.new(secret: ENV['WEBHOOK_SECRET'])
)
unless validator.verify(request)
return head :unauthorized
end
# Process the webhook
head :ok
end
end
The validator:
- Automatically verifies webhook signatures
- Handles both
X-Webhook-Signature
andHTTP_X_WEBHOOK_SIGNATURE
headers - Logs validation errors to Rails logger
- Uses secure comparison for signature verification
Error Handling
The library provides specific error classes for different scenarios:
begin
response = client.send_and_retrieve(prompt_url, request)
rescue LlamaHair::TimeoutError => e
puts "Request timed out: #{e.message}"
rescue LlamaHair::AuthenticationError => e
puts "Authentication failed: #{e.message}"
rescue LlamaHair::RequestError => e
puts "Request failed: #{e.message}"
rescue LlamaHair::InvalidResponseError => e
puts "Invalid response: #{e.message}"
rescue LlamaHair::Error => e
puts "Unexpected error: #{e.message}"
end
Development
After checking out the repo, run bundle install
to install dependencies. Then:
- Run
rake spec
to run the tests - Run
rake rubocop
to check code style - Run
rake test
to run both tests and style checks
License
See the LICENSE file for details.