Skip to content

epv44/TwitchAPIWrapper

Repository files navigation

TwitchAPIWrapper

CI Status Version License Platform

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Requirements

  • Xcode 12.5+
  • Swift 5+
  • iOS 11.0+

Installation

CocoaPods

TwitchAPIWrapper is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'TwitchAPIWrapper'

Swift Package Manager

Add TwitchAPIWrapper as a dependency, or add via xcode

dependencies: [
    .package(url: "https://github.com/epv44/TwitchAPIWrapper.git", from: "1.0.0")
]

Documentation

Read the docs generated with Jazzy.

How To User

Making A Request

See the available API calls for more details on what is supported. In general, make a request in the form of:

// Different requests have different params, everything mirrors the server requests
let userRequest = UserRequest(id: nil, login: ["evennaro1"])
  TwitchService().gen(forRequest: userRequest) { (result: Result<UserResponse>) in
    switch result {
    case .success(let r):
    print(r.users[0])
    case .failure(let error):
        print(error)
    }
}

Handling Authentication/Authorization

This project has a Authentication module that handles the bearer oauth flow for the API. You can choose to utilize it or manage tokens yourself and manually add them.

// The authorization manager login call will kick off the flow. Add your secrets and scopes however you wish.
TwitchAuthorizationManager.sharedInstance.clientID = configuration["clientID"] as? String
TwitchAuthorizationManager.sharedInstance.redirectURI = configuration["redirectURI"] as? String
TwitchAuthorizationManager.sharedInstance.scopes = configuration["scopes"] as? String
TwitchAuthorizationManager.sharedInstance.clientSecret = configuration["clientSecret"] as? String
TwitchAuthorizationManager.sharedInstance.contextProvider = self
if !TwitchAuthorizationManager.sharedInstance.hasOAuthToken() {
    do {
        try TwitchAuthorizationManager.sharedInstance.login()
    } catch {
    }
}

You can manually add credentials to the credentials object

TwitchAuthorizationManager.sharedInstance.credentials = Credentials(...)

See the example project for more details

Available API Calls

Twitch API Method Swift Request Object Swift Result Object Supported?
Start Commercial CommercialRequest CommercialResponse
Get Extension Analytics ExtensionAnalyticsRequest ExtensionAnalyticsResponse
Get Game Analytics GameAnalyticsRequest GameAnalyticsResponse
Get Bits Leaderboard LeaderboardRequest LeaderboardResponse
Get Cheermotes CheermoteRequest CheermoteResponse
Get Extension Transactions ExtensionTransactionsRequest ExtensionTransactionsResponse
Get Channel Information ChannelInformationRequest ChannelInformationResponse
Modify Channel Information ModifyChannelInformationRequest EmptyResponse
Get Channel Editors ChannelEditorsRequest ChannelEditorResponse
Create Custom Rewards CustomRewardRequest CustomRewardResponse
Delete Custom Reward CustomRewardRequest EmptyResponse
Get Custom Reward CustomRewardRequest CustomRewardResponse
Get Custom Reward Redemption CustomRewardRedemptionRequest CustomRewardResponse
Update Custom Reward CustomRewardRequest CustomRewardResponse
Update Redemption Status CustomRewardRedemptionRequest CustomRewardResponse
Create Clip ClipRequest CreateClipResponse
Get Clips ClipRequest ClipResponse
Get Code Status CodeStatusRequest CodeStatusResponse
Get Drops Entitlements DropEntitlementsRequest EntitlementResponse
Update Drops Entitlements UpdateDropsEntitlementsRequest UpdateEntitlementResponse
Redeem Code RedeemCodeRequest CodeStatusResponse
Create EventSub Subscription EventSubscriptionRequest EventSubscriptionResponse
Delete EventSub Subscription DeleteEventSubSubscriptionRequest EmptyResponse
Get EventSub Subscription GetEventSubSubscriptionRequest EventSubscriptionResponse
Get Top Games TopGameRequest GetGamesResponse
Get Games GameRequest GetGamesResponse
Get Hype Train Events GetHypeTrainEventRequest HypeTrainEventResponse
Check AutoMod Status CheckAutoModStatusRequest CheckAutoModeStatusResponse
Manage Held AutoMod Messages ManageHeldAutoModStatusRequest EmptyResponse
Get Banned Events GetBannedEventsRequest BannedEventsResponse
Get Banned Users GetBannedUsersRequest BannedUsersResponse
Get Moderators GetModeratorsRequest ModeratorsResponse
Get Moderator Events GetModeratorEventsRequest ModeratorEventsResponse
Search Categories SearchCategoriesRequest GamesResponse
Search Channels SearchChannelsRequest SearchChannelResponse
Get Stream Key GetStreamKeyRequest StreamKeyResponse
Get Streams StreamRequest StreamResponse
Get Followed Streams FollowedStreamRequest StreamResponse
Create Stream Marker CreateStreamMarkerRequest CreateStreamMarkerResponse
Get Stream Markers GetStreamMarkerRequest StreamMarkerResponse
Get Broadcaster Subscriptions BroadcasterSubscriptionRequest BroadcasterSubscriptionResponse
Check User Subscription CheckUserSubscriptionRequest UserSubscriptionResponse
Get All Stream Tags AllStreamTagRequest StreamTagResponse
Get Stream Tags StreamTagRequest StreamTagResponse
Replace Stream Tags ReplaceStreamTagRequest EmptyResponse
Get Channel Teams ChannelTeamsRequest ChannelTeamResponse
Get Teams TeamRequest TeamResponse
Get Users UserRequest UserResponse
Update User UserUpdateRequest UserResponse
Get User Follows UserFollowRequest UserFollowResponse
Create User Follows ModifyUserFollowRequest EmptyResponse
Delete User Follows ModifyUserFollowRequest EmptyResponse
Get User Block List UserBlockListRequest UserBlocklistResponse
Block User BlockUserRequest EmptyRequest
Unblock User UnblockUserRequest EmptyRequest
Get User Extensions UserExtensionRequest UserExtensionResponse
Get User Active Extensions UserActiveExtensionsRequest UserActiveExtensionResponse
Update User Extension UpdateUserExtensionsRequest UserActiveExtensionResponse
Get Videos GetVideoRequest GetVideoResponse
Delete Videos DeleteVideoRequest DeleteVideoResponse
Get Webhook Subscriptions WebhookSubscriptionsRequest WebhookSubscriptionsResponse
End Prediction EndPredictionRequest EndPredictionResponse
Create Prediction CreatePredictionRequest CreatePredictionResponse
Get Predictions GetPredictionRequest GetPredictionResponse
End Poll EndPollRequest EndPollResponse
Create Poll CreatePollRequest CreatePollResponse
Get Polls GetPollRequest GetPollResponse
Get Extension Configuration N/A N/A
Set Extension Configuration Segment N/A N/A
Set Extension Required Configuration N/A N/A
Send Extension PubSub Message N/A N/A
Get Live Channels N/A N/A
Get Extensions Secrets N/A N/A
Create Extensions Secrets N/A N/A
Send Extension Chat Message N/A N/A
Get Extensions N/A N/A
Get Released Extensions N/A N/A
Get Extension Bits Products N/A N/A
Update Extension Bits Product N/A N/A

Author

epv44, epv9@case.edu

License

TwitchAPIWrapper is available under the MIT license. See the LICENSE file for more info.

About

iOS framework for making calls to the Twitch API

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages