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