This repository has been archived on 2021-07-21. You can view files and clone it, but cannot push or open issues or pull requests.
JMCLI/src/main/java/ley/jensmemes/Main.java
2020-10-04 20:17:14 +02:00

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();
}
}