Thanks to visit codestin.com
Credit goes to github.com

Skip to content

0mega/worldtides

Repository files navigation

WorldTides Client

build status CI

Client for World Tides API compatible with Android, Kotlin and Java applications.

Download

Add the JitPack repo to your root build.gradle:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Declare the dependency in the module's build.gradle:

dependencies {
    implementation 'com.oleksandrkruk:worldtides:2.0.0'
}

Supported WorldTides API calls

API Request API version Supported Planned
Extremes v2 Yes -
Heights v2 Yes -
Stations v2 No Yes
Datum v2 No Yes

Usage

Get Tide Extremes

Kotlin
val worldTides = WorldTides.Builder().build(apiKey)
worldTides.getTideExtremes(date, days, lat, lon) { result ->
    result.onSuccess { tideExtremes ->
        tideExtremes.extremes.forEach { extreme ->
            println("${extreme.type} at ${extreme.date}: ${extreme.height}m")
        }
    }
    result.onFailure { error ->
        println("Error: ${error.message}")
    }
}
Java
WorldTides wt = new WorldTides.Builder().build(apiKey);
wt.getTideExtremes(date, 7, lat, lon, new TidesCallback<TideExtremes>() {
    @Override
    public void result(TideExtremes tides) {
        // Use the tide extremes
    }

    @Override
    public void error(Error error) {
        // Handle error
    }
});

Get Tide Heights

Kotlin
val worldTides = WorldTides.Builder().build(apiKey)
worldTides.getTideHeights(date, days, lat, lon) { result ->
    result.onSuccess { tideHeights ->
        tideHeights.heights.forEach { height ->
            println("Height at ${height.date}: ${height.height}m")
        }
    }
    result.onFailure { error ->
        println("Error: ${error.message}")
    }
}
Java
WorldTides wt = new WorldTides.Builder().build(apiKey);
wt.getTideHeights(date, 7, lat, lon, new TidesCallback<TideHeights>() {
    @Override
    public void result(TideHeights heights) {
        // Use the tide heights
    }

    @Override
    public void error(Error error) {
        // Handle error
    }
});

Get Flexible Tide Data (Combined)

Fetch multiple data types in a single API call:

Kotlin
val dataTypes = listOf(TideDataType.HEIGHTS, TideDataType.EXTREMES)
worldTides.getTides(date, days, lat, lon, dataTypes) { result ->
    result.onSuccess { tides ->
        tides.heights?.let { println("Heights: ${it.heights.size} points") }
        tides.extremes?.let { println("Extremes: ${it.extremes.size} points") }
    }
}
Java
List<TideDataType> dataTypes = Arrays.asList(TideDataType.HEIGHTS, TideDataType.EXTREMES);
wt.getTides(date, 7, lat, lon, dataTypes, new TidesCallback<Tides>() {
    @Override
    public void result(Tides tides) {
        if (tides.getHeights() != null) {
            // Use heights data
        }
        if (tides.getExtremes() != null) {
            // Use extremes data
        }
    }

    @Override
    public void error(Error error) {
        // Handle error
    }
});

Versioning

This project follows Semantic Versioning.

Limitations

  • This lib uses Retrofit and OkHttp and at the moment it's not possible to pass in you existing OkHttp or other client to be used by retrofit. The plan is to allow the user of this lib to pass in the client to avoid creating multiple clients in your app.