Skip to content
This repository has been archived by the owner on Dec 5, 2020. It is now read-only.

Commit

Permalink
Added Tweet Step
Browse files Browse the repository at this point in the history
  • Loading branch information
amihaiemil committed Aug 17, 2017
1 parent 1f025b2 commit 3f774ea
Show file tree
Hide file tree
Showing 9 changed files with 413 additions and 351 deletions.
585 changes: 295 additions & 290 deletions pom.xml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public Step handle(final Command com) throws IOException {
com.authorLogin(), com.repo().name(), this.logsLoc.address()
)
),
new Step.FinalStep()
new Tweet(new Step.FinalStep())
)
)
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public Step handle(final Command com) throws IOException {
com.authorLogin(), this.logsLoc.address()
)
),
new Step.FinalStep()
new Tweet(new Step.FinalStep())
)
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public Step handle(final Command com) throws IOException {
com.authorLogin(), this.logsLoc.address()
)
),
new Step.FinalStep()
new Tweet(new Step.FinalStep())
)
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public Step handle(final Command com) throws IOException {
com.authorLogin(), this.logsLoc.address()
)
),
new Step.FinalStep()
new Tweet(new Step.FinalStep())
)
)
)
Expand Down
109 changes: 109 additions & 0 deletions src/main/java/com/amihaiemil/charles/github/Tweet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/**
* Copyright (c) 2016-2017, Mihai Emil Andronache
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1)Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2)Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3)Neither the name of charles-rest nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package com.amihaiemil.charles.github;

import java.io.IOException;
import org.slf4j.Logger;
import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;

/**
* The bot can tweet at the end of each action.
* @author Mihai Andronache ([email protected])
* @version $Id$
* @since 1.0.1
*/
public final class Tweet extends IntermediaryStep {

/**
* Ctor.
* @param next Next step to execute.
*/
public Tweet(final Step next) {
super(next);
}

@Override
public void perform(Command command, Logger logger) throws IOException {
if(command.repo().charlesYml().tweet()) {
try {
final Twitter twitter = twitter();
if(twitter != null) {
String message = message(command);
if(!message.isEmpty()) {
twitter.updateStatus(message);
} else {
logger.warn("Could not built message for twitter. Not twitting anything.");
}
} else {
logger.warn("One of the 4 tweeter system properties is missing! Cannot tweet!");
}
} catch (final Exception ex) {//don't rethrow it, tweeting is only a cosmetic thing, not critical..
logger.error("Failed to tweet... ", ex);
}
} else {
logger.info("Tweeting is disabled, won't tweet. You can enable tweeting via .charles.yml file.");
}
this.next().perform(command, logger);
}

/**
* Build the message to tweet.
* @param com Command.
* @return String message
* @throws IOException if the message cannot be built.
*/
private static String message(final Command com) throws IOException {
final String unformatted = com.language().response("tweet." + com.type());
final String issueUrl = com.issue().json().getString("url", "");
if(unformatted == null || unformatted.isEmpty() || issueUrl.isEmpty()) {
return "";
}
return String.format(unformatted, issueUrl);
}

/**
* Get a {@link Twitter} instance.
*/
private static Twitter twitter() {
final String key = System.getProperty("twitter.key", "");
final String secret = System.getProperty("twitter.secret", "");
final String token = System.getProperty("twitter.token", "");
final String tsecret = System.getProperty("twitter.token.secret", "");

if(key.isEmpty() || secret.isEmpty() || token.isEmpty() || tsecret.isEmpty()) {
return null;
} else {
final TwitterFactory factory = new TwitterFactory();
final Twitter twitter = factory.getInstance();
twitter.setOAuthConsumer(key, secret);
twitter.setOAuthAccessToken(new AccessToken(token, tsecret));
return twitter;
}

}
}
9 changes: 0 additions & 9 deletions src/main/resources/commands_ru.properties

This file was deleted.

6 changes: 5 additions & 1 deletion src/main/resources/responses_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,8 @@ deleteindex.finished.comment=@%s the `%s` index was successfully deleted. \n\
See [logs](%s) for details.\n\n\
If you can spare a minute, please consider opening an issue [here](https://github.com/opencharles/charles-rest/issues/new),\
let us know why you stopped using this service, what you didn't like and what we could improve. Thanks!
tweet.indexsite=I just crawled and indexed the following #ghpages website: \n\n %s \n\n #github #elasticsearch #aws
tweet.indexpage=I just indexed a new page of the #ghpages website: \n\n %s \n\n #github #elasticsearch #aws
tweet.indexsitemap=I just indexed the sitemap of the #ghpages website: \n\n %s \n\n #github #elasticsearch #aws
tweet.deleteindex=Unfortunately, I had to delete the index of the #ghpages website: \n\n %s \n\n :( #github #elasticsearch #aws
47 changes: 0 additions & 47 deletions src/main/resources/responses_ru.properties

This file was deleted.

0 comments on commit 3f774ea

Please sign in to comment.