Beiträge von pixelpatron90

    brawlproxy.de ist ein schlanker Proxy zwischen Clients (z. B. Web‑Apps, Mobile‑Apps, Bots) und der offiziellen Brawl Stars API. Ziel ist es, API‑Keys serverseitig zu halten, CORS‑Probleme zu vermeiden und zentrale Funktionen wie Rate‑Limiting, (optional) Caching und Logging bereitzustellen.


    Wichtige Hinweise

    - Auth: Die Proxyrouten erfordern einen gültigen Proxy‑Key im Header `x-api-key: <dein_token>`.

    - URL‑Encoding: Player‑ und Club‑Tags mit `#` müssen URL‑kodiert werden (`#` → `%23`). Der Server validiert die Kodierung streng.


    Endpoints

    - GET /players/{playerTag}

    - GET /players/{playerTag}/battlelog

    - GET /clubs/{clubTag}

    - GET /clubs/{clubTag}/members

    - GET /brawlers

    - GET /events/rotation

    - GET /rankings/global/players

    - GET /rankings/global/clubs

    - GET /rankings/de/players

    - GET /rankings/de/clubs


    Hinweis: Der Router fängt zudem beliebige weitere /api/*‑Routen und Wildcards für die oben genannten Pfade ab, sodass neue Pfade später transparent weitergeleitet werden.


    Beispiel: Discord‑Bot‑Befehl !stats <SpielerTag>

    - Idee: Bot ruft /players/{playerTag} beim Proxy ab und zeigt Trophäen, Bestwert und Top‑Brawler. Denk an URL‑Kodierung und den Header `x-api-key`.


    Code
    javascript name=discord-bot-example.js// Vereinfachtes discord.js-Beispiel (nur Anfrage/Antwort)const fetch = require('node-fetch');module.exports = {name: 'stats',description: 'Zeigt Spielerstatistiken an: !stats <SpielerTag>',async execute(message, args) {if (!args[0]) return message.reply('Bitte gib einen Spieler‑Tag an (z. B. #ABCD123).');const rawTag = args[0];const encodedTag = encodeURIComponent(rawTag); // '#' -> '%23'const PROXY_BASE = 'https://api.example.com'; // deine Proxy‑URLconst url = `${PROXY_BASE}/players/${encodedTag}`; // oder /api/players/...try {const res = await fetch(url, {headers: { 'x-api-key': process.env.PROXY_API_KEY || 'DEIN_PROXY_KEY' }});if (!res.ok) return message.reply(`Fehler: ${res.status} ${res.statusText}`);const data = await res.json();const text = [`Spieler: ${data.name || 'unbekannt'} (${data.tag || rawTag})`,`Trophäen: ${data.trophies ?? 'n/a'} (Best: ${data.highestTrophies ?? 'n/a'})`,`Top Brawler: ${data.topBrawlers?.map(b => `${b.name} (${b.trophies})`).join(', ') || 'keine Daten'}`].join('\n');message.channel.send(text);} catch (err) {console.error('Proxy fetch error', err);message.reply('Fehler beim Abrufen der Spielerstatistiken.');}}};


    Wenn es Fragen gibt bitte fragt mich jederzeit :)