* initial elasticsearch impl * working elastic cluster * replace SearchError with ApiError for preparation of search backend * start factoring meili out to trait * move meili to backend * update routes to use search backend trait * wip * Update projects.rs * search backend is only init'd once in config * wip * wip: backend agnostic * change search internal routes to delegate to backend * initial elasticsearch impl * fix filtering * elastic impl * refactor indexing into its own module * clean up elastic code * fix ci * fix tests * fix elastic health check * fix up env rebase * fix compile * dummy commit to update github pr * Fix rebase * Elastic basic https auth * Fix duplicate projects showing up * Fix up tests * Replace search `ApiErrors` with `eyre::Reports`, propagate background task errors * clean up agents files * make index chunk size configurable * make `match_phrase` in elastic case-insensitive * use current/next indices and swap between them * test case for error body * Fix failing case * da merge * factor out common stuff from search backends * allow fetching hit metadata from search results * allow customising elasticsearch search config * bit of docs * add mappings to indices for elastic * Implement Typesense * wip * fix up some sort fields stuff * use different approach to filterable field sets * remove a bunch of search fields which weren't used for filtering * bucket text matches * Bucketing by text_match for typesense * fix tombi lint * fix some sentry errors and dont prioritise 2+ term matches * tweak ts query settings * expose some more search settings * query sort changes * small fixes * should fix pagination stuff * fix healthcheck maybe * ragebait ci * tests * tests * revert environment
Note
This is a vendored version of
async-minecraft-pingwith modifications for our own purposes.This directory is licensed under the same license as the original project.
async-minecraft-ping
An async ServerListPing client implementation in Rust.
Usage
See the example.
let config = ConnectionConfig::build("mc.example.com")
.with_port(25565)
.with_timeout(Duration::from_secs(5));
let connection = config.connect().await?;
let status = connection.status().await?;
println!(
"{} of {} player(s) online",
status.status.players.online, status.status.players.max
);
Features
SRV Record Lookup
Enable the srv feature to support automatic SRV record resolution for Minecraft servers:
[dependencies]
async-minecraft-ping = { version = "0.8", features = ["srv"] }
let config = ConnectionConfig::build("skyblock.net")
.with_srv_lookup() // Resolves _minecraft._tcp.skyblock.net
.connect()
.await?;
When SRV lookup is enabled, the library queries _minecraft._tcp.<address> for an SRV record. If found, it uses the target host and port from the record. If not found, it falls back to the original address and port.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.