Elypiai is a collection of unofficial wrappers for web-based APIs. Each wrapper uses the same libraries and structure, so the interface is very consistent between them.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2025-04-20 13:14:28 +01:00
.gitlab/issue_templates chore: update .gitlab health files 2025-04-03 15:59:29 +01:00
cleverbot docs: clean up javadocs 2025-04-20 13:14:28 +01:00
companies-house docs: clean up javadocs 2025-04-20 13:14:28 +01:00
config/checkstyle chore: add checkstyle and apply rules 2025-04-03 15:31:49 +01:00
gradle/wrapper chore: upgrade to gradle 7 for java 17 support 2025-04-02 18:05:00 +01:00
mojang chore: query live mojang api and delete code for removed apis 2025-04-03 22:13:01 +01:00
orna chore: fix typo in class name 2025-04-03 22:22:31 +01:00
osu docs: clean up javadocs 2025-04-20 13:14:28 +01:00
path-of-exile chore: move to fun.falco namespace 2025-04-03 19:40:51 +01:00
runescape chore: move to fun.falco namespace 2025-04-03 19:40:51 +01:00
steam docs: clean up javadocs 2025-04-20 13:14:28 +01:00
urban-dictionary chore: query live urbandictionary api 2025-04-03 22:03:35 +01:00
weblate chore: move to fun.falco namespace 2025-04-03 19:40:51 +01:00
yugioh-prices chore: move to fun.falco namespace 2025-04-03 19:40:51 +01:00
.editorconfig chore: add .editorconfig 2025-04-02 18:03:51 +01:00
.gitignore chore: add checkstyle and apply rules 2025-04-03 15:31:49 +01:00
.gitlab-ci.yml chore: use gradle 7 in gitlab ci 2025-04-02 18:20:18 +01:00
build.gradle chore: move to fun.falco namespace 2025-04-03 19:40:51 +01:00
CONTRIBUTING.md docs: fix copy-and-paste mishap in contributing guide 2025-04-03 22:53:12 +01:00
gradlew chore: upgrade to gradle 7 for java 17 support 2025-04-02 18:05:00 +01:00
gradlew.bat chore: upgrade to gradle 7 for java 17 support 2025-04-02 18:05:00 +01:00
LICENSE * Deleted all Twitch Related Code (We recommend using https://github.com/twitch4j/twitch4j instead.) 2020-02-20 02:12:29 +01:00
NOTICE chore: update copyright notices and attribution 2025-04-03 15:58:34 +01:00
README.md docs: replace link for mojang api documentation 2025-04-03 22:45:49 +01:00
settings.gradle chore: query live urbandictionary api 2025-04-03 22:03:35 +01:00

Elypiai

About

Elypiai is a collection of unofficial wrappers for web-based APIs. Each wrapper uses the same libraries and structure, so the interface is very consistent between them.

Supported Services

Why a monorepo?

Rather than having separate repositories for Cleverbot4J, Orna4J, osu!4J, and so on, this creates a submodule as each wrapper has an almost identical structure. In the instance we want to do major alterations in design, it usually applies to all wrappers.

Getting Started

Import

Visit Elypiai on Maven Central, and follow the instructions for your build system of choice to add the respective service wrapper to your project.

Fetching Data

In this example we'll use the Urban Dictionary API, but every module in Elypiai works more or less the same.

public class Main {

    public static void main(String[] args) {
        UrbanDictionary ud = new UrbanDictionary();
        fetchDefinitions(ud);
        fetchDefinitionsBatched(ud);
    }

    /**
     * Invoke a REST action through the service class. You can follow-up with
     * one of the following methods:
     * 
     * #subscribe — Asynchronous request, both the success, and failure
     *              consumers are optional.
     * #blockingGet — Synchronous (blocking) request that returns the result.
     */
    public void fetchDefinitions(UrbanDictionary ud) {
        ud.getDefinitions("foobar").subscribe(
            (result) -> System.out.println(result),
            Throwable::printStackTrace
        );

        DefineResult result = ud.getDefinitions("foobar").blockingGet();
    }

    /**
     * You can batch requests too.
     */
    public static void fetchDefinitionsBatched(UrbanDictionary ud) {
        var requests = Stream.of("foobar", "xkcd")
            .map(ud::getDefinitions)
            .map(Single::toObservable)
            .collect(Collectors.toList());

        var batch = Observable.zip(requests, (objects) ->
            Stream.of(objects).map((o) -> (DefineResult) o).collect(Collectors.toList())
        );

        batch.subscribe(
            (results) -> results.forEach(System.out::println)
        );
    }
}

Read the Javadocs

All the wrappers include Javadocs, read them to learn what functions are available. If you're using a modern code editor or IDE, the code completion will display them as you access the service objects.

Interested in other web service wrappers?

There are countless web services, and countless Java wrappers available for them. If you liked this project, you may be interested in some of these packages maintained by others too: