Skip to content

UniRate-API/drupal-unirate

Repository files navigation

UniRate Currency — Drupal module

CI PHP 8.1+ Drupal 10.3 | 11

Drupal module providing live currency exchange rates from the UniRate API. Designed to integrate cleanly into any Drupal 10/11 project with zero additional runtime dependencies.

Features

  • Injectable unirate.client service — use UniRate data anywhere in your Drupal code
  • Currency Rate Block — display a live exchange rate in any block region
  • Admin settings at /admin/config/services/unirate-currency — store your API key in Drupal config (or use the UNIRATE_API_KEY environment variable)
  • Zero runtime PHP dependencies beyond Drupal core (uses Drupal's built-in Guzzle HTTP client)
  • 31 PHPUnit unit tests

Installation

Install via Composer from GitHub:

composer require unirate-api/unirate-drupal
drush en unirate

Then set your API key at /admin/config/services/unirate-currency or via the environment variable UNIRATE_API_KEY.

Get a free API key at unirateapi.com.

Usage

Inject the service

use Drupal\unirate\UniRateClient;
use Drupal\unirate\UniRateException;

class MyCurrencyService {
  public function __construct(
    private UniRateClient $uniRate,
  ) {}

  public function getUsdToEur(): float {
    return $this->uniRate->getRate('USD', 'EUR');
  }

  public function convertAmount(float $amount, string $from, string $to): float {
    return $this->uniRate->convert($amount, $from, $to);
  }
}

Register it in your services.yml:

my_module.currency_service:
  class: Drupal\my_module\MyCurrencyService
  arguments:
    - '@unirate.client'

Available methods

// Get a single rate
$rate = $client->getRate('USD', 'EUR');   // float

// Get all rates relative to a base
$rates = $client->getRates('USD');        // array<string, float>

// Convert an amount
$eur = $client->convert(100.0, 'USD', 'EUR'); // float

// List supported currencies
$currencies = $client->listCurrencies();  // array<string, string>

All methods throw UniRateException on error (network failure, invalid API key, Pro-gated endpoint on a free plan, rate limit, etc.).

Use in Twig via Drupal services

{% set rate = drupal_token('unirate:rate:USD:EUR') %}

Or place the UniRate: Currency Rate block via the block layout interface.

Configuration

Setting Config key Environment variable Default
API key unirate.settings:api_key UNIRATE_API_KEY
Base URL unirate.settings:base_url https://api.unirateapi.com
Timeout unirate.settings:timeout 10 seconds

Drupal.org submission

The module is pending drupal.org project namespace approval. Until then, install directly via the Composer repository above.


Other UniRate integrations

Language / framework Package
Python unirate-api
Node.js unirate-api
Go unirate-api-go
Rust unirate-api
Ruby unirate-api
PHP unirate-api
Java unirate-api-java
Swift unirate-api-swift
.NET UniRateApi
React @unirate/react
Next.js @unirate/next
Vue @unirate/vue
Angular @unirate/angular
Svelte @unirate/sveltekit
Nuxt @unirate/nuxt
Remix @unirate/remix
NestJS @unirate/nestjs
Astro @unirate/astro
Eleventy @unirate/eleventy
Hugo hugo-unirate
Jekyll jekyll-unirate
Django djangorestframework-unirate
FastAPI fastapi-unirate
Flask flask-unirate
Wagtail wagtail-unirate
Laravel unirate-api/laravel-money
Symfony unirate-api/unirate-bundle
Strapi strapi-plugin-unirate
WordPress unirate-currency-converter
LangChain (Python) langchain-unirate
LangChain (JS) @unirate/langchain-js
MCP server @unirate/mcp
CLI unirate-cli

About

Drupal module — currency exchange rate integration via the UniRate API

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors