essential-actions

Clone or download

Merge pull request #16 from j4ckofalltrades/clear-twitch-chat-creds

Clear twitch chat config

Modified Files

A Makefile
+29 −0
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,29 @@
+build-all:
+ ./build.sh
+
+build-hotkey-action:
+ ./build.sh hotkey
+
+build-media-key-action:
+ ./build.sh mediakey
+
+build-obs-suite-action:
+ ./build.sh obssuite
+
+build-play-audio-clip-action:
+ ./build.sh playaudioclip
+
+build-run-command-action:
+ ./build.sh runcommand
+
+build-text-block-action:
+ ./build.sh textblock
+
+build-twitch-chat-action:
+ ./build.sh twitchchat
+
+build-twitter-action:
+ ./build.sh twitter
+
+build-website-action:
+ ./build.sh website
Binary files 'a/PreBuiltPlugins/twitch-chat-connect.jar' and b/PreBuiltPlugins/twitch-chat-connect.jar differ
Binary files 'a/PreBuiltPlugins/twitch-send-channel-msg.jar' and b/PreBuiltPlugins/twitch-send-channel-msg.jar differ
M README.md
+1 −1
--- 'a/README.md'
+++ b/README.md
@@ -39,7 +39,7 @@ Copy the `twitch-chat-connect`, `twitch-
## Quick Start
-Build actions by executing `./build.sh` from the command line.
+Build all actions by executing `make build-all` from the command line or specific actions i.e. `make build-twitch-chat-action`, see [Makefile](Makefile) for complete list.
To test these actions out in your local environment you'll need to run the [Stream-Pi Server](https://github.com/stream-pi/server) and copy the contents of `PreBuiltPlugins/` to the server's
Plugins directory (`data/Plugins` by default), especially if you're writing your own custom action / integration.
M build.sh
+142 −70
--- 'a/build.sh'
+++ b/build.sh
@@ -1,72 +1,144 @@
-FOLD=../PreBuiltPlugins
-
-pushd . || exit
-cd hotkeyaction && mvn clean package
-mv target/hotkeyaction-1.0.0.jar $FOLD/hotkeyaction.jar
-
-cd ../mediakeyaction && mvn clean package
-mv target/mediakeyaction-1.0.0.jar $FOLD/mediakeyaction.jar
-
-cd ../playaudioclipaction && mvn clean package
-mv target/playaudioclipaction-1.0.0.jar $FOLD/playaudioclipaction.jar
-
-cd ../runcommandaction && mvn clean package
-mv target/runcommandaction-1.0.0.jar $FOLD/runcommandaction.jar
-
-cd ../textblockaction && mvn clean package
-mv target/textblockaction-1.0.0.jar $FOLD/textblockaction.jar
-
-cd ../twitteraction && mvn clean package
-mv target/twitteraction-1.0.0.jar $FOLD/twitteraction.jar
-
-cd ../websiteaction && mvn clean package
-mv target/websiteaction-1.0.0.jar $FOLD/websiteaction.jar
-popd || exit
-
-## OBS Suite
-pushd . || exit
-cd obssuite/mother && mvn clean install package
-mv target/obssuite_motheraction-1.0.0.jar ../$FOLD/obssuite_motheraction.jar
-
-cd ../setcurrentprofile && mvn clean package
-mv target/obssuite_setcurrentprofileaction-1.0.0.jar ../$FOLD/obssuite_setcurrentprofileaction.jar
-
-cd ../setcurrentscene && mvn clean package
-mv target/obssuite_setcurrentsceneaction-1.0.0.jar ../$FOLD/obssuite_setcurrentsceneaction.jar
+#!/bin/bash
-cd ../setcurrenttransition && mvn clean package
-mv target/obssuite_setcurrenttransitionaction-1.0.0.jar ../$FOLD/obssuite_setcurrenttransitionaction.jar
-
-cd ../setmute && mvn clean package
-mv target/obssuite_setmuteaction-1.0.0.jar ../$FOLD/obssuite_setmuteaction.jar
-
-cd ../setcurrentprofile && mvn clean package
-mv target/obssuite_setcurrentprofileaction-1.0.0.jar ../$FOLD/obssuite_setcurrentprofileaction.jar
-
-cd ../setpreviewscene && mvn clean package
-mv target/obssuite_setpreviewsceneaction-1.0.0.jar ../$FOLD/obssuite_setpreviewsceneaction.jar
-
-cd ../setrecording && mvn clean package
-mv target/obssuite_setrecordingaction-1.0.0.jar ../$FOLD/obssuite_setrecordingaction.jar
-
-cd ../setreplaybuffer && mvn clean package
-mv target/obssuite_setreplaybufferaction-1.0.0.jar ../$FOLD/obssuite_setreplaybufferaction.jar
-
-cd ../setstreaming && mvn clean package
-mv target/obssuite_setstreamingaction-1.0.0.jar ../$FOLD/obssuite_setstreamingaction.jar
-
-cd ../setstudiomode && mvn clean package
-mv target/obssuite_setstudiomodeaction-1.0.0.jar ../$FOLD/obssuite_setstudiomodeaction.jar
-
-cd ../setvolume && mvn clean package
-mv target/obssuite_setvolumeaction-1.0.0.jar ../$FOLD/obssuite_setvolumeaction.jar
-popd || exit
-
-# Twitch Chat
-pushd . || exit
-cd twitch/twitch-chat-connect && mvn clean install package
-mv target/twitch-chat-connect-1.0.0.jar ../$FOLD/twitch-chat-connect.jar
+FOLD=../PreBuiltPlugins
-cd ../send-channel-msg && mvn clean package
-mv target/twitch-send-channel-msg-1.0.0.jar ../$FOLD/twitch-send-channel-msg.jar
-popd || exit
+hotkey() {
+ pushd . || exit
+ cd hotkeyaction && mvn clean package
+ mv target/hotkeyaction-1.0.0.jar $FOLD/hotkeyaction.jar
+ popd || exit
+}
+
+mediakey() {
+ pushd . || exit
+ cd mediakeyaction && mvn clean package
+ mv target/mediakeyaction-1.0.0.jar $FOLD/mediakeyaction.jar
+ popd || exit
+}
+
+obssuite() {
+ pushd . || exit
+ cd obssuite/mother && mvn clean install package
+ mv target/obssuite_motheraction-1.0.0.jar ../$FOLD/obssuite_motheraction.jar
+
+ cd ../setcurrentprofile && mvn clean package
+ mv target/obssuite_setcurrentprofileaction-1.0.0.jar ../$FOLD/obssuite_setcurrentprofileaction.jar
+
+ cd ../setcurrentscene && mvn clean package
+ mv target/obssuite_setcurrentsceneaction-1.0.0.jar ../$FOLD/obssuite_setcurrentsceneaction.jar
+
+ cd ../setcurrenttransition && mvn clean package
+ mv target/obssuite_setcurrenttransitionaction-1.0.0.jar ../$FOLD/obssuite_setcurrenttransitionaction.jar
+
+ cd ../setmute && mvn clean package
+ mv target/obssuite_setmuteaction-1.0.0.jar ../$FOLD/obssuite_setmuteaction.jar
+
+ cd ../setcurrentprofile && mvn clean package
+ mv target/obssuite_setcurrentprofileaction-1.0.0.jar ../$FOLD/obssuite_setcurrentprofileaction.jar
+
+ cd ../setpreviewscene && mvn clean package
+ mv target/obssuite_setpreviewsceneaction-1.0.0.jar ../$FOLD/obssuite_setpreviewsceneaction.jar
+
+ cd ../setrecording && mvn clean package
+ mv target/obssuite_setrecordingaction-1.0.0.jar ../$FOLD/obssuite_setrecordingaction.jar
+
+ cd ../setreplaybuffer && mvn clean package
+ mv target/obssuite_setreplaybufferaction-1.0.0.jar ../$FOLD/obssuite_setreplaybufferaction.jar
+
+ cd ../setstreaming && mvn clean package
+ mv target/obssuite_setstreamingaction-1.0.0.jar ../$FOLD/obssuite_setstreamingaction.jar
+
+ cd ../setstudiomode && mvn clean package
+ mv target/obssuite_setstudiomodeaction-1.0.0.jar ../$FOLD/obssuite_setstudiomodeaction.jar
+
+ cd ../setvolume && mvn clean package
+ mv target/obssuite_setvolumeaction-1.0.0.jar ../$FOLD/obssuite_setvolumeaction.jar
+ popd || exit
+}
+
+playaudioclip() {
+ pushd . || exit
+ cd playaudioclipaction && mvn clean package
+ mv target/playaudioclipaction-1.0.0.jar $FOLD/playaudioclipaction.jar
+ popd || exit
+}
+
+runcommand() {
+ pushd . || exit
+ cd runcommandaction && mvn clean package
+ mv target/runcommandaction-1.0.0.jar $FOLD/runcommandaction.jar
+ popd || exit
+}
+
+textblock() {
+ pushd . || exit
+ cd textblockaction && mvn clean package
+ mv target/textblockaction-1.0.0.jar $FOLD/textblockaction.jar
+ popd || exit
+}
+
+twitter() {
+ pushd . || exit
+ cd twitteraction && mvn clean package
+ mv target/twitteraction-1.0.0.jar $FOLD/twitteraction.jar
+ popd || exit
+}
+
+twitchchat() {
+ pushd . || exit
+ cd twitch/twitch-chat-connect && mvn clean install package
+ mv target/twitch-chat-connect-1.0.0.jar ../$FOLD/twitch-chat-connect.jar
+
+ cd ../send-channel-msg && mvn clean package
+ mv target/twitch-send-channel-msg-1.0.0.jar ../$FOLD/twitch-send-channel-msg.jar
+ popd || exit
+}
+
+websiteaction() {
+ pushd . || exit
+ cd websiteaction && mvn clean package
+ mv target/websiteaction-1.0.0.jar $FOLD/websiteaction.jar
+ popd || exit
+}
+
+case "$1" in
+hotkey)
+ hotkey
+ ;;
+mediakey)
+ mediakey
+ ;;
+playaudioclip)
+ playaudioclip
+ ;;
+runcommand)
+ runcommand
+ ;;
+textblock)
+ textblock
+ ;;
+twitter)
+ twitter
+ ;;
+website)
+ website
+ ;;
+obssuite)
+ obssuite
+ ;;
+twitchchat)
+ twitchchat
+ ;;
+*)
+ # build all actions as default
+ hotkey
+ mediakey
+ obssuite
+ playaudioclip
+ runcommand
+ textblock
+ twitter
+ twitchchat
+ website
+ ;;
+esac
--- 'a/twitch/send-channel-msg/src/main/java/module-info.java'
+++ b/twitch/send-channel-msg/src/main/java/module-info.java
@@ -2,7 +2,7 @@ module com.stream_pi.twitch.sendchannelm
requires com.stream_pi.util;
requires com.stream_pi.action_api;
- requires com.stream_pi.twitchconnectaction;
+ requires com.stream_pi.twitchchatconnectaction;
requires Java.Twirk;
provides com.stream_pi.action_api.normalaction.NormalAction with sendchannelmsg.SendChannelMessageAction;
--- 'a/twitch/send-channel-msg/src/main/java/sendchannelmsg/SendChannelMessageAction.java'
+++ b/twitch/send-channel-msg/src/main/java/sendchannelmsg/SendChannelMessageAction.java
@@ -5,12 +5,13 @@ import com.gikk.twirk.TwirkBuilder;
import com.stream_pi.action_api.actionproperty.property.Property;
import com.stream_pi.action_api.actionproperty.property.Type;
import com.stream_pi.action_api.normalaction.NormalAction;
-import com.stream_pi.util.alert.StreamPiAlert;
-import com.stream_pi.util.alert.StreamPiAlertType;
import com.stream_pi.util.exception.StreamPiException;
import com.stream_pi.util.version.Version;
import connect.chat.TwitchChatCredentials;
+import static connect.chat.TwitchChatCredentials.DEFAULT_TWITCH_NICKNAME;
+import static connect.chat.TwitchChatCredentials.DEFAULT_TWITCH_TOKEN;
+
public class SendChannelMessageAction extends NormalAction
{
@@ -92,12 +93,12 @@ public class SendChannelMessageAction ex
final String twitchNickname = credentials.getNickname();
boolean isNicknameInitialized = twitchNickname != null &&
!twitchNickname.isEmpty() &&
- !twitchNickname.equalsIgnoreCase("twitch_nickname");
+ !twitchNickname.equalsIgnoreCase(DEFAULT_TWITCH_NICKNAME);
final String twitchChatOauthToken = credentials.getOauthToken();
boolean isTokenInitialized = twitchChatOauthToken != null &&
!twitchChatOauthToken.isEmpty() &&
- !twitchChatOauthToken.equalsIgnoreCase("twitch_oauth_token");
+ !twitchChatOauthToken.equalsIgnoreCase(DEFAULT_TWITCH_TOKEN);
return isNicknameInitialized && isTokenInitialized;
}
--- 'a/twitch/twitch-chat-connect/src/main/java/connect/TwitchChatConnectAction.java'
+++ b/twitch/twitch-chat-connect/src/main/java/connect/TwitchChatConnectAction.java
@@ -16,7 +16,7 @@ public class TwitchChatConnectAction ext
private static final String TWITCH_ACCESS_TOKEN_KEY = "twitch_access_token";
private static final String TWITCH_NICKNAME_KEY = "twitch_nickname";
- private final Button saveCredentialsBtn;
+ private final Button clearCredentialsBtn;
public TwitchChatConnectAction()
{
@@ -27,61 +27,64 @@ public class TwitchChatConnectAction ext
setVersion(new Version(1, 0, 0));
setHelpLink("https://github.com/Stream-Pi/essentialactions");
- saveCredentialsBtn = new Button("Save Twitch chat credentials");
- setButtonBar(saveCredentialsBtn);
+ clearCredentialsBtn = new Button("Clear Twitch chat credentials");
+ onClearCredentials();
+ setButtonBar(clearCredentialsBtn);
}
@Override
- public void initProperties() throws Exception
+ public void initProperties()
{
Property twitchNicknameProp = new Property(TWITCH_NICKNAME_KEY, Type.STRING);
twitchNicknameProp.setDisplayName("Twitch Username");
- twitchNicknameProp.setDefaultValueStr("twitch_nickname");
- twitchNicknameProp.setCanBeBlank(false);
Property twitchAccessTokenProp = new Property(TWITCH_ACCESS_TOKEN_KEY, Type.STRING);
twitchAccessTokenProp.setDisplayName("Access Token");
- twitchAccessTokenProp.setDefaultValueStr("twitch_oauth_token");
- twitchAccessTokenProp.setCanBeBlank(false);
addServerProperties(twitchNicknameProp, twitchAccessTokenProp);
}
@Override
- public void initAction() throws Exception
+ public void initAction() throws MinorException
{
- saveCredentialsBtn.setOnAction(action ->
+ clearCredentialsBtn.setDisable(isEmptyCredentials());
+
+ TwitchChatCredentials.setCredentials(
+ new TwitchChatCredentials.ChatCredentials()
+ .setOauthToken(getServerProperties().getSingleProperty(TWITCH_ACCESS_TOKEN_KEY).getStringValue())
+ .setNickname(getServerProperties().getSingleProperty(TWITCH_NICKNAME_KEY).getStringValue()));
+ }
+
+ private boolean isEmptyCredentials() throws MinorException {
+ final String twitchNickname = getServerProperties().getSingleProperty(TWITCH_NICKNAME_KEY).getStringValue();
+ final String twitchChatOauthToken = getServerProperties().getSingleProperty(TWITCH_ACCESS_TOKEN_KEY).getStringValue();
+ return (twitchNickname == null || twitchNickname.isEmpty()) &&
+ (twitchChatOauthToken == null || twitchChatOauthToken.isEmpty());
+ }
+
+ private void onClearCredentials()
+ {
+ clearCredentialsBtn.setOnAction(action ->
{
try
{
- persistCredentials();
-
+ getServerProperties().getSingleProperty(TWITCH_ACCESS_TOKEN_KEY).setStringValue("");
+ getServerProperties().getSingleProperty(TWITCH_NICKNAME_KEY).setStringValue("");
+ saveServerProperties();
new StreamPiAlert(
- "Twitch chat credentials saved",
- "Chat credentials been saved, you can now start using Twitch chat integration actions.",
+ "Twitch chat credentials cleared",
+ "To revoke token access, disconnect \"Twitch Chat OAuth Token Generator\" from your Twitch settings (https://www.twitch.tv/settings/connections).",
StreamPiAlertType.INFORMATION)
.show();
} catch (Exception e)
{
new StreamPiAlert(
"Failed to save chat credentials",
- "An error has occurred while saving chat credentials, please try again.",
+ "An error has occurred while clearing chat credentials, please try again.",
StreamPiAlertType.WARNING)
.show();
}
});
-
- persistCredentials();
- }
-
- private void persistCredentials() throws MinorException
- {
- final String token = getServerProperties().getSingleProperty(TWITCH_ACCESS_TOKEN_KEY).getStringValue();
- final String nickname = getServerProperties().getSingleProperty(TWITCH_NICKNAME_KEY).getStringValue();
- TwitchChatCredentials.setCredentials(
- new TwitchChatCredentials.ChatCredentials()
- .setOauthToken(token)
- .setNickname(nickname));
}
@Override
--- 'a/twitch/twitch-chat-connect/src/main/java/connect/chat/TwitchChatCredentials.java'
+++ b/twitch/twitch-chat-connect/src/main/java/connect/chat/TwitchChatCredentials.java
@@ -2,6 +2,8 @@ package connect.chat;
public final class TwitchChatCredentials
{
+ public static final String DEFAULT_TWITCH_NICKNAME = "twitch_username";
+ public static final String DEFAULT_TWITCH_TOKEN = "twitch_token";
private static ChatCredentials credentials;
--- 'a/twitch/twitch-chat-connect/src/main/java/module-info.java'
+++ b/twitch/twitch-chat-connect/src/main/java/module-info.java
@@ -1,6 +1,4 @@
-import connect.TwitchChatConnectAction;
-
-module com.stream_pi.twitchconnectaction {
+module com.stream_pi.twitchchatconnectaction {
requires com.stream_pi.action_api;
requires com.stream_pi.util;
@@ -9,5 +7,5 @@ module com.stream_pi.twitchconnectaction
exports connect.chat;
- provides com.stream_pi.action_api.normalaction.NormalAction with TwitchChatConnectAction;
+ provides com.stream_pi.action_api.normalaction.NormalAction with connect.TwitchChatConnectAction;
}
\ No newline at end of file