Skip to content

Latest commit

 

History

History
72 lines (57 loc) · 2.72 KB

File metadata and controls

72 lines (57 loc) · 2.72 KB

Implementation Plan

Overview

Implement Auctionator data provider using the official Auctionator External API instead of parsing raw SavedVariables Lua files. This provides stable, documented access to auction prices without reverse-engineering compression/serialization formats. The provider will call Lua API functions via runtime_bridge to get structured price data for RAG model queries.

The current raw parsing approach fails on Area52 data (decodes to -3 instead of price dictionary). The External API handles all decompression/parsing internally and is guaranteed stable by Auctionator developers.

Types

AuctionatorPrice = {
  itemID: int,
  price: int (coppers),
  age: int (days since seen),
  vendorPrice: int (coppers, if applicable),
  exact: bool (is data exact match)
}

AuctionatorData = {
  prices: dict[string, list[AuctionatorPrice]]  // realm -> prices
  dbversion: int
}

QueryResult = {
  realm: string,
  items: list[AuctionatorPrice]
}

Files

New files:

  • None

Modified files:

  • runtime_bridge/data_providers/auctionator_provider.py: Replace raw Lua parsing with API calls
  • auctionator_parser.py: Deprecate or remove (no longer needed)

Configuration updates:

  • Add callerID to config.py for Auctionator API registration

Functions

New functions:

  • get_auction_price(item_id: int) -> AuctionatorPrice in auctionator_provider.py: Calls GetAuctionPriceByItemID
  • is_exact_match(item_id: int) -> bool in auctionator_provider.py: Calls IsAuctionDataExactByItemID
  • get_vendor_price(item_id: int) -> int in auctionator_provider.py: Calls GetVendorPriceByItemID

Modified functions:

  • load_data() in auctionator_provider.py: Remove Lua parsing, return empty dict (API called on-demand)
  • get_data(query) in auctionator_provider.py: Map query to item ID, call API, return filtered results

Removed functions:

  • unescape_lua_string(), parse_lua_table(), decompress_auctionator_data() in auctionator_provider.py

Classes

Modified classes:

  • AuctionatorProvider: Change from Lua parser to API client. Add caller_id attribute.

Dependencies

Add cbor2 if not present (for potential future use), but primary dependency is runtime_bridge Lua API integration.

Testing

  • Test API calls with known item IDs from test_payloads.txt
  • Verify short realms (Ragnaros) return expected version data
  • Test query filtering by item name/ID
  • Add unit tests for API response parsing

Implementation Order

  1. Update auctionator_provider.py to use API calls instead of Lua parsing
  2. Add item ID mapping for common queries
  3. Test with runtime_bridge Lua execution
  4. Deprecate auctionator_parser.py
  5. Update config for callerID
  6. Verify integration with main.py and RAG