diff --git a/CODEOWNERS b/CODEOWNERS
index 6d8ddc9c790ab..4b4e4a859c790 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -355,7 +355,6 @@
/bundles/org.openhab.binding.tplinksmarthome/ @Hilbrand
/bundles/org.openhab.binding.tr064/ @J-N-K
/bundles/org.openhab.binding.tradfri/ @cweitkamp @kaikreuzer
-/bundles/org.openhab.binding.twitter/ @computergeek1507
/bundles/org.openhab.binding.unifi/ @mgbowman @Hilbrand
/bundles/org.openhab.binding.unifiedremote/ @GiviMAD
/bundles/org.openhab.binding.upb/ @marcusb
@@ -386,6 +385,7 @@
/bundles/org.openhab.binding.wled/ @Skinah
/bundles/org.openhab.binding.wolfsmartset/ @BoBiene
/bundles/org.openhab.binding.wundergroundupdatereceiver/ @danieldemus
+/bundles/org.openhab.binding.x/ @computergeek1507
/bundles/org.openhab.binding.xmltv/ @clinique
/bundles/org.openhab.binding.xmppclient/ @pavel-gololobov
/bundles/org.openhab.binding.yamahamusiccast/ @coop-git
diff --git a/bom/openhab-addons/pom.xml b/bom/openhab-addons/pom.xml
index 9f322e518bc05..bfee3215ad361 100644
--- a/bom/openhab-addons/pom.xml
+++ b/bom/openhab-addons/pom.xml
@@ -1761,11 +1761,6 @@
org.openhab.binding.tradfri
${project.version}
-
- org.openhab.addons.bundles
- org.openhab.binding.twitter
- ${project.version}
-
org.openhab.addons.bundles
org.openhab.binding.unifi
@@ -1921,6 +1916,11 @@
org.openhab.binding.wundergroundupdatereceiver
${project.version}
+
+ org.openhab.addons.bundles
+ org.openhab.binding.x
+ ${project.version}
+
org.openhab.addons.bundles
org.openhab.binding.xmltv
diff --git a/bundles/org.openhab.binding.twitter/README.md b/bundles/org.openhab.binding.twitter/README.md
deleted file mode 100644
index b0ed2e6abae62..0000000000000
--- a/bundles/org.openhab.binding.twitter/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# Twitter Binding
-
-The Twitter binding allows your home to Tweet 280 characters at a time. It also supports direct messages and tweeting with media.
-
-## Supported Things
-
-```text
-account - Twitter Account.
-```
-
-## Thing Configuration
-
-The Twitter Account Thing requires you to create a Twitter App in the Twitter Developer Page.
-
-| Property | Default | Required | Description |
-|-------------------|---------|:--------:|-----------------------------------|
-| consumerKey | | Yes | Consumer API Key |
-| consumerSecret | | Yes | Consumer API Secret |
-| accessToken | | Yes | Access Token |
-| accessTokenSecret | | Yes | Access Token Secret |
-| refresh | 30 | No | Tweet refresh interval in minutes |
-
-## Channels
-
-| channel | type | description |
-|------------|--------|------------------------------------------------|
-| lasttweet | String | This channel provides the Latest Tweet message |
-
-## Full Example
-
-twitter.things:
-
-```java
-Thing twitter:account:sampleaccount [ consumerKey="11111", consumerSecret="22222", accessToken="33333", accessTokenSecret="444444" ]
-
-```
-
-twitter.items:
-
-```java
-String sample_tweet "Latest Tweet: [%s]" { channel="twitter:account:sampleaccount:lasttweet" }
-
-```
-
-## Rule Action
-
-This binding includes rule actions for sending tweets and direct messages.
-
-- `boolean success = sendTweet(String text)`
-- `boolean success = sendTweetWithAttachment(String text, String URL)`
-- `boolean success = sendDirectMessage(String recipientID, String text)`
-
-Examples:
-
-```java
-val tweetActions = getActions("twitter","twitter:account:sampleaccount")
-val success = tweetActions.sendTweet("This is A Tweet")
-val success2 = tweetActions.sendTweetWithAttachment("This is A Tweet with a Pic", file:///tmp/201601011031.jpg)
-val success3 = tweetActions.sendTweetWithAttachment("Windows Picture", "D:\\Test.png" )
-val success4 = tweetActions.sendTweetWithAttachment("HTTP Picture", "http://www.mywebsite.com/Test.png" )
-val success5 = tweetActions.sendDirectMessage("1234567", "Wake Up" )
-
-```
diff --git a/bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/i18n/twitter.properties b/bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/i18n/twitter.properties
deleted file mode 100644
index 161cccf2a81be..0000000000000
--- a/bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/i18n/twitter.properties
+++ /dev/null
@@ -1,32 +0,0 @@
-# add-on
-
-addon.twitter.name = Twitter Binding
-addon.twitter.description = Supports adding Thing for getting the Last Tweet. Send Tweets and Pictures with Actions.
-
-# thing types
-
-thing-type.twitter.account.label = Twitter Account
-thing-type.twitter.account.description = Account uses for sending Tweets
-
-# thing types config
-
-thing-type.config.twitter.account.accessToken.label = Access Token
-thing-type.config.twitter.account.accessTokenSecret.label = Access Token Secret
-thing-type.config.twitter.account.consumerKey.label = Consumer API Key
-thing-type.config.twitter.account.consumerSecret.label = Consumer API Secret
-thing-type.config.twitter.account.refresh.label = Refresh Time
-thing-type.config.twitter.account.refresh.description = Refresh Time for This Account in Mins
-
-# channel types
-
-channel-type.twitter.lasttweet.label = Last Tweet
-channel-type.twitter.lasttweet.description = Users Last Tweet
-
-# actions
-
-sendAttachmentTweetActionLabel = send a Tweet with attachment
-sendAttachmentTweetActionDescription = Sends a Tweet with an attachment.
-sendDirectMessageActionLabel = send a DirectMessage
-sendDirectMessageActionDescription = Sends a DirectMessage.
-sendTweetActionLabel = send a Tweet
-sendTweetActionDescription = Sends a Tweet.
diff --git a/bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/i18n/twitter_fr.properties b/bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/i18n/twitter_fr.properties
deleted file mode 100644
index 06d82693efbf8..0000000000000
--- a/bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/i18n/twitter_fr.properties
+++ /dev/null
@@ -1,32 +0,0 @@
-# add-on
-
-addon.twitter.name = Extension Twitter
-addon.twitter.description = Cette extension permet d'obtenir le dernier Tweet ou d'envoyer des Tweets et des images depuis vos règles d'automatisation.
-
-# thing types
-
-thing-type.twitter.account.label = Compte Twitter
-thing-type.twitter.account.description = Compte pour envoyer des Tweets
-
-# thing types config
-
-thing-type.config.twitter.account.accessToken.label = Jeton d'authentification
-thing-type.config.twitter.account.accessTokenSecret.label = Code secret du jeton d'authentification
-thing-type.config.twitter.account.consumerKey.label = Clé d'accès à l'API
-thing-type.config.twitter.account.consumerSecret.label = Code secret pour l'accès à l'API
-thing-type.config.twitter.account.refresh.label = Fréquence de rafraîchissement
-thing-type.config.twitter.account.refresh.description = Fréquence de rafraîchissement de ce compte en minutes
-
-# channel types
-
-channel-type.twitter.lasttweet.label = Dernier Tweet
-channel-type.twitter.lasttweet.description = Dernier Tweet des utilisateurs
-
-# actions
-
-sendAttachmentTweetActionLabel = envoyer un Tweet avec pièce jointe
-sendAttachmentTweetActionDescription = Envoie un Tweet avec pièce jointe.
-sendDirectMessageActionLabel = envoyer un message privé
-sendDirectMessageActionDescription = Envoie un message privé.
-sendTweetActionLabel = envoyer un Tweet
-sendTweetActionDescription = Envoie un Tweet.
diff --git a/bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/i18n/twitter_ru.properties b/bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/i18n/twitter_ru.properties
deleted file mode 100644
index 6991945830740..0000000000000
--- a/bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/i18n/twitter_ru.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-# actions
-sendTweetActionLabel = отправить твит
-sendTweetActionDescription = Отправляет твит.
-
-sendAttachmentTweetActionLabel = отправить твит с вложением
-sendAttachmentTweetActionDescription = Отправляет твит с вложением.
-
-sendDirectMessageActionLabel = отправить личное сообщение
-sendDirectMessageActionDescription = Отправляет личное сообщение.
diff --git a/bundles/org.openhab.binding.twitter/NOTICE b/bundles/org.openhab.binding.x/NOTICE
similarity index 100%
rename from bundles/org.openhab.binding.twitter/NOTICE
rename to bundles/org.openhab.binding.x/NOTICE
diff --git a/bundles/org.openhab.binding.x/README.md b/bundles/org.openhab.binding.x/README.md
new file mode 100644
index 0000000000000..846ee864b1164
--- /dev/null
+++ b/bundles/org.openhab.binding.x/README.md
@@ -0,0 +1,60 @@
+# X Binding
+
+The X (formerly known as Twitter) binding allows your home to post 280 characters at a time. It also supports direct messages and posting with media.
+
+## Supported Things
+
+```text
+account - X Account.
+```
+
+## Thing Configuration
+
+The X Account Thing requires you to create a X App in the X Developer Page.
+
+| Property | Default | Required | Description |
+|-------------------|---------|:--------:|-----------------------------------|
+| consumerKey | | Yes | Consumer API Key |
+| consumerSecret | | Yes | Consumer API Secret |
+| accessToken | | Yes | Access Token |
+| accessTokenSecret | | Yes | Access Token Secret |
+| refresh | 30 | No | Post refresh interval in minutes |
+
+## Channels
+
+| channel | type | description |
+|----------|--------|-----------------------------------------------|
+| lastpost | String | This channel provides the Latest post message |
+
+## Full Example
+
+x.things:
+
+```java
+Thing x:account:sampleaccount [ consumerKey="11111", consumerSecret="22222", accessToken="33333", accessTokenSecret="444444" ]
+```
+
+x.items:
+
+```java
+String sample_post "Latest post: [%s]" { channel="x:account:sampleaccount:lastpost" }
+```
+
+## Rule Action
+
+This binding includes rule actions for sending posts and direct messages.
+
+- `boolean success = sendPost(String text)`
+- `boolean success = sendPostWithAttachment(String text, String URL)`
+- `boolean success = sendDirectMessage(String recipientID, String text)`
+
+Examples:
+
+```java
+val postActions = getActions("x","x:account:sampleaccount")
+val success = postActions.sendPost("This is A Post")
+val success2 = postActions.sendPostWithAttachment("This is A Post with a Pic", file:///tmp/201601011031.jpg)
+val success3 = postActions.sendPostWithAttachment("Windows Picture", "D:\\Test.png" )
+val success4 = postActions.sendPostWithAttachment("HTTP Picture", "http://www.mywebsite.com/Test.png" )
+val success5 = postActions.sendDirectMessage("1234567", "Wake Up" )
+```
diff --git a/bundles/org.openhab.binding.twitter/pom.xml b/bundles/org.openhab.binding.x/pom.xml
similarity index 67%
rename from bundles/org.openhab.binding.twitter/pom.xml
rename to bundles/org.openhab.binding.x/pom.xml
index 00e42c8b7ff4f..f7020d2f91e9e 100644
--- a/bundles/org.openhab.binding.twitter/pom.xml
+++ b/bundles/org.openhab.binding.x/pom.xml
@@ -10,19 +10,19 @@
4.1.0-SNAPSHOT
- org.openhab.binding.twitter
+ org.openhab.binding.x
- openHAB Add-ons :: Bundles :: Twitter Binding
+ openHAB Add-ons :: Bundles :: X Binding
- !android.*,!com.android.org.*,!dalvik.*,!javax.annotation.meta.*,!org.apache.harmony.*,!org.conscrypt.*,!sun.*,!com.google.appengine.api.*
+ !org.slf4j.impl.*,!android.*,!com.android.org.*,!dalvik.*,!javax.annotation.meta.*,!org.apache.harmony.*,!org.conscrypt.*,!sun.*,!com.google.appengine.api.*
org.twitter4j
twitter4j-core
- 4.0.7
+ 4.1.2
compile
diff --git a/bundles/org.openhab.binding.twitter/src/main/feature/feature.xml b/bundles/org.openhab.binding.x/src/main/feature/feature.xml
similarity index 53%
rename from bundles/org.openhab.binding.twitter/src/main/feature/feature.xml
rename to bundles/org.openhab.binding.x/src/main/feature/feature.xml
index 86048f2829fcf..ffb954879f7c5 100644
--- a/bundles/org.openhab.binding.twitter/src/main/feature/feature.xml
+++ b/bundles/org.openhab.binding.x/src/main/feature/feature.xml
@@ -1,9 +1,9 @@
-
+
mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features
-
+
openhab-runtime-base
- mvn:org.openhab.addons.bundles/org.openhab.binding.twitter/${project.version}
+ mvn:org.openhab.addons.bundles/org.openhab.binding.x/${project.version}
diff --git a/bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/TwitterBindingConstants.java b/bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/XBindingConstants.java
similarity index 72%
rename from bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/TwitterBindingConstants.java
rename to bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/XBindingConstants.java
index c42baaeb2ba68..d35f5246b6285 100644
--- a/bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/TwitterBindingConstants.java
+++ b/bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/XBindingConstants.java
@@ -10,25 +10,25 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
-package org.openhab.binding.twitter.internal;
+package org.openhab.binding.x.internal;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.thing.ThingTypeUID;
/**
- * The {@link TwitterBindingConstants} class defines common constants, which are
+ * The {@link XBindingConstants} class defines common constants, which are
* used across the whole binding.
*
* @author Scott Hanson - Initial contribution
*/
@NonNullByDefault
-public class TwitterBindingConstants {
+public class XBindingConstants {
- private static final String BINDING_ID = "twitter";
+ private static final String BINDING_ID = "x";
// List of all Thing Type UIDs
public static final ThingTypeUID THING_TYPE_ACCOUNT = new ThingTypeUID(BINDING_ID, "account");
// List of all Channel ids
- public static final String CHANNEL_LASTTWEET = "lasttweet";
+ public static final String CHANNEL_LASTPOST = "lastpost";
}
diff --git a/bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/TwitterHandler.java b/bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/XHandler.java
similarity index 64%
rename from bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/TwitterHandler.java
rename to bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/XHandler.java
index 8b962d7902e9f..b262840e2e6f9 100644
--- a/bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/TwitterHandler.java
+++ b/bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/XHandler.java
@@ -10,9 +10,9 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
-package org.openhab.binding.twitter.internal;
+package org.openhab.binding.x.internal;
-import static org.openhab.binding.twitter.internal.TwitterBindingConstants.CHANNEL_LASTTWEET;
+import static org.openhab.binding.x.internal.XBindingConstants.CHANNEL_LASTPOST;
import java.io.File;
import java.io.FileNotFoundException;
@@ -27,8 +27,8 @@
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
-import org.openhab.binding.twitter.internal.action.TwitterActions;
-import org.openhab.binding.twitter.internal.config.TwitterConfig;
+import org.openhab.binding.x.internal.action.XActions;
+import org.openhab.binding.x.internal.config.XConfig;
import org.openhab.core.io.net.http.HttpUtil;
import org.openhab.core.library.types.RawType;
import org.openhab.core.library.types.StringType;
@@ -41,28 +41,26 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import twitter4j.DirectMessage;
-import twitter4j.ResponseList;
-import twitter4j.Status;
-import twitter4j.StatusUpdate;
import twitter4j.Twitter;
import twitter4j.TwitterException;
-import twitter4j.TwitterFactory;
-import twitter4j.auth.AccessToken;
+import twitter4j.v1.DirectMessage;
+import twitter4j.v1.ResponseList;
+import twitter4j.v1.Status;
+import twitter4j.v1.StatusUpdate;
/**
- * The {@link TwitterHandler} is responsible for handling commands, which are
+ * The {@link XHandler} is responsible for handling commands, which are
* sent to one of the channels.
*
* @author Scott Hanson - Initial contribution
*/
@NonNullByDefault
-public class TwitterHandler extends BaseThingHandler {
+public class XHandler extends BaseThingHandler {
- private final Logger logger = LoggerFactory.getLogger(TwitterHandler.class);
+ private final Logger logger = LoggerFactory.getLogger(XHandler.class);
- private TwitterConfig config = new TwitterConfig();
+ private XConfig config = new XConfig();
private @Nullable ScheduledFuture> refreshTask;
@@ -71,7 +69,7 @@ public class TwitterHandler extends BaseThingHandler {
private static @Nullable Twitter client = null;
boolean isProperlyConfigured = false;
- public TwitterHandler(Thing thing) {
+ public XHandler(Thing thing) {
super(thing);
}
@@ -82,14 +80,14 @@ public void handleCommand(ChannelUID channelUID, Command command) {
// creates list of available Actions
@Override
public Collection> getServices() {
- return List.of(TwitterActions.class);
+ return List.of(XActions.class);
}
@Override
public void initialize() {
- config = getConfigAs(TwitterConfig.class);
+ config = getConfigAs(XConfig.class);
- // create a New Twitter Client
+ // create a New X/Twitter Client
Twitter localClient = createClient();
client = localClient;
refresh();// Get latest status
@@ -107,7 +105,7 @@ public void dispose() {
}
/**
- * Internal method for Getting Twitter Status
+ * Internal method for Getting X Status
*
*/
private void refresh() {
@@ -117,83 +115,83 @@ private void refresh() {
}
Twitter localClient = client;
if (localClient != null) {
- ResponseList statuses = localClient.getUserTimeline();
+ ResponseList statuses = localClient.v1().timelines().getUserTimeline();
if (!statuses.isEmpty()) {
- updateState(CHANNEL_LASTTWEET, StringType.valueOf(statuses.get(0).getText()));
+ updateState(CHANNEL_LASTPOST, StringType.valueOf(statuses.get(0).getText()));
} else {
logger.debug("No Statuses Found");
}
}
} catch (TwitterException e) {
- logger.debug("Error when trying to refresh Twitter Account: {}", e.getMessage());
+ logger.debug("Error when trying to refresh X Account: {}", e.getMessage());
}
}
/**
- * Internal method for sending a tweet, with or without image
+ * Internal method for sending a post, with or without image
*
- * @param tweetTxt
- * text string to be sent as a Tweet
+ * @param postTxt
+ * text string to be sent as a Post
* @param fileToAttach
* the file to attach. May be null if no attached file.
*
- * @return true
, if sending the tweet has been successful and
+ * @return true
, if sending the post has been successful and
* false
in all other cases.
*/
- private boolean sendTweet(final String tweetTxt, final @Nullable File fileToAttach) {
+ private boolean sendPost(final String postTxt, final @Nullable File fileToAttach) {
if (!checkPrerequisites()) {
return false;
}
- // abbreviate the Tweet to meet the 280 character limit ...
- String abbreviatedTweetTxt = abbreviateString(tweetTxt, CHARACTER_LIMIT);
+ // abbreviate the Post to meet the 280 character limit ...
+ String abbreviatedPostTxt = abbreviateString(postTxt, CHARACTER_LIMIT);
try {
Twitter localClient = client;
if (localClient != null) {
- // send the Tweet
- StatusUpdate status = new StatusUpdate(abbreviatedTweetTxt);
+ // send the Post
+ StatusUpdate status = StatusUpdate.of(abbreviatedPostTxt);
if (fileToAttach != null && fileToAttach.isFile()) {
- status.setMedia(fileToAttach);
+ status = status.media(fileToAttach);
}
- Status updatedStatus = localClient.updateStatus(status);
- logger.debug("Successfully sent Tweet '{}'", updatedStatus.getText());
- updateState(CHANNEL_LASTTWEET, StringType.valueOf(updatedStatus.getText()));
+ Status updatedStatus = localClient.v1().tweets().updateStatus(status);
+ logger.debug("Successfully sent Post '{}'", updatedStatus.getText());
+ updateState(CHANNEL_LASTPOST, StringType.valueOf(updatedStatus.getText()));
return true;
}
} catch (TwitterException e) {
- logger.warn("Failed to send Tweet '{}' because of : {}", abbreviatedTweetTxt, e.getLocalizedMessage());
+ logger.warn("Failed to send Post '{}' because of : {}", abbreviatedPostTxt, e.getLocalizedMessage());
}
return false;
}
/**
- * Sends a standard Tweet.
+ * Sends a standard Post.
*
- * @param tweetTxt
- * text string to be sent as a Tweet
+ * @param postTxt
+ * text string to be sent as a Post
*
- * @return true
, if sending the tweet has been successful and
+ * @return true
, if sending the post has been successful and
* false
in all other cases.
*/
- public boolean sendTweet(String tweetTxt) {
+ public boolean sendPost(String postTxt) {
if (!checkPrerequisites()) {
return false;
}
- return sendTweet(tweetTxt, (File) null);
+ return sendPost(postTxt, (File) null);
}
/**
- * Sends a Tweet with an image
+ * Sends a Post with an image
*
- * @param tweetTxt
- * text string to be sent as a Tweet
- * @param tweetPicture
+ * @param postTxt
+ * text string to be sent as a Post
+ * @param postPicture
* the path of the picture that needs to be attached (either an url,
* either a path pointing to a local file)
*
- * @return true
, if sending the tweet has been successful and
+ * @return true
, if sending the post has been successful and
* false
in all other cases.
*/
- public boolean sendTweet(String tweetTxt, String tweetPicture) {
+ public boolean sendPost(String postTxt, String postPicture) {
if (!checkPrerequisites()) {
return false;
}
@@ -201,18 +199,18 @@ public boolean sendTweet(String tweetTxt, String tweetPicture) {
// prepare the image attachment
File fileToAttach = null;
boolean deleteTemporaryFile = false;
- if (tweetPicture.startsWith("http://") || tweetPicture.startsWith("https://")) {
+ if (postPicture.startsWith("http://") || postPicture.startsWith("https://")) {
try {
// we have a remote url and need to download the remote file to a temporary location
Path tDir = Files.createTempDirectory("TempDirectory");
- String path = tDir + File.separator + "openhab-twitter-remote_attached_file" + "."
- + getExtension(tweetPicture);
+ String path = tDir + File.separator + "openhab-x-remote_attached_file" + "."
+ + getExtension(postPicture);
- // URL url = new URL(tweetPicture);
+ // URL url = new URL(postPicture);
fileToAttach = new File(path);
deleteTemporaryFile = true;
- RawType rawPicture = HttpUtil.downloadImage(tweetPicture);
+ RawType rawPicture = HttpUtil.downloadImage(postPicture);
if (rawPicture != null) {
try (FileOutputStream fos = new FileOutputStream(path)) {
fos.write(rawPicture.getBytes(), 0, rawPicture.getBytes().length);
@@ -222,24 +220,24 @@ public boolean sendTweet(String tweetTxt, String tweetPicture) {
logger.debug("Could not write {} to temp dir. {}", path, ex.getMessage());
}
} else {
- logger.debug("Could not download tweet file from {}", tweetPicture);
+ logger.debug("Could not download post file from {}", postPicture);
}
} catch (IOException ex) {
- logger.debug("Could not write {} to temp dir. {}", tweetPicture, ex.getMessage());
+ logger.debug("Could not write {} to temp dir. {}", postPicture, ex.getMessage());
}
} else {
// we have a local file and can just use it directly
- fileToAttach = new File(tweetPicture);
+ fileToAttach = new File(postPicture);
}
if (fileToAttach != null && fileToAttach.isFile()) {
- logger.debug("Image '{}' correctly found, will be included in tweet", tweetPicture);
+ logger.debug("Image '{}' correctly found, will be included in post", postPicture);
} else {
- logger.warn("Image '{}' not found, will only tweet text", tweetPicture);
+ logger.warn("Image '{}' not found, will only post text", postPicture);
}
- // send the Tweet
- boolean result = sendTweet(tweetTxt, fileToAttach);
+ // send the Post
+ boolean result = sendPost(postTxt, fileToAttach);
// delete temp file (if needed)
if (deleteTemporaryFile) {
if (fileToAttach != null) {
@@ -272,10 +270,11 @@ public boolean sendDirectMessage(String recipientId, String messageTxt) {
try {
Twitter localClient = client;
if (localClient != null) {
- // abbreviate the Tweet to meet the allowed character limit ...
+ // abbreviate the Post to meet the allowed character limit ...
String abbreviatedMessageTxt = abbreviateString(messageTxt, CHARACTER_LIMIT);
// send the direct message
- DirectMessage message = localClient.sendDirectMessage(recipientId, abbreviatedMessageTxt);
+ DirectMessage message = localClient.v1().directMessages().sendDirectMessage(recipientId,
+ abbreviatedMessageTxt);
logger.debug("Successfully sent direct message '{}' to @'{}'", message.getText(),
message.getRecipientId());
return true;
@@ -287,18 +286,18 @@ public boolean sendDirectMessage(String recipientId, String messageTxt) {
}
/**
- * check if twitter account was created with prerequisites
- *
- * @return true
, if twitter account was initialized
+ * check if X account was created with prerequisites
+ *
+ * @return true
, if X account was initialized
* false
in all other cases.
*/
private boolean checkPrerequisites() {
if (client == null) {
- logger.debug("Twitter client is not yet configured > execution aborted!");
+ logger.debug("X client is not yet configured > execution aborted!");
return false;
}
if (!isProperlyConfigured) {
- logger.debug("Twitter client is not yet configured > execution aborted!");
+ logger.debug("X client is not yet configured > execution aborted!");
return false;
}
return true;
@@ -310,9 +309,9 @@ private boolean checkPrerequisites() {
* @return a new instance of a Twitter4J Twitter client.
*/
private twitter4j.Twitter createClient() {
- twitter4j.Twitter client = TwitterFactory.getSingleton();
- client.setOAuthConsumer(config.consumerKey, config.consumerSecret);
- client.setOAuthAccessToken(new AccessToken(config.accessToken, config.accessTokenSecret));
+ Twitter client = Twitter.newBuilder().oAuthConsumer(config.consumerKey, config.consumerSecret)
+ .oAuthAccessToken(config.accessToken, config.accessTokenSecret).build();
+
return client;
}
diff --git a/bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/TwitterHandlerFactory.java b/bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/XHandlerFactory.java
similarity index 76%
rename from bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/TwitterHandlerFactory.java
rename to bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/XHandlerFactory.java
index d27f76f7bd945..50a9341d2525a 100644
--- a/bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/TwitterHandlerFactory.java
+++ b/bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/XHandlerFactory.java
@@ -10,9 +10,9 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
-package org.openhab.binding.twitter.internal;
+package org.openhab.binding.x.internal;
-import static org.openhab.binding.twitter.internal.TwitterBindingConstants.THING_TYPE_ACCOUNT;
+import static org.openhab.binding.x.internal.XBindingConstants.THING_TYPE_ACCOUNT;
import java.util.Set;
@@ -26,14 +26,14 @@
import org.osgi.service.component.annotations.Component;
/**
- * The {@link TwitterHandlerFactory} is responsible for creating things and thing
+ * The {@link XHandlerFactory} is responsible for creating things and thing
* handlers.
*
* @author Scott Hanson - Initial contribution
*/
@NonNullByDefault
-@Component(configurationPid = "binding.twitter", service = ThingHandlerFactory.class)
-public class TwitterHandlerFactory extends BaseThingHandlerFactory {
+@Component(configurationPid = "binding.x", service = ThingHandlerFactory.class)
+public class XHandlerFactory extends BaseThingHandlerFactory {
private static final Set SUPPORTED_THING_TYPES_UIDS = Set.of(THING_TYPE_ACCOUNT);
@@ -47,7 +47,7 @@ public boolean supportsThingType(ThingTypeUID thingTypeUID) {
ThingTypeUID thingTypeUID = thing.getThingTypeUID();
if (THING_TYPE_ACCOUNT.equals(thingTypeUID)) {
- return new TwitterHandler(thing);
+ return new XHandler(thing);
}
return null;
diff --git a/bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/action/TwitterActions.java b/bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/action/XActions.java
similarity index 60%
rename from bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/action/TwitterActions.java
rename to bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/action/XActions.java
index 12a56c3574161..8133645ddf4f5 100644
--- a/bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/action/TwitterActions.java
+++ b/bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/action/XActions.java
@@ -10,11 +10,11 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
-package org.openhab.binding.twitter.internal.action;
+package org.openhab.binding.x.internal.action;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
-import org.openhab.binding.twitter.internal.TwitterHandler;
+import org.openhab.binding.x.internal.XHandler;
import org.openhab.core.automation.annotation.ActionInput;
import org.openhab.core.automation.annotation.ActionOutput;
import org.openhab.core.automation.annotation.RuleAction;
@@ -25,53 +25,53 @@
import org.slf4j.LoggerFactory;
/**
- * The {@link TwitterActions} class defines rule actions for sending tweet
+ * The {@link XActions} class defines rule actions for sending post
*
* @author Scott Hanson - Initial contribution
*/
-@ThingActionsScope(name = "twitter")
+@ThingActionsScope(name = "x")
@NonNullByDefault
-public class TwitterActions implements ThingActions {
+public class XActions implements ThingActions {
- private final Logger logger = LoggerFactory.getLogger(TwitterActions.class);
+ private final Logger logger = LoggerFactory.getLogger(XActions.class);
- private @Nullable TwitterHandler handler;
+ private @Nullable XHandler handler;
- @RuleAction(label = "@text/sendTweetActionLabel", description = "@text/sendTweetActionDescription")
- public @ActionOutput(name = "success", type = "java.lang.Boolean") Boolean sendTweet(
+ @RuleAction(label = "@text/sendPostActionLabel", description = "@text/sendPostActionDescription")
+ public @ActionOutput(name = "success", type = "java.lang.Boolean") Boolean sendPost(
@ActionInput(name = "text") @Nullable String text) {
if (text == null) {
- logger.warn("Cannot send Tweet as text is missing.");
+ logger.warn("Cannot send Post as text is missing.");
return false;
}
- final TwitterHandler handler = this.handler;
+ final XHandler handler = this.handler;
if (handler == null) {
- logger.debug("Handler is null, cannot tweet.");
+ logger.debug("Handler is null, cannot post.");
return false;
} else {
- return handler.sendTweet(text);
+ return handler.sendPost(text);
}
}
- @RuleAction(label = "@text/sendAttachmentTweetActionLabel", description = "@text/sendAttachmentTweetActionDescription")
- public @ActionOutput(name = "success", type = "java.lang.Boolean") Boolean sendTweetWithAttachment(
+ @RuleAction(label = "@text/sendAttachmentPostActionLabel", description = "@text/sendAttachmentPostActionDescription")
+ public @ActionOutput(name = "success", type = "java.lang.Boolean") Boolean sendPostWithAttachment(
@ActionInput(name = "text") @Nullable String text, @ActionInput(name = "url") @Nullable String urlString) {
if (text == null) {
- logger.warn("Cannot send Tweet as text is missing.");
+ logger.warn("Cannot send Post as text is missing.");
return false;
}
if (urlString == null) {
- logger.warn("Cannot send Tweet as urlString is missing.");
+ logger.warn("Cannot send Post as urlString is missing.");
return false;
}
- final TwitterHandler handler = this.handler;
+ final XHandler handler = this.handler;
if (handler == null) {
- logger.debug("Handler is null, cannot tweet.");
+ logger.debug("Handler is null, cannot post.");
return false;
} else {
- return handler.sendTweet(text, urlString);
+ return handler.sendPost(text, urlString);
}
}
@@ -88,32 +88,32 @@ public class TwitterActions implements ThingActions {
return false;
}
- final TwitterHandler handler = this.handler;
+ final XHandler handler = this.handler;
if (handler == null) {
- logger.debug("Handler is null, cannot tweet.");
+ logger.debug("Handler is null, cannot post.");
return false;
} else {
return handler.sendDirectMessage(recipient, text);
}
}
- public static boolean sendTweet(ThingActions actions, @Nullable String text) {
- return ((TwitterActions) actions).sendTweet(text);
+ public static boolean sendPost(ThingActions actions, @Nullable String text) {
+ return ((XActions) actions).sendPost(text);
}
- public static boolean sendTweetWithAttachment(ThingActions actions, @Nullable String text,
+ public static boolean sendPostWithAttachment(ThingActions actions, @Nullable String text,
@Nullable String urlString) {
- return ((TwitterActions) actions).sendTweetWithAttachment(text, urlString);
+ return ((XActions) actions).sendPostWithAttachment(text, urlString);
}
public static boolean sendDirectMessage(ThingActions actions, @Nullable String recipient, @Nullable String text) {
- return ((TwitterActions) actions).sendDirectMessage(recipient, text);
+ return ((XActions) actions).sendDirectMessage(recipient, text);
}
@Override
public void setThingHandler(@Nullable ThingHandler handler) {
- if (handler instanceof TwitterHandler twitterHandler) {
- this.handler = twitterHandler;
+ if (handler instanceof XHandler xHandler) {
+ this.handler = xHandler;
}
}
diff --git a/bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/config/TwitterConfig.java b/bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/config/XConfig.java
similarity index 80%
rename from bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/config/TwitterConfig.java
rename to bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/config/XConfig.java
index 529bee31a858a..73e11d9dd7547 100644
--- a/bundles/org.openhab.binding.twitter/src/main/java/org/openhab/binding/twitter/internal/config/TwitterConfig.java
+++ b/bundles/org.openhab.binding.x/src/main/java/org/openhab/binding/x/internal/config/XConfig.java
@@ -10,18 +10,18 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
-package org.openhab.binding.twitter.internal.config;
+package org.openhab.binding.x.internal.config;
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
- * The {@link TwitterConfig} class contains fields mapping thing configuration parameters.
+ * The {@link XConfig} class contains fields mapping thing configuration parameters.
*
* @author Scott Hanson - Initial contribution
*/
@NonNullByDefault
-public class TwitterConfig {
+public class XConfig {
public String consumerKey = "";
public String consumerSecret = "";
public String accessToken = "";
diff --git a/bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/addon/addon.xml b/bundles/org.openhab.binding.x/src/main/resources/OH-INF/addon/addon.xml
similarity index 54%
rename from bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/addon/addon.xml
rename to bundles/org.openhab.binding.x/src/main/resources/OH-INF/addon/addon.xml
index 8c90697c78f48..acb27648087c2 100644
--- a/bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/addon/addon.xml
+++ b/bundles/org.openhab.binding.x/src/main/resources/OH-INF/addon/addon.xml
@@ -1,11 +1,11 @@
-
diff --git a/bundles/org.openhab.binding.x/src/main/resources/OH-INF/i18n/x.properties b/bundles/org.openhab.binding.x/src/main/resources/OH-INF/i18n/x.properties
new file mode 100644
index 0000000000000..66bc6924ed3df
--- /dev/null
+++ b/bundles/org.openhab.binding.x/src/main/resources/OH-INF/i18n/x.properties
@@ -0,0 +1,32 @@
+# add-on
+
+addon.x.name = X Binding
+addon.x.description = Supports adding Thing for getting the Last Post. Send Posts and Pictures with Actions.
+
+# thing types
+
+thing-type.x.account.label = X Account
+thing-type.x.account.description = Account uses for sending posts
+
+# thing types config
+
+thing-type.config.x.account.accessToken.label = Access Token
+thing-type.config.x.account.accessTokenSecret.label = Access Token Secret
+thing-type.config.x.account.consumerKey.label = Consumer API Key
+thing-type.config.x.account.consumerSecret.label = Consumer API Secret
+thing-type.config.x.account.refresh.label = Refresh Time
+thing-type.config.x.account.refresh.description = Refresh Time for This Account in Mins
+
+# channel types
+
+channel-type.x.lastpost.label = Last Post
+channel-type.x.lastpost.description = Users Last Post
+
+# actions
+
+sendAttachmentPostActionLabel = send a Post with attachment
+sendAttachmentPostActionDescription = Sends a Post with an attachment.
+sendDirectMessageActionLabel = send a DirectMessage
+sendDirectMessageActionDescription = Sends a DirectMessage.
+sendPostActionLabel = send a Post
+sendPostActionDescription = Sends a Post.
diff --git a/bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.x/src/main/resources/OH-INF/thing/thing-types.xml
similarity index 78%
rename from bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/thing/thing-types.xml
rename to bundles/org.openhab.binding.x/src/main/resources/OH-INF/thing/thing-types.xml
index 1ec1355e99059..d18df8f5e1c0c 100644
--- a/bundles/org.openhab.binding.twitter/src/main/resources/OH-INF/thing/thing-types.xml
+++ b/bundles/org.openhab.binding.x/src/main/resources/OH-INF/thing/thing-types.xml
@@ -1,15 +1,14 @@
-
-
- Account uses for sending Tweets
+
+ Account uses for sending posts
-
+
@@ -38,10 +37,10 @@
-
diff --git a/bundles/pom.xml b/bundles/pom.xml
index e992b98ac4dfc..24ba021ef0c0a 100644
--- a/bundles/pom.xml
+++ b/bundles/pom.xml
@@ -387,7 +387,6 @@
org.openhab.binding.tplinksmarthome
org.openhab.binding.tr064
org.openhab.binding.tradfri
- org.openhab.binding.twitter
org.openhab.binding.unifi
org.openhab.binding.unifiedremote
org.openhab.binding.upnpcontrol
@@ -419,6 +418,7 @@
org.openhab.binding.wled
org.openhab.binding.wolfsmartset
org.openhab.binding.wundergroundupdatereceiver
+ org.openhab.binding.x
org.openhab.binding.xmltv
org.openhab.binding.xmppclient
org.openhab.binding.yamahamusiccast