Coder Social home page Coder Social logo

stachu540 / hirezapi Goto Github PK

View Code? Open in Web Editor NEW
6.0 6.0 1.0 1.53 MB

Reactive Java API Wrapper for Hi-Rez Studios games. (looking for maintainer)

License: MIT License

Java 92.87% Kotlin 7.13%
api-wrapper hi-rez java paladins reactive realm-royale rxjava3 smite

hirezapi's Introduction

Introduction

I am not only Java/Kotlin Programmer. Also I am a Content Creator on Twitch

Projects

There is a 3 main projects:

  • HiRezAPI - A reactive Java API Wrapper for Hi-Rez Studions games
  • Glitch - Third party SDK Wrapper for Twitch in Kotlin - No more maintain
  • Alice - Streamming Framework delivering bots, extensions, overlays etc.

hirezapi's People

Contributors

dependabot-preview[bot] avatar dependabot-support avatar stachu540 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

lumielgr

hirezapi's Issues

Cannot resolve com.github.stachu540.HiRezAPI:HiRezAPI-all:v3.0.0

Describe the bug
I tried to use the Maven Dependency for this Repo, but I am unable to install it,
It's always giving me a different Error Message depending on from where i get the dependency (jitpack, jcenter, ...).
I successfully imported it a few times, but i wasn't able to use the Examples from the Wiki then.

To Reproduce
Steps to reproduce the behavior:

  1. Use Dependency from README
  2. Install
  3. See error

Expected behavior
Proper Installation ig?

Desktop (please complete the following information):

  • OS: Win 10
  • JDK 11

Documentation

Generated by Javadoc + hosted on github.io (No ETA)

Testing changes

A different way testing, for each Games and Platforms.

  • Ping Test.
  • Testing Session Creation
  • Testing Created Session
  • Patch Info
  • Data Usage
  • Example Player Info
  • Testing saving data from #20

All rest endpoints will be tested via Mockito

Missing fields in classes

Those fields could be having some missing fields since last release (3.0.0). They need to be completed to the some parts and define JsonProperty annotation.

API

  • hirez.api.object.CreateSession
  • hirez.api.object.DataUsage
  • hirez.api.object.HiRezServer
  • hirez.api.object.LeagueLeaderboard -> hirez.smite.object.Rank, hirez.paladins.object.Rank
  • hirez.api.object.LeagueSeason
  • hirez.api.object.MatchId
  • hirez.api.object.MergedAccount
  • hirez.api.object.PatchInfo
  • hirez.api.object.Ping
  • hirez.api.object.PlayerIdPortal
  • hirez.api.object.PlayerQuery
  • hirez.api.object.PlayerStatus
  • hirez.api.object.TestSession

Smite

  • hirez.smite.object.Achievements
  • hirez.smite.object.DemoDetail
  • hirez.smite.object.DescriptionValue
  • hirez.smite.object.Friend
  • hirez.smite.object.God
  • hirez.smite.object.GodLeaderboard
  • hirez.smite.object.GodRank
  • hirez.smite.object.GodSkin
  • hirez.smite.object.Item
  • hirez.smite.object.ItemRecommendation
  • hirez.smite.object.LiveMatch
  • hirez.smite.object.MatchDetail
  • hirez.smite.object.MatchHistory
  • hirez.smite.object.MatchOfTheDay
  • hirez.smite.object.Player
  • hirez.smite.object.ProLeagueDetail
  • hirez.smite.object.QueueStat
  • hirez.smite.object.Team
  • hirez.smite.object.TeamMember
  • hirez.smite.object.TeamQuery
  • hirez.smite.object.TopMatch

Paladins

  • hirez.paladins.object.Champion
  • hirez.paladins.object.ChampionCard
  • hirez.paladins.object.ChampionLeaderboard
  • hirez.paladins.object.ChampionRank
  • hirez.paladins.object.ChampionSkin
  • hirez.paladins.object.DemoDetail
  • hirez.paladins.object.Friend
  • hirez.paladins.object.Item
  • hirez.paladins.object.LiveMatch
  • hirez.paladins.object.MatchDetail
  • hirez.paladins.object.MatchHistory
  • hirez.paladins.object.Player
  • hirez.paladins.object.PlayerIdXboxSwitch
  • hirez.paladins.object.PlayerLoadout
  • hirez.paladins.object.ProLeagueDetail
  • hirez.paladins.object.QueueStat

Realm Royale

  • hirez.realm.object.Leaderboard
  • hirez.realm.object.MatchDetails
  • hirez.realm.object.Player
  • hirez.realm.object.PlayerMatchHistory
  • hirez.realm.object.PlayerStats
  • hirez.realm.object.Talent

Storage class

Storing information from the API Query.

  • Updating every patch
  • Monitoring Patch data

Above mentioned process will be storing:

  • Session IDs (for specify games and platforms)
  • Gods / Champion list
  • Items / Relics / Card Deck list
  • Skins

Expose more fields

Is it possible to expose the fields lore,name, from the God class?
Currently the God class has a lot of info but it is not related to any specific God.

Maven Central repo migration

Description

The JCenter repository going shuts down May 1st. Before in fact submissions will be accepted till Feburay 28th, after that there will be NO more relases in JCenter. Unfortunate previous releases will be mostly suffer (only v3), because there will be not able to download oldest releases after sunset.

Solutions

Following by this guide

  • Create GPG Key
  • Create com.github.stachu540 namespace
  • Implement GPG Key and Passphrase into CI

Alternatives

No more alts. Starting deploy central April 1st with migration older releases. This can be also hosted via GitHub Packages

Additional context

Reference topic: https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

Cross-Platform Data

Since 2018 - Hi-Rez Studio has been merge all environment into the one database for cross-platform support. We need build some solutions to provide simple methods. Those methods will be resolved into player data which are will requested.

  • Delete all platform classes
  • Create Enumeric class Platform (with id)
  • Resolve new methods to requested Platform-Specific player data by Platform
  • Provide only one way API url.

Refactoring Compiler to Gradle

To-Do steps refactoring Gradle compiler

  • Refactoring compiler
  • Deprecating Maven Central
  • Refactoring package name
  • Planning use JCenter for Android's.
  • Using Jitpack.io - for downloading package

Missing Documentations [Javadoc]

Refill a missing documentation for those classes

API

  • hirez.api.BaseEndpoint
  • hirez.api.Configuration
  • hirez.api.ConfigurationBuilder
  • hirez.api.Division
  • hirez.api.Endpoint
  • hirez.api.GitProperties
  • hirez.api.HiRezException
  • hirez.api.HiRezUtils
  • hirez.api.Language
  • hirez.api.Portal
  • hirez.api.SessionStorage
  • hirez.api.StatusPage
  • hirez.api.sessions.CachedSessionStorage
  • hirez.api.sessions.FileSessionStorage
  • hirez.api.object
  • hirez.api.object.CreateSession
  • hirez.api.object.DataUsage
  • hirez.api.object.Game
  • hirez.api.object.HiRezServer
  • hirez.api.object.LeagueSeason
  • hirez.api.object.MatchId
  • hirez.api.object.MergedAccount
  • hirez.api.object.PatchInfo
  • hirez.api.object.Ping
  • hirez.api.object.Platform
  • hirez.api.object.PlayerIdPortal
  • hirez.api.object.PlayerQuery
  • hirez.api.object.PlayerStatus
  • hirez.api.object.TestSession
  • hirez.api.object.adapters.
  • hirez.api.object.adapters.BooleanTextDeserializer
  • hirez.api.object.adapters.CSV
  • hirez.api.object.adapters.CsvDeserializer
  • hirez.api.object.adapters.DateTimeDeserializer
  • hirez.api.object.adapters.DateTimeFormat
  • hirez.api.object.adapters.DurationTime
  • hirez.api.object.adapters.DurationTimeDeserializer
  • hirez.api.object.adapters.TextToBoolean
  • hirez.api.object.interfaces.IDObject
  • hirez.api.object.interfaces.IStatusPage
  • hirez.api.object.interfaces.Queue
  • hirez.api.object.interfaces.ReturnedMessage
  • hirez.api.object.statuspage.AffectedComponent
  • hirez.api.object.statuspage.Component
  • hirez.api.object.statuspage.Components
  • hirez.api.object.statuspage.Incident
  • hirez.api.object.statuspage.Incidents
  • hirez.api.object.statuspage.IncidentUpdate
  • hirez.api.object.statuspage.Page
  • hirez.api.object.statuspage.ScheduledMaintenances
  • hirez.api.object.statuspage.ScheduleMaintenance
  • hirez.api.object.statuspage.StatusData
  • hirez.api.object.statuspage.Summary

Paladins

  • hirez.paladins.Paladins
  • hirez.paladins.PaladinsPlatform
  • hirez.paladins.Queues
  • hirez.paladins.object.Champion
  • hirez.paladins.object.ChampionCard
  • hirez.paladins.object.ChampionLeaderboard
  • hirez.paladins.object.ChampionRank
  • hirez.paladins.object.ChampionSkin
  • hirez.paladins.object.DemoDetail
  • hirez.paladins.object.Friend
  • hirez.paladins.object.Item
  • hirez.paladins.object.LiveMatch
  • hirez.paladins.object.MatchDetail
  • hirez.paladins.object.MatchHistory
  • hirez.paladins.object.Player
  • hirez.paladins.object.PlayerIdXboxSwitch
  • hirez.paladins.object.PlayerLoadout
  • hirez.paladins.object.ProLeagueDetail
  • hirez.paladins.object.QueueStat
  • hirez.paladins.object.Rank

Realm

  • hirez.realm.Criteria
  • hirez.realm.Queues
  • hirez.realm.RealmRoyale
  • hirez.realm.object.Leaderboard
  • hirez.realm.object.MatchDetails
  • hirez.realm.object.Player
  • hirez.realm.object.PlayerMatchHistory
  • hirez.realm.object.PlayerQuery
  • hirez.realm.object.PlayerStats
  • hirez.realm.object.Talent

Smite

  • hirez.smite.Queues
  • hirez.smite.SmiteGame
  • hirez.smite.SmitePlatform
  • hirez.smite.object.Achievements
  • hirez.smite.object.DemoDetail
  • hirez.smite.object.Friend
  • hirez.smite.object.God
  • hirez.smite.object.GodLeaderboard
  • hirez.smite.object.GodRank
  • hirez.smite.object.GodSkin
  • hirez.smite.object.Item
  • hirez.smite.object.ItemRecommendation
  • hirez.smite.object.LiveMatch
  • hirez.smite.object.MatchDetail
  • hirez.smite.object.MatchHistory
  • hirez.smite.object.MatchOfTheDay
  • hirez.smite.object.Player
  • hirez.smite.object.ProLeagueDetail
  • hirez.smite.object.QueueStat
  • hirez.smite.object.Rank
  • hirez.smite.object.Team
  • hirez.smite.object.TeamMember
  • hirez.smite.object.TeamQuery
  • hirez.smite.object.TopMatch

README maven import issues

Describe the bug
On the README the maven import is:

<dependencies>
    <dependency>
          <groupId>com.github.stachu540</groupId>
          <!--for all games-->
          <artifactId>HiRezAPI-core</artifactId> 
          <!--for paladins-->
          <!--<artifactId>HiRezAPI-paladins</artifactId>-->
          <!--for smite-->
          <!--<artifactId>HiRezAPI-smite</artifactId>-->
          <version>2.1.0</version>
     </dependency>
</dependencies>

The artifact IDs should be Api not API
This cause an issue where even if corrected to the lower case version it would not import until the API files were deleted from the local machine

To Reproduce
Steps to reproduce the behavior:

  1. Import using capital API
  2. Attempt to use lower case Api

Expected behavior
Import should work as expected

Desktop (please complete the following information):

  • OS: Windows 10
  • IntelliJ 2017.3.5

Logger (Debugging)

  • Silence all dependencies logging
  • Debug Level
    • Endpoint (With URL)
    • Fetch Data from RSS (Server Status)
  • Warn Level - without StackTrace-ing
    • ProfileIsHidden exception
  • Error Level - with StackTrace
    • PlayerNotFound exception
    • ResponseException
    • BasePlatform exception - could not be resolved cause of multiplatform

v4 Tracker

  • Refactor into Kotlin (1.4)
  • Response result using (one of these):
    • kotlinx.coroutines
    • Project Reactor
  • Examples - usage
  • Enhance SessionStorage to SAM convention

Build More classes for better looks.

HiRezGames class:

  • safe creating session store.
  • New classes:
    • Ping Info
    • Test Session info
    • Usage Data
    • Demo Details
    • E-Sports Matches
    • Friends
    • Items
    • League Leaderboard
    • League Seasons
    • Match Details (with detection a match state)
      • Reworking method getMatchDetails() for detection match state
        • replacing getMatchPlayingDetails()
      • Matches with multiple entries (max 10) will be returned as Array (not worked for live matches)
    • Match History
    • Match IDs by Queue (Using Date)
    • Match of the Day
    • Patch Info - with the patch notes link (It will be to difficult)
    • Player Details - with Achievements
    • Player Status
    • Queue Status - by username
    • Server Status - with latest issue
    • Top Matches (as Array)

Smite new classes:

  • God List
    • with Recommended Items
    • with Skins (replaced getGodSkins())
  • God Leaderboards (by God names or God ID directed by queue)

Paladins new classes:

  • Champions List
    • with Recommended Items (Osbsolete - no longer supported)
    • with Skins (replaced getGodSkins())
  • Champion Ranks (by username)

Legend:
italic - Storing data, syncing it by patch minor changes from supported languages.

How can i create a session?

Hi , i think you developed a great project and i want to use it for my personal use, but i have a problem : ‘hirez.api.HiRezException: Require generate session for: createsession’
How can i solve this ?

I have to create a new session but i don’t understand how i can create it...

Thank you so much

Realm Royale API

Planned

Feature has been planed. Game is still Alpha test. More information is unknown.

Cannot create Session

Describe the bug
My Code is

ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
                    configurationBuilder.setAuthKey(Config.AUTH_KEY);
                    configurationBuilder.setDevId(Config.DEV_ID);
                    configurationBuilder.build();

                    Paladins.initConfig(configurationBuilder);

                    Flowable<MatchDetail> matchDetails = Paladins.getMatchDetails(c.getMatchID());
                    Flowable<PlayerLoadout> playerLoadoutFlowable = Paladins.getPlayerLoadouts(args[0]);

But I always get Errors like
hirez.api.HiRezException: Require generate session for: testsession.

I already tried using

CreateSession session = new CreateSession();

but it doesn't seem to fix anything.
Idk, I heard it's supposed to create them automatically, but that also doesn't work for me somehow.

Desktop (please complete the following information):

  • Win 10
  • JDK 11

Reactive Streams

General Concept

Reactive programming is an asynchronous programming paradigm concerned with data streams and the propagation of change. This means that it becomes possible to express static (e.g. arrays) or dynamic (e.g. event emitters) data streams with ease via the employed programming language(s).

Why?

Not all models will be implemented into this API. But this will be useful for programming with new Android feature. It is not only main frame. JavaFX, Ordinal Java programming for web environments and also for Discord bots (#45). Data model will not changed up. But extracting data without IO Blocking is impossible if they throwing exception. Using reactive stream having make sure it won't throw it. YOU decide which data should be constructed via reactive programming. Mostly reactive programming will be using for JavaScript. You notice asynchronous code from this language right? Here will be same but the different way.

What we need it?

Project Reactor is a great option for build reactive response. There is obstacle which those project using Netty Project. That's will complicating situations OkHttp3 users. There is NO classes which representing those library when supported not only for Android's. Hardest way is RequestBuilder for OkHttp3Client. Simplified way will complicate receiving response body data. Downloading only once. That's OkHttp3Client works. Testing with Netty Project without a good Android's knowledge will made tons of bugs when we must patch it. Programmers doesn't love a bugs. It makes them nightmare or even worse. Getting risk, responding code failure or throwing exceptions with unknown reasons.

Dependecies

  • Project Reactor - with Netty.
  • Adjusting code into dependency above mentioned
  • Test Format (#11), Mocking etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.