Giter Site home page Giter Site logo

glitchlib / glitch Goto Github PK

View Code? Open in Web Editor NEW
11.0 4.0 3.0 1.06 MB

!NO MORE MAINTAINED! Reactive API Wrapper for Twitch in Kotlin/JVM

Home Page: https://glitchlib.io

License: MIT License

Java 65.41% Kotlin 34.59%
glitch twitch twitch-api twitch-bot pubsub kraken-api helix-api twitch-chat twitch-tv twitchtv

glitch's People

Contributors

dependabot-support avatar dependabot[bot] avatar stachu540 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

glitch's Issues

Enhanced Kotlin Support

Prerequisites

Description

Fully change supports via Koltin. In #29 supports only partial and only data classes, now we are planning merge to full support into Kotlin with merging into Coroutines.

Steps to Reproduce

  1. Refactor and enhance all subject classes into Koltin
  2. Pulling them into #35

Expected behavior:
All subjects are be Kotlin
Actual behavior:
All subjects are partial Kotlin/Java
Stacktrace (if applicable):
Stacktrace handled by Reactive Streams
Version affected:
v0.7.+

Additional Information

NONE

TODO: Helix

  • Services
    • Analytics
    • Bits
    • Clips
    • Entitlements
    • Games
    • Streams
    • Users
    • Videos
    • Webhooks
  • PubSub Webhooks - PubSubHubBub

Minecraft API

Description

For Minecraft programmers, will be prepared some solutions with specific module. Discuss over here is open. Of course feel to discuss more details on our Discord. This will help improve our code to solving solutions.

Steps to Reproduce

  • Research a most useful API Add-on for Minecraft
  • Search Kotlin solutions
  • Code to the API
  • Utilize test specification
  • Deploy to server for Real Test

Expected behavior:
Listening required data.
Actual behavior:
Code requires app data which is not required to create listener.
Stacktrace (if applicable):
only if using .doOnError {}
Version affected:
1.x

TODO: Events

This issue provides only Events. It should be Immutable and documented. All events must be extends a Event from Core Websocket

Core Websocket

  • Event - Contains Client Endpoint
    • OpenEvent - connection into websocket has been established
    • CloseEvent - closing websocket connection
    • PingEvent - receiving ping from the server
    • PongEvent - receiving pong from the server
    • RawByteMessageEvent - receiving message into ByteBuffer
    • RawMessageEvent - receiving message into String

Message Interface - glitch-chat

  • RawIRCEvent
  • GlobalUserStateEvent
    • UserStateEvent
  • ChannelEvent
    • NoticeEvent
  • UserEvent
  • ChannelUserEvent - extends ChannelEvent, UserEvent
    • BanEvent
    • ClearChatEvent
    • HostEvent
    • JoinEvent
    • PartEvent
    • RaidEvent
    • RoomStateEvent
    • RoomStateChangedEvent
    • TimeoutEvent
    • UnhostEvent
    • UnbanEvent
    • SubscriptionEvent
    • SubscriptionGiftEvent
    • NewChatterEvent
    • RitualNoticeEvent
    • MessageEvent
    • BitsMessageEvent
    • PrivateMessageEvent

PubSub - glitch-pubsub

  • ListenEvent
  • UnistenEvent
  • MessageReceivedEvent

  • BitsEvent
  • CommerceEvent
  • ExtensionDataEvent
  • FollowEvent
  • GiftSubscriptionEvent
  • ModerationEvent
    • BanEvent
    • ModEvent
    • UnmodEvent
    • TimeoutEvent
    • UnbanEvent
  • PrivateMessageEvent
  • StreamCounterEvent
  • StreamStartEvent
  • StreamStopEvent
  • SubscriptionEvent

Replace Reactive Streams to RxJava

Description

Project Reactor is a way simpler but if this lib wants supporting #19 we need change of Reactive Streams at first and adding #34 support. Probably will after effecting chat and pubsub modules. We won't planning request to supporting WebSocket feature for #19 mentioned on this issue.

Steps to Reproduce

  1. Replace Mono responses to Single
  2. Replace Flux responses to Flowable
  3. Replace FluxProcessor to Observable and using them for processing events
  4. Shaping into #19
  5. Prepare to #34

Expected behavior:
All Reactive Streams solutions are be replaced and documented with explanation how it is works.
Actual behavior:
All Reactive Streams are be simplified by Project Reactor
Stacktrace (if applicable):
Reactive Streams prevents to throw exceptions soo with them we can control responses.
Version affected:
0.7.+

Additional Information

Starting March 11 we will abounding Project Reactor and using RxJava 2 with RxAndroid supports. Soo expect this day to test it. 5.0+ is Required!!! because square/okhttp#4481

TODO: Chat

  • Base Message Interface
  • Channel cache for joined channels and chat rooms
  • Chat Rooms Support - Deprecated by #41
  • Rate Limiters
  • Events supports
    • Raw IRC - for creates own custom events
    • Join/Part channel
    • Messages
    • Subscribe's
    • Gift Sub's
    • Host's
    • Raid's
    • Moderation Actions - better supported with PubSub
      • Timeout - with reasons too
      • Bans - with reasons too
      • Unbans - with reasons too
  • Command API

TODO: Test Environment

  • glitch-core - Auth endpoints
  • glitch-auth - Mocking Auth endpoints
  • glitch-socket
    • URI test
    • Mocking Dispatcher
  • glitch-chat
    • Message Parse
    • Commands Parse
  • glitch-pubsub
  • glitch-kraken & glitch-helix
    • Mocking response
    • Asserting requests
  • Android compatibility test (8.0+)

Modration API

Moderation API tool is now available in Helix API

Helix

  • AutoMod Status
  • Bans / Timeouts events
  • Bans / Timeouts user list
  • Mod list
  • Mod events

WebSub

  • Mod status
  • Bans / Timeouts status

Android Compatibility

Description

Since Play Console required API 26 interface as targetSdkVersion we will provide Android support. 26 will supports on JDK 1.8 and we can deliver them to next releases.

Another solution is preventing usage chat and pubsub module cause they using WebSocket feature. Hardware resource will be too high and too risky to using on smartphones directly, and we won't provide to utilizing resource to increase energy lifetime (it means battery) for the smartphone's. It's too risky and dangerous. For be save please use embeds and apply WebView for them

Video Uploads

Description

Video uploads is a service using Kraken API to create upload sequence, commence and upload your video with returns video data.


Steps to Reproduce

  1. Create uploads using VideoService#createUpload(<credential/video_file>)
  2. with using method createUpload building some queries for API to initiate uploading, using parameters below
    • Title (Important thing to commence upload)
    • Channel - if is not specify, will start uploading to your own authorized user channel
    • Description
    • Game
    • Language
    • Tags (character restrictions)
    • Viewable Type - specify if you want videos Public or Private (Enums here)
    • Viewable At - When will be Available to Public (if viewable type is Private)
  3. To start upload file we must specify video file or credential with available authorized scope channel_editor. There is some condition must be met:
    • If channel is specified, authorized user must have a Channel Editor plivigers into specific channel.
    • File must be a Video Format
    • If video doesn't match following formats below will convert into FLV or MP4 (discuss required)
      Following formats required by Twitch:
      • MP4, MOV, AVI and FLV file formats
      • AAC audio
      • h264 codec
      • Up to 10Mbps bitrate - important
      • Up to 1080p/60FPS - important
  4. Following Video Upload Guide we reproducing uploading Thread with Cancelable actions (Yes, will be reactive). Video parts must contains a byte[] parts with 5-25MB. All parts cannot be exceed to 10GB (throwing LimitExceededException)
  5. Complete uploads with receive Video data information received from Twitch.

Expected behavior: Most parts will allows to uploading any videos converting discussed file format.
Actual behavior: TODO
Stacktrace (if applicable):

  • ScopeIsMissingException - if authorized user doesn't have channel_editor scope
  • AccessDeniedException - authorized user is not channel editor on specific channel
  • LimitExceededException - if uploaded file is to big (max. 10GB)
  • IllegalFormatException - if file is not video, doesn't met requirements with bitrate or it is higher than 1080p/60FPS
  • IOException - other way will be thrown while initialize uploads creates thread.
    Version affected: v1 - this is a feature

Additional Information

Because this is a feature, I want to hear you ideas. First one to proceed uploading file will be check if it is a video. Next step is checking metadada using this library is some parts doesn't following formats will be converted to appropriate file format. And final step is start upload with progression.

TODO: PubSub

  • Base PubSub
  • Topics (Limitations)
    • Bits
    • Channel Subscriptions
    • Commerce
    • Whispers
    • Supported Unofficial
      • Stream Activity
      • Chat Moderation
      • Follows
      • Extensions

Auto-injection API

Description

While we using a GlitchChat.builder() we can provide inside the builder autoinjectApi(true), which we can choose when we will want to inject Kraken API or not.

Steps to Reproduce

  1. importing required dependecy glitch-kraken
  2. setting autoinjectApi() to true in GlitchChat builder
  3. searching required dependency if we calling buildAsync() or build()
  4. without API injection rate limits will be setted to default

Expected behavior:
Injected api required import glitch-kraken. User can define what he prefer injecting API to the GlitchChat solutuions
Actual behavior:
Currently use Class.forName() to searching required class which is imported via dependency manager (Gradle, Maven etc.)
Stacktrace (if applicable):
If we will setting autoinjectApi to true will search required dependency. If he is not imported will be throw: ClassNotFoundException without continue returns builder.
Version affected:
v1.+

Dependabot couldn't find a build.gradle for this project

Dependabot couldn't find a build.gradle for this project.

Dependabot requires a build.gradle to evaluate your project's current Java dependencies. It had expected to find one at the path: /build.gradle.

If this isn't a Java project, or if it is a library, you may wish to disable updates for it from within Dependabot.

You can mention @dependabot in the comments below to contact the Dependabot team.

Kotlin Support

Prerequisites

Description

Supporting Kotlin will help better developing this library and his referenced apps aswell. After this request we should starting thinking about #19

Steps to Reproduce

  1. Refactor all data objects into Kotlin Data Classes
  2. Remove Project Lombok
  3. Support Type-Safe Builders
  4. Add inline functions/methods to reified classes
  5. More adaptive documentation relates (KDoc and Javadoc)

Expected behavior:

  • All data objects are be Kotlin Data Classes
  • Project Lombok is not exist
  • Type-Safe Builder is here
  • Data Classes are be in KDoc-ed and hosted via GitHub

Actual behavior: There is nothing above mentioned.
Stacktrace (if applicable): Errors will be handled via reactor's Mono and Flux
Version affected: latest

v1 Tracker

General and Core

  • Full Kotlin Support (jvm only this version) - Multiplatform in v2
    • kotlinx.serialization
    • kotlinx.coroutines
    • io.ktor
    • DSL support
  • Enchancement website
    • UI improvements (colors, dark mode, search bar etc.)
    • Documentation merge into hugo using dokka
    • Bootstrap updates
  • Starting test unit for queries
  • General Availablility endpoints
  • Improvement OAuth2 soultions for Spring Framework
  • WebSocketApi solutions
    • Event API
  • RestApi solutions
    • RestAction API (with timeouts)
      • Direct coroutine result
      • Enqueued result
    • Apply kotlinx.serialization

Chat / PubSub

  • Chat implementations
    • IRC API for Kotlin
    • Commands API
    • Test Unit using fdgt solution
  • Enchance more Events from WebSocketApi
  • RawEvents handling and converts to specific requested event

Kraken / Helix

  • IRC API for Kotlin
  • Commands API
  • Enchance more Events from WebSocketApi
  • [kraken] Video Uploads - see #25

BOM

  • use Gradle's dependencies.constraints, rather than io.spring.dependency-management plugin

WebSub

  • Create implementation for helix resolvers
  • Create implementation using a custom FlowAction named webhook resolver

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.