WWW::ARDB

Perl client library for the ardb.app ARC Raiders Database API.

Provides access to:

Installation

cpanm WWW::ARDB

Or from source:

git clone https://github.com/Getty/p5-www-ardb.git
cd p5-www-ardb
cpanm --installdeps .

Command-Line Interface

The distribution includes ardb for quick lookups:

# List items
ardb items
ardb items --search guitar
ardb items --rarity legendary
ardb items --type weapon

# Show item details
ardb item acoustic_guitar

# List quests
ardb quests
ardb quests --trader shani

# Show quest details
ardb quest picking_up_the_pieces

# List ARC enemies
ardb enemies

# Show enemy details with drop table
ardb enemy wasp

Global Options

--json, -j   # Output as JSON
--no-cache   # Skip cache, fetch fresh data
--debug, -d  # Show debug output

API Usage

use WWW::ARDB;

my $api = WWW::ARDB->new;

# Items
my $items = $api->items;
for my $item (@$items) {
    printf "%s (%s) - %s\n",
        $item->name,
        $item->rarity // 'n/a',
        $item->type;
}

# Single item with full details
my $item = $api->item('acoustic_guitar');
say $item->description;
say "Weight: " . $item->weight;
say "Breakdown: " . join(", ", map { $_->{name} } @{$item->breakdown});

# Quests
my $quests = $api->quests;
for my $quest (@$quests) {
    say $quest->title . " from " . $quest->trader_name;
}

# Single quest with rewards
my $quest = $api->quest('picking_up_the_pieces');
say "Objectives:";
for my $step (@{$quest->steps}) {
    say "  - $step->{title} (x$step->{amount})";
}

# ARC Enemies
my $enemies = $api->arc_enemies;
for my $enemy (@$enemies) {
    say $enemy->name;
}

# Single enemy with drop table
my $enemy = $api->arc_enemy('wasp');
say "Drops:";
for my $drop (@{$enemy->drop_table}) {
    say "  - $drop->{name} ($drop->{rarity})";
}

Search Methods

Find items by name (case-insensitive):

my $item = $api->find_item_by_name('Acoustic Guitar');
my $quest = $api->find_quest_by_title('Picking Up The Pieces');
my $enemy = $api->find_arc_enemy_by_name('Wasp');

Caching

Responses are cached by default to reduce API load:

# Disable caching
my $api = WWW::ARDB->new(use_cache => 0);

# Custom cache directory
my $api = WWW::ARDB->new(cache_dir => '/tmp/ardb');

# Clear cache
$api->clear_cache('items');  # specific endpoint
$api->clear_cache;           # all

Cache location defaults to:

Raw API Access

For custom processing, get raw HashRef/ArrayRef responses:

my $raw = $api->items_raw;
my $raw = $api->item_raw('acoustic_guitar');
my $raw = $api->quests_raw;
my $raw = $api->quest_raw('picking_up_the_pieces');
my $raw = $api->arc_enemies_raw;
my $raw = $api->arc_enemy_raw('wasp');

Async Integration

For use with async frameworks (Mojo, AnyEvent, etc.), get HTTP::Request objects:

my $request = $api->request->items;
my $request = $api->request->item('acoustic_guitar');
# $request is HTTP::Request, use with your async UA

Debug Mode

my $api = WWW::ARDB->new(debug => 1);
# Or set environment variable:
# WWW_ARDB_DEBUG=1

Result Classes

All API methods return typed result objects:

| Method | Returns | |--------|---------| | items | WWW::ARDB::Result::Item | | item | WWW::ARDB::Result::Item | | quests | WWW::ARDB::Result::Quest | | quest | WWW::ARDB::Result::Quest | | arc_enemies | WWW::ARDB::Result::ArcEnemy | | arc_enemy | WWW::ARDB::Result::ArcEnemy |

Each result object provides typed accessors and the original data via ->_raw.

Attribution

This module uses the ardb.app API. Per the API documentation, applications using this data must include a disclaimer crediting ardb.app with a link back to the source.

Data provided by ardb.app

Support

License

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.