refactored everything and moved the project into a Maven project, that can be built easily, and removed a json call that was deprecated

This commit is contained in:
Louis Vallat 2020-03-22 20:03:01 +01:00
parent b0e6f33b87
commit a3f4c5688a
32 changed files with 1975 additions and 3595 deletions

30
.gitignore vendored
View File

@ -1,27 +1,3 @@
# Compiled class file *.iml
*.class .idea/
target/
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
/twitter_techsupportgore_bot/nbproject/private/
/twitter_techsupportgore_bot/build/
/twitter_techsupportgore_bot/dist/
*.sqlite

View File

@ -1,18 +1,20 @@
################################################################################ ################################################################################
# REDDIT SETTINGS # # REDDIT SETTINGS #
################################################################################ ################################################################################
subreddit=techsupportgore # What comes after /r/ (ex: softwaregore)
delay=30 subreddit=
sqlite_db_name=techsupportgore_twitterbot # delay (in seconds) between two scans. (ex: 60)
clear_database=N delay=
reddit_posts_limit=1 sqlite_db_name=
reddit_posts_sorting_order=new clear_database=
reddit_posts_limit=
reddit_posts_sorting_order=
################################################################################ ################################################################################
# MISCELLANEOUS SETTINGS # # MISCELLANEOUS SETTINGS #
################################################################################ ################################################################################
working_directory=data working_directory=
max_text_length=280 max_text_length=
################################################################################ ################################################################################
# TWITTER API SETTINGS # # TWITTER API SETTINGS #

68
pom.xml Normal file
View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>RedditReposterBot</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>xyz.vallat.louis.RedditReposterBot</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- bind to the packaging phase -->
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-core</artifactId>
<version>4.0.7</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.30.1</version>
</dependency>
</dependencies>
</project>

View File

@ -1,73 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="RedditReposterBot" default="default" basedir=".">
<description>Builds, tests, and runs the project RedditReposterBot.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar: JAR building
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="RedditReposterBot-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>

View File

@ -1,4 +0,0 @@
#Tue, 06 Aug 2019 11:12:49 +0200
C\:\\Users\\louis\\Documents\\GitHub\\twitter_techsupportgore_bot\\reddit_reposter_bot=

View File

@ -1,32 +0,0 @@
========================
BUILD OUTPUT DESCRIPTION
========================
When you build an Java application project that has a main class, the IDE
automatically copies all of the JAR
files on the projects classpath to your projects dist/lib folder. The IDE
also adds each of the JAR files to the Class-Path element in the application
JAR files manifest file (MANIFEST.MF).
To run the project from the command line, go to the dist folder and
type the following:
java -jar "RedditReposterBot.jar"
To distribute this project, zip up the dist folder (including the lib folder)
and distribute the ZIP file.
Notes:
* If two JAR files on the project classpath have the same name, only the first
JAR file is copied to the lib folder.
* Only JAR files are copied to the lib folder.
If the classpath contains other types of files or folders, these files (folders)
are not copied.
* If a library on the projects classpath also has a Class-Path element
specified in the manifest,the content of the Class-Path element has to be on
the projects runtime path.
* To set a main class in a standard Java project, right-click the project node
in the Projects window and choose Properties. Then click Run and enter the
class name in the Main Class field. Alternatively, you can manually type the
class name in the manifest Main-Class element.

View File

@ -1,3 +0,0 @@
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +0,0 @@
build.xml.data.CRC32=9dc9f11e
build.xml.script.CRC32=293f3476
build.xml.stylesheet.CRC32=8064a381@1.80.1.48
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=9dc9f11e
nbproject/build-impl.xml.script.CRC32=69003ede
nbproject/build-impl.xml.stylesheet.CRC32=830a3534@1.80.1.48

View File

@ -1,9 +0,0 @@
application.args=helo
#
#Mon Apr 22 18:09:19 CEST 2019
javac.debug=true
javadoc.preview=true
do.depend=false
do.jar=true
compile.on.save=false
user.properties.file=C\:\\Users\\louis\\AppData\\Roaming\\NetBeans\\8.2\\build.properties

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group/>
</open-files>
</project-private>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment/>
<entry key="ACTIVATED_FEATURES">#org.netbeans.modules.profiler.v2.features.MonitorFeature@#org.netbeans.modules.profiler.v2.features.ThreadsFeature@#org.netbeans.modules.profiler.v2.features.SQLFeature@</entry>
<entry key="SINGLE_FEATURE">false</entry>
</properties>

View File

@ -1,85 +0,0 @@
annotation.processing.enabled=true
annotation.processing.enabled.in.editor=false
annotation.processing.processors.list=
annotation.processing.run.all.processors=true
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
application.title=RedditReposterBot
application.vendor=louis
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
build.generated.sources.dir=${build.dir}/generated-sources
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
# Uncomment to specify the preferred debugger connection transport:
#debug.transport=dt_socket
debug.classpath=\
${run.classpath}
debug.test.classpath=\
${run.test.classpath}
# Files in build.classes.dir which should be excluded from distribution jar
dist.archive.excludes=
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/RedditReposterBot.jar
dist.javadoc.dir=${dist.dir}/javadoc
endorsed.classpath=
excludes=
file.reference.gson-2.8.5.jar=C:\\Users\\louis\\Documents\\libraries\\Java\\gson-2.8.5.jar
file.reference.kotlin-runtime.jar=nulllib\\kotlin-runtime.jar
file.reference.sqlite-jdbc-3.23.1.jar=C:\\Users\\louis\\Documents\\libraries\\Java\\sqlite-jdbc-3.23.1.jar
file.reference.twitter4j-core-4.0.7.jar=C:\\Users\\louis\\Documents\\libraries\\Java\\twitter4j-core-4.0.7.jar
includes=**
jar.compress=false
javac.classpath=\
${file.reference.gson-2.8.5.jar}:\
${file.reference.twitter4j-core-4.0.7.jar}:\
${file.reference.sqlite-jdbc-3.23.1.jar}
# Space-separated list of extra javac options
javac.compilerargs=-Xlint:unchecked
javac.deprecation=false
javac.external.vm=true
javac.processorpath=\
${javac.classpath}
javac.source=1.8
javac.target=1.8
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}
javac.test.processorpath=\
${javac.test.classpath}
javadoc.additionalparam=
javadoc.author=false
javadoc.encoding=${source.encoding}
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
kotlinc.classpath=${file.reference.kotlin-runtime.jar}
main.class=RedditReposterBot.RedditReposterBot
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=false
platform.active=default_platform
project.license=gpl30
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project.
# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
# To set system properties for unit tests define test-sys-prop.name=value:
run.jvmargs=
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
source.encoding=UTF-8
src.dir=src
test.src.dir=test

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>RedditReposterBot</name>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
</configuration>
</project>

View File

@ -14,11 +14,11 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot; package xyz.vallat.louis;
import RedditReposterBot.exceptions.NoSuchFile; import xyz.vallat.louis.exceptions.NoSuchFile;
import RedditReposterBot.exceptions.NotSufficientRights; import xyz.vallat.louis.exceptions.NotSufficientRights;
import RedditReposterBot.exceptions.NoSuchProperty; import xyz.vallat.louis.exceptions.NoSuchProperty;
import java.io.File; import java.io.File;
import java.util.Properties; import java.util.Properties;
import java.io.FileInputStream; import java.io.FileInputStream;
@ -34,7 +34,7 @@ public final class ConfigFileReader {
/** /**
* The config file name. * The config file name.
*/ */
private static String CONFIGFILE = "settings.conf"; private static String CONFIGFILE = "data/settings.conf";
/** /**
* The properties object. * The properties object.

View File

@ -14,15 +14,15 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot; package xyz.vallat.louis;
import RedditReposterBot.socialMediaHandler.SocialMediaPoster; import xyz.vallat.louis.socialMediaHandler.SocialMediaPoster;
import RedditReposterBot.redditHandler.RedditExtractor; import xyz.vallat.louis.redditHandler.RedditExtractor;
import RedditReposterBot.exceptions.NoSuchFile; import xyz.vallat.louis.exceptions.NoSuchFile;
import RedditReposterBot.exceptions.NoSuchOrder; import xyz.vallat.louis.exceptions.NoSuchOrder;
import RedditReposterBot.exceptions.NotSufficientRights; import xyz.vallat.louis.exceptions.NotSufficientRights;
import RedditReposterBot.exceptions.NoSuchProperty; import xyz.vallat.louis.exceptions.NoSuchProperty;
import RedditReposterBot.redditHandler.RedditPost; import xyz.vallat.louis.redditHandler.RedditPost;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
@ -128,13 +128,13 @@ public class Hypervisor {
* *
* @return the instance. * @return the instance.
* *
* @throws java.lang.ClassNotFoundException * @throws ClassNotFoundException
* @throws RedditReposterBot.exceptions.NotSufficientRights * @throws NotSufficientRights
* @throws java.sql.SQLException * @throws SQLException
* @throws java.io.IOException * @throws IOException
* @throws RedditReposterBot.exceptions.NoSuchFile * @throws NoSuchFile
* @throws RedditReposterBot.exceptions.NoSuchProperty * @throws NoSuchProperty
* @throws RedditReposterBot.exceptions.NoSuchOrder * @throws NoSuchOrder
*/ */
public static Hypervisor getSingleton() public static Hypervisor getSingleton()
throws ClassNotFoundException, NotSufficientRights, throws ClassNotFoundException, NotSufficientRights,
@ -148,9 +148,9 @@ public class Hypervisor {
/** /**
* Main loop for the program. This is where everything happens. * Main loop for the program. This is where everything happens.
* *
* @throws java.lang.ClassNotFoundException * @throws ClassNotFoundException
* @throws java.sql.SQLException * @throws SQLException
* @throws java.lang.InterruptedException * @throws InterruptedException
*/ */
public void run() public void run()
throws ClassNotFoundException, SQLException, throws ClassNotFoundException, SQLException,
@ -399,7 +399,7 @@ public class Hypervisor {
* Set working directory. * Set working directory.
* *
* @param tempDir the path to the working directory. * @param tempDir the path to the working directory.
* @throws RedditReposterBot.exceptions.NotSufficientRights * @throws NotSufficientRights
*/ */
public void setWorkDir(String tempDir) throws NotSufficientRights { public void setWorkDir(String tempDir) throws NotSufficientRights {
this.workingDirectory = tempDir; this.workingDirectory = tempDir;

View File

@ -14,13 +14,13 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot; package xyz.vallat.louis;
import RedditReposterBot.socialMediaHandler.TwitterBot; import xyz.vallat.louis.socialMediaHandler.TwitterBot;
import RedditReposterBot.exceptions.NoSuchFile; import xyz.vallat.louis.exceptions.NoSuchFile;
import RedditReposterBot.exceptions.NoSuchOrder; import xyz.vallat.louis.exceptions.NoSuchOrder;
import RedditReposterBot.exceptions.NoSuchProperty; import xyz.vallat.louis.exceptions.NoSuchProperty;
import RedditReposterBot.exceptions.NotSufficientRights; import xyz.vallat.louis.exceptions.NotSufficientRights;
import java.io.IOException; import java.io.IOException;
import java.sql.SQLException; import java.sql.SQLException;

View File

@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot.exceptions; package xyz.vallat.louis.exceptions;
/** /**
* Exception throwable when there are no file at a given path. * Exception throwable when there are no file at a given path.

View File

@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot.exceptions; package xyz.vallat.louis.exceptions;
/** /**
* Exception throwable when a sort order isn't a correct one. * Exception throwable when a sort order isn't a correct one.

View File

@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot.exceptions; package xyz.vallat.louis.exceptions;
/** /**
* Exception throwable when there are no property in the config file for a given * Exception throwable when there are no property in the config file for a given

View File

@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot.exceptions; package xyz.vallat.louis.exceptions;
/** /**
* Exception throwable when the rights on a folder or a file aren't sufficient. * Exception throwable when the rights on a folder or a file aren't sufficient.

View File

@ -14,16 +14,14 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot.redditHandler; package xyz.vallat.louis.redditHandler;
import com.google.gson.*;
import xyz.vallat.louis.exceptions.NoSuchFile;
import xyz.vallat.louis.exceptions.NoSuchOrder;
import xyz.vallat.louis.exceptions.NoSuchProperty;
import xyz.vallat.louis.exceptions.NotSufficientRights;
import RedditReposterBot.exceptions.NoSuchFile;
import RedditReposterBot.exceptions.NoSuchOrder;
import RedditReposterBot.exceptions.NoSuchProperty;
import RedditReposterBot.exceptions.NotSufficientRights;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
@ -50,9 +48,9 @@ public final class RedditExtractor {
* @param subreddit Subreddit name. Just after /r/ * @param subreddit Subreddit name. Just after /r/
* *
* @throws IOException * @throws IOException
* @throws RedditReposterBot.exceptions.NoSuchProperty * @throws NoSuchProperty
* @throws RedditReposterBot.exceptions.NoSuchFile * @throws NoSuchFile
* @throws RedditReposterBot.exceptions.NotSufficientRights * @throws NotSufficientRights
* @throws NoSuchOrder * @throws NoSuchOrder
*/ */
public RedditExtractor(String subreddit) public RedditExtractor(String subreddit)
@ -75,11 +73,10 @@ public final class RedditExtractor {
public boolean doesSubredditExists(String subredditName) { public boolean doesSubredditExists(String subredditName) {
System.out.println("[*] Checking if subreddit /r/" + subredditName System.out.println("[*] Checking if subreddit /r/" + subredditName
+ " exists."); + " exists.");
return ((new JsonParser() return ((JsonParser.parseString(getJsonFromURL(""
.parse(getJsonFromURL(""
+ "https://www.reddit.com/api/search_reddit_names.json" + "https://www.reddit.com/api/search_reddit_names.json"
+ "?query=" + subredditName + "&exact=true")) + "?query=" + subredditName + "&exact=true")).getAsJsonObject()
.getAsJsonObject().get("names").getAsJsonArray() .get("names").getAsJsonArray()
.size()) >= 1); .size()) >= 1);
} }
@ -138,17 +135,17 @@ public final class RedditExtractor {
try { try {
HashSet<RedditPost> set = new HashSet<>(); HashSet<RedditPost> set = new HashSet<>();
String jsonResponse = getSubredditJson(); String jsonResponse = getSubredditJson();
JsonObject objet = new JsonParser().parse(jsonResponse) JsonObject objet = JsonParser.parseString(jsonResponse)
.getAsJsonObject(); .getAsJsonObject();
JsonObject data = new JsonParser().parse(objet.get("data") JsonObject data = JsonParser.parseString(objet.get("data")
.toString()).getAsJsonObject(); .toString()).getAsJsonObject();
JsonArray children = new JsonParser().parse(data.get("children") JsonArray children = JsonParser.parseString(data.get("children")
.toString()).getAsJsonArray(); .toString()).getAsJsonArray();
for (int i = 0; i < children.size(); i++) { for (int i = 0; i < children.size(); i++) {
try { try {
JsonObject child = new JsonParser().parse(children.get(i) JsonObject child = JsonParser.parseString(children.get(i)
.toString()).getAsJsonObject(); .toString()).getAsJsonObject();
JsonObject childData = new JsonParser().parse(child.get("data") JsonObject childData = JsonParser.parseString(child.get("data")
.toString()).getAsJsonObject(); .toString()).getAsJsonObject();
if (childData.get("id").toString() != null if (childData.get("id").toString() != null
&& !childData.get("quarantine").getAsBoolean() && !childData.get("quarantine").getAsBoolean()
@ -178,13 +175,13 @@ public final class RedditExtractor {
boolean over18 = childData.get("over_18").getAsBoolean(); boolean over18 = childData.get("over_18").getAsBoolean();
String url; String url;
try { try {
JsonObject preview = new JsonParser().parse(childData JsonObject preview = JsonParser.parseString(childData
.get("preview").toString()).getAsJsonObject(); .get("preview").toString()).getAsJsonObject();
JsonArray previewImages = new JsonParser().parse(preview JsonArray previewImages = JsonParser.parseString(preview
.get("images").toString()).getAsJsonArray(); .get("images").toString()).getAsJsonArray();
JsonObject source = new JsonParser().parse(previewImages JsonObject source = JsonParser.parseString(previewImages
.get(0).toString()).getAsJsonObject(); .get(0).toString()).getAsJsonObject();
JsonObject urlSrc = new JsonParser().parse(source JsonObject urlSrc = JsonParser.parseString(source
.get("source").toString()).getAsJsonObject(); .get("source").toString()).getAsJsonObject();
url = urlSrc.get("url").toString().replace("&amp;", "&") url = urlSrc.get("url").toString().replace("&amp;", "&")
.replace("\"", ""); .replace("\"", "");

View File

@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot.redditHandler; package xyz.vallat.louis.redditHandler;
/** /**
* This is an abstract class to define all RedditPosts. * This is an abstract class to define all RedditPosts.

View File

@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot.redditHandler; package xyz.vallat.louis.redditHandler;
/** /**
* Reddit image post object representation. * Reddit image post object representation.

View File

@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot.redditHandler; package xyz.vallat.louis.redditHandler;
/** /**
* Reddit link post object representation. * Reddit link post object representation.

View File

@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot.redditHandler; package xyz.vallat.louis.redditHandler;
/** /**
* Reddit text post object representation. * Reddit text post object representation.

View File

@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot.redditHandler; package xyz.vallat.louis.redditHandler;
/** /**
* Reddit video post object representation. * Reddit video post object representation.

View File

@ -14,13 +14,13 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot.redditHandler; package xyz.vallat.louis.redditHandler;
import RedditReposterBot.ConfigFileReader; import xyz.vallat.louis.ConfigFileReader;
import RedditReposterBot.exceptions.NoSuchFile; import xyz.vallat.louis.exceptions.NoSuchFile;
import RedditReposterBot.exceptions.NoSuchOrder; import xyz.vallat.louis.exceptions.NoSuchOrder;
import RedditReposterBot.exceptions.NoSuchProperty; import xyz.vallat.louis.exceptions.NoSuchProperty;
import RedditReposterBot.exceptions.NotSufficientRights; import xyz.vallat.louis.exceptions.NotSufficientRights;
import java.util.Arrays; import java.util.Arrays;
/** /**
@ -60,10 +60,10 @@ public final class SubReddit {
* *
* @param name subreddit's name * @param name subreddit's name
* *
* @throws RedditReposterBot.exceptions.NoSuchProperty * @throws NoSuchProperty
* @throws RedditReposterBot.exceptions.NoSuchFile * @throws NoSuchFile
* @throws RedditReposterBot.exceptions.NotSufficientRights * @throws NotSufficientRights
* @throws RedditReposterBot.exceptions.NoSuchOrder * @throws NoSuchOrder
*/ */
public SubReddit(String name) throws NoSuchProperty, NoSuchFile, public SubReddit(String name) throws NoSuchProperty, NoSuchFile,
NotSufficientRights, NoSuchOrder { NotSufficientRights, NoSuchOrder {

View File

@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot.socialMediaHandler; package xyz.vallat.louis.socialMediaHandler;
/** /**
* Interface to specify what methods should social media posters implement. * Interface to specify what methods should social media posters implement.

View File

@ -14,12 +14,12 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package RedditReposterBot.socialMediaHandler; package xyz.vallat.louis.socialMediaHandler;
import RedditReposterBot.exceptions.NotSufficientRights; import xyz.vallat.louis.exceptions.NotSufficientRights;
import RedditReposterBot.exceptions.NoSuchProperty; import xyz.vallat.louis.exceptions.NoSuchProperty;
import RedditReposterBot.ConfigFileReader; import xyz.vallat.louis.ConfigFileReader;
import RedditReposterBot.exceptions.NoSuchFile; import xyz.vallat.louis.exceptions.NoSuchFile;
import java.io.File; import java.io.File;
import twitter4j.StatusUpdate; import twitter4j.StatusUpdate;
import twitter4j.Twitter; import twitter4j.Twitter;