163 lines
5.2 KiB
Java
163 lines
5.2 KiB
Java
package ley.jensmemes;
|
|
|
|
import javafx.application.Platform;
|
|
import ley.jensmemes.model.Category;
|
|
import ley.jensmemes.model.Meme;
|
|
import ley.jensmemes.model.response.CategoriesResponse;
|
|
import ley.jensmemes.model.response.MemeResponse;
|
|
import ley.jensmemes.model.response.MemesResponse;
|
|
import ley.jensmemes.util.MemeComparator;
|
|
|
|
import java.io.BufferedWriter;
|
|
import java.io.File;
|
|
import java.io.FileWriter;
|
|
import java.io.IOException;
|
|
import java.net.URISyntaxException;
|
|
import java.util.Scanner;
|
|
|
|
public class Main {
|
|
|
|
static Scanner scanner;
|
|
|
|
public static void main(String[] args) {
|
|
printHelp();
|
|
boolean exit = false;
|
|
scanner = new Scanner(System.in);
|
|
while (!exit) {
|
|
System.out.print(">");
|
|
String[] input = scanner.next().split(" ");
|
|
switch (input[0]) {
|
|
case "q":
|
|
exit = true;
|
|
break;
|
|
case "h":
|
|
printHelp();
|
|
break;
|
|
case "c":
|
|
listCategories();
|
|
break;
|
|
case "m":
|
|
listMemes();
|
|
break;
|
|
case "s":
|
|
searchMeme();
|
|
break;
|
|
case "i":
|
|
memeInfo();
|
|
break;
|
|
case "t":
|
|
setToken();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void printHelp() {
|
|
System.out.println("Commands:");
|
|
System.out.println("[h] prints this help page");
|
|
System.out.println("[q] ends the program");
|
|
System.out.println("[c] lists all categories with id and name");
|
|
System.out.println("[m] lists all memes");
|
|
System.out.println("[s] search a meme");
|
|
System.out.println("[i] give info about a meme");
|
|
System.out.println("[t] sets your JensMemes token");
|
|
}
|
|
|
|
public static void listCategories() {
|
|
try {
|
|
CategoriesResponse res = HTTPClient.categories();
|
|
if (res.status == 200) {
|
|
for (Category cat : res.categories) {
|
|
System.out.println(cat.id + ": " + cat.name);
|
|
}
|
|
} else {
|
|
System.out.print("Error " + res.status + ": " + res.error);
|
|
}
|
|
} catch (IOException | URISyntaxException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public static void listMemes() {
|
|
try {
|
|
MemesResponse res = HTTPClient.memes(null, null, null);
|
|
if (res.status == 200) {
|
|
res.memes.sort(new MemeComparator());
|
|
for (Meme m : res.memes) {
|
|
System.out.println(m.id + ": " + m.link);
|
|
}
|
|
} else {
|
|
System.out.print("Error " + res.status + ": " + res.error);
|
|
}
|
|
} catch (IOException | URISyntaxException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public static void searchMeme() {
|
|
System.out.print("Search: ");
|
|
String search = scanner.next();
|
|
try {
|
|
MemesResponse res = HTTPClient.memes(null, null, search);
|
|
if (res.status == 200) {
|
|
res.memes.sort(new MemeComparator());
|
|
for (Meme m : res.memes) {
|
|
System.out.println(m.id + ": " + m.link);
|
|
}
|
|
} else {
|
|
System.out.print("Error " + res.status + ": " + res.error);
|
|
}
|
|
} catch (IOException | URISyntaxException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public static void memeInfo() {
|
|
boolean gotID = false;
|
|
int id = 0;
|
|
while (!gotID) {
|
|
try {
|
|
System.out.print("Enter Meme ID: ");
|
|
String input = scanner.next();
|
|
id = Integer.parseInt(input);
|
|
gotID = true;
|
|
} catch (NumberFormatException e) {
|
|
System.out.println("Please enter a number");
|
|
}
|
|
}
|
|
try {
|
|
MemeResponse res = HTTPClient.meme(id);
|
|
if (res.status == 200) {
|
|
System.out.println("Category: " + res.meme.category);
|
|
System.out.println("User: " + res.meme.user);
|
|
System.out.println("Link: " + res.meme.link);
|
|
} else {
|
|
System.out.println("Error " + res.status + ": " + res.error);
|
|
}
|
|
} catch (IOException | URISyntaxException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public static void setToken() {
|
|
System.out.print("Enter token: ");
|
|
String token = scanner.next();
|
|
File tokfile = new File(System.getProperty("user.home") + "/.config/jensmemes/token");
|
|
new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
tokfile.getParentFile().mkdirs();
|
|
try {
|
|
BufferedWriter writer = new BufferedWriter(new FileWriter(tokfile));
|
|
writer.write(token);
|
|
writer.close();
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}).start();
|
|
}
|
|
|
|
|
|
}
|