11package cn .xiaopangxie732 .mojang_api ;
22
3- import cn .xiaopangxie732 .mojang_api .util .Net ;
43import com .google .gson .JsonArray ;
54import com .google .gson .JsonObject ;
65import com .google .gson .JsonParser ;
76
7+ import cn .xiaopangxie732 .mojang_api .util .Net ;
8+
9+ import java .io .FileWriter ;
10+ import java .io .IOException ;
811import java .util .Properties ;
912
1013/**
11- * Used to check the Mojang servers status .
14+ * To check the status of servers .
1215 * @author XiaoPangxie732
16+ * @since 0.0.1
1317 */
1418public class Status {
1519
@@ -19,18 +23,42 @@ public class Status {
1923 * @author XiaoPangxie732
2024 */
2125 public enum StatusServer {
26+ /**
27+ * minecraft.net
28+ */
2229 MINECRAFT_NET ,
30+ /**
31+ * session.minecraft.net
32+ */
2333 SESSION_MINECRAFT_NET ,
34+ /**
35+ * account.mojang.com
36+ */
2437 ACCOUNT_MOJANG_COM ,
38+ /**
39+ * authserver.mojang.com
40+ */
2541 AUTHSERVER_MOJANG_COM ,
42+ /**
43+ * sessionserver.mojang.com
44+ */
2645 SESSIONSERVER_MOJANG_COM ,
46+ /**
47+ * api.mojang.com
48+ */
2749 API_MOJANG_COM ,
50+ /**
51+ * textures.minecraft.net
52+ */
2853 TEXTURES_MINECRAFT_NET ,
54+ /**
55+ * mojang.com
56+ */
2957 MOJANG_COM ;
3058
3159 /**
32- * Let enum to string.<br>
33- * @return The lower case of enum name.
60+ * {@code toString} method.
61+ * @return The lower case and replace "_" to the " " enum name.
3462 * @since 0.0.1
3563 * @author XiaoPangxie732
3664 */
@@ -46,13 +74,21 @@ public String toString() {
4674 * @author XiaoPangxie732
4775 */
4876 public enum StatusType {
77+ /**
78+ * green
79+ */
4980 GREEN ,
81+ /**
82+ * yellow
83+ */
5084 YELLOW ,
51- RED ,
52- ERROR_TO_CONNECT ;
85+ /**
86+ * red(or could not connect)
87+ */
88+ RED ;
5389
5490 /**
55- * Let enum to string .
91+ * {@code toString} method .
5692 * @return The lower case of enum name.
5793 * @since 0.0.1
5894 * @author XiaoPangxie732
@@ -67,7 +103,8 @@ public String toString() {
67103 private String response ;
68104
69105 /**
70- * Construct a <code>Status</code> class.
106+ * Construct a <code>Status</code> class.<br>
107+ * To get the servers status.
71108 * @since 0.0.1
72109 */
73110 public Status () {
@@ -77,8 +114,8 @@ public Status() {
77114 /**
78115 * To check server status.
79116 * @throws NullPointerException When the server is <code>null</code>.
80- * @param server The server needs to check the status.
81- * @return The status of this server.
117+ * @param server The server to check status.
118+ * @return The status of this server.<br>When couldn't connect, it will return {@link StatusType#RED}.
82119 * @since 0.0.1
83120 * @author XiaoPangxie732
84121 */
@@ -88,19 +125,61 @@ public StatusType getStatus(StatusServer server) throws NullPointerException {
88125 Properties result = new Properties ();
89126 for (int var = 0 ;var < array .size (); ++var ) {
90127 JsonObject object = array .get (var ).getAsJsonObject ();
91- Object [] key = object .keySet ().toArray ();
92- result .setProperty (( String ) key [ 0 ] , object .get (key [ 0 ]. toString () ).getAsString ());
128+ String key = object .keySet ().iterator (). next ();
129+ result .setProperty (key , object .get (key ).getAsString ());
93130 }
94- String value = result .getProperty (server . toString ( ));
131+ String value = result .getProperty (String . valueOf ( server ));
95132 switch (value ) {
96133 case "green" :
97134 return StatusType .GREEN ;
98135 case "yellow" :
99136 return StatusType .YELLOW ;
100137 case "red" :
101138 return StatusType .RED ;
139+ default :
140+ return StatusType .RED ;
102141 }
103- return StatusType .ERROR_TO_CONNECT ;
142+ }
143+
144+ /**
145+ * To check server status and list them.<br>
146+ * @param store Whether to store the output.
147+ * @return The all server status.<br>Return as <code>Properties</code> format.
148+ * @since 0.0.4
149+ * @author XiaoPangxie732
150+ */
151+ public String getAllStatus (boolean store ) {
152+ JsonArray array = new JsonParser ().parse (response ).getAsJsonArray ();
153+ Properties data = new Properties ();
154+ for (int var = 0 ;var < array .size (); ++var ) {
155+ JsonObject object = array .get (var ).getAsJsonObject ();
156+ String key = object .keySet ().iterator ().next ();
157+ data .setProperty (key , object .get (key ).getAsString ());
158+ }
159+ String returned = String .valueOf (data ).replace ("{" , "" ).replace ("}" , "" ).replace (", " , "\n " );
160+ if (store ) {
161+ try {
162+ data .store (new FileWriter (System .getProperty ("user.home" ) + "\\ Desktop\\ ServerStatuses.properties" ),
163+ "The server statuses output.\n MojangAPI-in-Java made by XiaoPangxie732.\n https://github.com/XiaoPangxie732/MojangAPI-in-Java" );
164+ } catch (IOException e ) {
165+ System .err .println ("File store failed!" );
166+ System .err .print ("Stacktrace: " );
167+ e .printStackTrace ();
168+ return returned ;
169+ }
170+ System .out .println ("File store complete.\n File stored at desktop.(ServerStatuses.properties)" );
171+ }
172+ return returned ;
173+ }
174+
175+ /**
176+ * To check server status and list them.<br>
177+ * @return The all server status.<br>Return as <code>Properties</code> format.
178+ * @since 0.0.4
179+ * @author XiaoPangxie732
180+ */
181+ public String getAllStatus () {
182+ return getAllStatus (false );
104183 }
105184
106185 /**
0 commit comments