예제 #1
0
def updateRewardRedemptionStatus(reward_id, redemption_id, new_redemption_status) -> None:
    """
    Update the status of a reward redemption.
    Documentation: https://dev.twitch.tv/docs/api/reference#update-redemption-status
    :param reward_id: String - Id of the reward link to the redemption.
    :param redemption_id: String - Id of the redemption to update.
    :param new_redemption_status: String - The new status of the redemption.
    :exception: Throws an error if the request fails.
    """
    response = doHttpPatch(
        url=CUSTOM_REWARD_REGISTRATION_URL,
        params={
             "broadcaster_id": user_config_store.getBroadcasterId(),
             "reward_id": reward_id,
             "id": redemption_id
        },
        headers={
            "Client-id": user_config_store.getClientId(),
            "Authorization": "Bearer " + generateRedemptionToken(),
            "Content-Type": "application/json"
        },
        body={
            "status": new_redemption_status
        }
    )

    if response.status_code != 200:
        # TODO : Mieux gérer les erreurs
        raise Exception('An error occurs while updating the status of a reward redemption. Status code : {0}'
                        .format(response.status_code))
예제 #2
0
    def init_quiz(self) -> None:
        """
        Initialize a quiz and open registrations.
        """
        # Block if account is not setup to connect to the twitch api
        if not configController.isAllRequiredConfigDefined():
            raiseError("At least one mandatory configuration is missing.")

        else:
            # Retrieve the broadcaster id
            user_config_store.setBroadcasterId(
                retrieveBroadcastId(generateRedemptionToken(),
                                    user_config_store.getClientId()))

            quiz_store.resetQuiz()

            # Open player registration
            try:
                createQuizRegistrationReward()

                registerPlayersFromRegistrationReward(
                    quiz_store.isPlayerCheckInOpen)
            except Exception as err:
                self.logger.error("{0}".format(err))
                raiseError("An error appears during the quiz initialization")
예제 #3
0
def getUnfulfilledRewardRedemptions(reward_id) -> list[RewardRedemption]:
    """
    Retrieve a list a reward redemptions which are not fulfilled or cancelled.
    Documentation: https://dev.twitch.tv/docs/api/reference#get-custom-reward-redemption
    :param reward_id: String - The id of the reward which we want redemptions.
    :exception: Throws an error if the request fails.
    :return: List of Object - The list of reward redemptions to manage.
    """
    response = doHttpGet(
        url=CUSTOM_REWARD_REGISTRATION_URL,
        params={
            "broadcaster_id": user_config_store.getBroadcasterId(),
            "reward_id": reward_id,
            "status": "UNFULFILLED"
        },
        headers={
            "Client-id": user_config_store.getClientId(),
            "Authorization": "Bearer " + generateRedemptionToken()
        }
    )

    if response.status_code != 200:
        # TODO : Mieux gérer les erreurs
        raise Exception('An error occurs while retrieving the reward redemptions. Status code : {0}'
                        .format(response.status_code))
    else:
        return response.json()['data']
예제 #4
0
def createReward(title, cost) -> str:
    """
    Create a custom reward.
    Documentation: https://dev.twitch.tv/docs/api/reference#create-custom-rewards
    :param title: String - Title of the reward to create.
    :param cost: Number - Cost of the reward
    :exception: Throws an Exception if the request failed.
    :return: String - The id of the custom reward
    """

    response = doHttpPost(
        uri=CUSTOM_REWARD_URL,
        params={
            "broadcaster_id": user_config_store.getBroadcasterId()
        },
        headers={
            "Client-id": user_config_store.getClientId(),
            "Authorization": "Bearer " + generateRedemptionToken()
        },
        body={
            "title": title,
            "cost": cost
        }
    )

    if response.status_code == 200:
        return response.json()['data'][0]['id']
    else:
        # TODO : Mieux gérer les erreurs
        raise Exception('An error occurs during the reward creation. Status code : {0}'.format(response.status_code))
예제 #5
0
 def isAllRequiredConfigDefined(self) -> None:
     """
     Returns true if all the required configs are defined. If at least one config is missing, returns false.
     :param self:
     :return: boolean
     """
     return user_config_store.getClientId() != "" \
            and user_config_store.getClientSecret() != "" \
            and user_config_store.getRewardCost(PLAYER_REGISTRATION_REWARD_PARAM_NAME) != 0
예제 #6
0
def generateRedemptionToken() -> str:
    """
    Generate a Twitch token for redemption scopes.
    :return: String - The Bearer Token.
    """

    response = doHttpPost(
        url=AUTH_TOKEN_GENERATION_URL,
        params={
            'client_id': user_config_store.getClientId(),
            'client_secret': user_config_store.getClientSecret(),
            'grant_type': 'client_credentials',
            'scope': 'channel:manage:redemptions channel:read:redemptions'
        }
    )

    # Return the token if the answer is correct, otherwise return an empty token.
    return response.json()['access_token'] if response.status_code == 200 else ''
예제 #7
0
def deleteReward(reward_id) -> None:
    """
    Delete a custom reward.
    Documentation: https://dev.twitch.tv/docs/api/reference#delete-custom-reward
    :exception: Throws an error if the request fails.
    """
    response = doHttpDelete(
        url=CUSTOM_REWARD_URL,
        params={
            "broadcaster_id": user_config_store.getBroadcasterId(),
            "id": reward_id
        },
        headers={
            "Client-id": user_config_store.getClientId(),
            "Authorization": "Bearer " + generateRedemptionToken()
        }
    )

    if response.status_code != 204:
        # TODO : Mieux gérer les erreurs
        raise Exception('An error occurs during the reward deletion. Status code : {0}'.format(response.status_code))