diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseSheep.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseSheep.java index c6d4cdb7d..21d6fffaa 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseSheep.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseSheep.java @@ -14,7 +14,7 @@ public class DisguiseSheep extends DisguiseAnimal public boolean isSheared() { - return (DataWatcher.getByte(16) & 0x10) != 0; + return (DataWatcher.getByte(16) & 16) != 0; } public void setSheared(boolean sheared) @@ -22,14 +22,14 @@ public class DisguiseSheep extends DisguiseAnimal byte b0 = DataWatcher.getByte(16); if (sheared) - DataWatcher.watch(16, Byte.valueOf((byte)(b0 | 0x10))); + DataWatcher.watch(16, Byte.valueOf((byte)(b0 | 16))); else - DataWatcher.watch(16, Byte.valueOf((byte)(b0 & 0xFFFFFFEF))); + DataWatcher.watch(16, Byte.valueOf((byte)(b0 & -17))); } public int getColor() { - return DataWatcher.getByte(16) & 0xF; + return DataWatcher.getByte(16) & 15; } @SuppressWarnings("deprecation") @@ -37,6 +37,6 @@ public class DisguiseSheep extends DisguiseAnimal { byte b0 = DataWatcher.getByte(16); - DataWatcher.watch(16, Byte.valueOf((byte)(b0 & 0xF0 | color.getWoolData() & 0xF))); + DataWatcher.watch(16, Byte.valueOf((byte)(b0 & 240 | color.getWoolData() & 15))); } } diff --git a/Plugins/Mineplex.StaffServer/.classpath b/Plugins/Mineplex.StaffServer/.classpath index 0169f5fdb..69044860b 100644 --- a/Plugins/Mineplex.StaffServer/.classpath +++ b/Plugins/Mineplex.StaffServer/.classpath @@ -8,5 +8,9 @@ + + + + diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/HelpDeskManager.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/HelpDeskManager.java new file mode 100644 index 000000000..860193f09 --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/HelpDeskManager.java @@ -0,0 +1,16 @@ +package mineplex.staffServer.helpdesk; + +import org.bukkit.plugin.java.JavaPlugin; + +import mineplex.core.MiniPlugin; +import mineplex.staffServer.helpdesk.repository.ApiGetCall; + +public class HelpDeskManager extends MiniPlugin +{ + public HelpDeskManager(JavaPlugin plugin) + { + super("Help Desk", plugin); + + new ApiGetCall("https://mineplex.jitbit.com/helpdesk/api", "Tickets"); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/ListTicketToken.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/ListTicketToken.java new file mode 100644 index 000000000..f5a18d85d --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/ListTicketToken.java @@ -0,0 +1,29 @@ +package mineplex.staffServer.helpdesk; + +public class ListTicketToken +{ + public int IssueID; + public int Priority; + public int StatusID; + public String IssueDate; + public String Subject; + public String Status; + public boolean UpdatedByUser; + public boolean UpdatedByPerformer; + public int CategoryID; + public String UserName; + public String Technician; + public String FirstName; + public String LastName; + public String DueDate; + public String TechFirstName; + public String TechLastName; + public String LastUpdated; + public boolean UpdatedForTechView; + public int UserID; + public int CompanyID; + public String CompanyName; + public int SectionID; + public int AssignedToUserID; + public String Category; +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/TicketToken.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/TicketToken.java new file mode 100644 index 000000000..fdbe36826 --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/TicketToken.java @@ -0,0 +1,22 @@ +package mineplex.staffServer.helpdesk; + +public class TicketToken +{ + public int TicketID; + public int UserID; + public int AssignedToUserID; + public String IssueDate; + public String Subject; + public String Body; + public int Priority; + public int StatusID; + public int CategoryID; + public String DueDate; + public String ResolvedDate; + public String StartDate; + public int TimeSpentInSeconds; + public boolean IsCurrentUserTechInThisCategory; + public boolean IsCurrentCategoryForTechsOnly; + public boolean SubmittedByCurrentUser; + public boolean IsInKb; +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/ApiDeleteCall.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/ApiDeleteCall.java new file mode 100644 index 000000000..3782e6222 --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/ApiDeleteCall.java @@ -0,0 +1,19 @@ +package mineplex.staffServer.helpdesk.repository; + +import org.apache.http.client.methods.HttpDelete; + +public class ApiDeleteCall extends HelpDeskApiCallBase +{ + public ApiDeleteCall(String apiUrl, int domainId, String category) + { + super(apiUrl, domainId, category); + } + + public void Execute() + { + HttpDelete request = new HttpDelete(ApiUrl + DomainId + Category); + System.out.println(request.getURI().toString()); + + System.out.println(execute(request)); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/ApiGetCall.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/ApiGetCall.java new file mode 100644 index 000000000..7758f67ef --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/ApiGetCall.java @@ -0,0 +1,128 @@ +package mineplex.staffServer.helpdesk.repository; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.conn.scheme.PlainSocketFactory; +import org.apache.http.conn.scheme.Scheme; +import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.conn.PoolingClientConnectionManager; + +public class ApiGetCall +{ + protected String ApiUrl = "https://mineplex.jitbit.com/helpdesk/api"; + protected String SecretKey = "?sharedSecret={WzG49S3L6spqt4}"; + private String _action; + + public ApiGetCall(String apiUrl, String action) + { + ApiUrl = apiUrl; + _action = action; + } + + protected String execute() + { + HttpGet request = new HttpGet(ApiUrl + SecretKey + "&" + _action); + + SchemeRegistry schemeRegistry = new SchemeRegistry(); + schemeRegistry.register(new Scheme("https", 80, PlainSocketFactory.getSocketFactory())); + + PoolingClientConnectionManager connectionManager = new PoolingClientConnectionManager(schemeRegistry); + connectionManager.setMaxTotal(200); + connectionManager.setDefaultMaxPerRoute(20); + + HttpClient httpClient = new DefaultHttpClient(connectionManager); + InputStream in = null; + String response = ""; + + try + { + HttpResponse httpResponse = httpClient.execute(request); + + if (httpResponse != null) + { + in = httpResponse.getEntity().getContent(); + response = convertStreamToString(in); + } + } + catch (Exception ex) + { + System.out.println("HelpDeskApiCall Error:\n" + ex.getMessage()); + + for (StackTraceElement trace : ex.getStackTrace()) + { + System.out.println(trace); + } + } + finally + { + httpClient.getConnectionManager().shutdown(); + + if (in != null) + { + try + { + in.close(); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + } + + return response; + } + + protected String convertStreamToString(InputStream is) + { + BufferedReader reader = new BufferedReader(new InputStreamReader(is)); + StringBuilder sb = new StringBuilder(); + + String line = null; + try + { + while ((line = reader.readLine()) != null) + { + sb.append(line + "\n"); + } + } + catch (IOException e) + { + e.printStackTrace(); + } + finally + { + try + { + is.close(); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + return sb.toString(); + } + + public void Execute() + { + } + + /* + public T Execute(Type returnType) + { + HttpGet request = new HttpGet(ApiUrl + DomainId + Category + _action); + + String response = execute(request); + System.out.println(response); + return new Gson().fromJson(response, returnType); + } + */ +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/ApiPostCall.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/ApiPostCall.java new file mode 100644 index 000000000..34443db38 --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/ApiPostCall.java @@ -0,0 +1,79 @@ +package mineplex.staffServer.helpdesk.repository; + +import java.lang.reflect.Type; + +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.message.BasicHeader; +import org.apache.http.protocol.HTTP; + +import com.google.gson.Gson; + +public class ApiPostCall extends HelpDeskApiCallBase +{ + private String _action; + + public ApiPostCall(String apiUrl, int domainId, String category, String action) + { + super(apiUrl, domainId, category); + + _action = action; + } + + public void Execute(Object argument) + { + Gson gson = new Gson(); + HttpPost request = new HttpPost(ApiUrl + DomainId + Category + _action); + + System.out.println(request.getURI().toString()); + + try + { + StringEntity params = new StringEntity(gson.toJson(argument)); + params.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); + request.setEntity(params); + } + catch (Exception exception) + { + System.out.println("Error executing ApiPostCall(Object): \n" + exception.getMessage()); + + for (StackTraceElement trace : exception.getStackTrace()) + { + System.out.println(trace); + } + } + + System.out.println(execute(request)); + } + + public T Execute(Class returnClass) + { + return Execute(returnClass, (Object)null); + } + + public T Execute(Type returnType, Object argument) + { + Gson gson = new Gson(); + HttpPost request = new HttpPost(ApiUrl + DomainId + Category + _action); + System.out.println(request.getURI().toString()); + try + { + StringEntity params = new StringEntity(gson.toJson(argument)); + params.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); + request.setEntity(params); + } + catch (Exception exception) + { + System.out.println("Error executing ApiPostCall(Type, Object): \n" + exception.getMessage()); + + for (StackTraceElement trace : exception.getStackTrace()) + { + System.out.println(trace); + } + } + + String response = execute(request); + System.out.println(response); + return new Gson().fromJson(response, returnType); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/ApiPutCall.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/ApiPutCall.java new file mode 100644 index 000000000..e56c45bec --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/ApiPutCall.java @@ -0,0 +1,80 @@ +package mineplex.staffServer.helpdesk.repository; + +import java.lang.reflect.Type; + +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.entity.StringEntity; +import org.apache.http.message.BasicHeader; +import org.apache.http.protocol.HTTP; + +import com.google.gson.Gson; + +public class ApiPutCall extends HelpDeskApiCallBase +{ + private String _action; + + public ApiPutCall(String apiUrl, int domainId, String category, String action) + { + super(apiUrl, domainId, category); + + _action = action; + } + + public void Execute(Object argument) + { + Gson gson = new Gson(); + HttpPut request = new HttpPut(ApiUrl + DomainId + Category + _action); + + System.out.println(request.getURI().toString()); + + try + { + StringEntity params = new StringEntity(gson.toJson(argument)); + params.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); + request.setEntity(params); + } + catch (Exception exception) + { + System.out.println("Error executing ApiPutCall(Object): \n" + exception.getMessage()); + + for (StackTraceElement trace : exception.getStackTrace()) + { + System.out.println(trace); + } + } + + System.out.println(execute(request)); + } + + public T Execute(Class returnClass) + { + return Execute(returnClass, (Object)null); + } + + public T Execute(Type returnType, Object argument) + { + Gson gson = new Gson(); + HttpPut request = new HttpPut(ApiUrl + DomainId + Category + _action); + System.out.println(request.getURI().toString()); + try + { + StringEntity params = new StringEntity(gson.toJson(argument)); + params.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); + request.setEntity(params); + } + catch (Exception exception) + { + System.out.println("Error executing ApiPutCall(Type, Object): \n" + exception.getMessage()); + + for (StackTraceElement trace : exception.getStackTrace()) + { + System.out.println(trace); + } + } + + String response = execute(request); + System.out.println(response); + return new Gson().fromJson(response, returnType); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/HelpDeskApiCallBase.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/HelpDeskApiCallBase.java new file mode 100644 index 000000000..37d6b02c8 --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/HelpDeskApiCallBase.java @@ -0,0 +1,128 @@ +package mineplex.staffServer.helpdesk.repository; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Locale; +import java.util.TimeZone; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; + +import org.apache.commons.codec.binary.Hex; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpRequestBase; +import org.apache.http.conn.scheme.PlainSocketFactory; +import org.apache.http.conn.scheme.Scheme; +import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.conn.PoolingClientConnectionManager; + +public abstract class HelpDeskApiCallBase +{ + protected String ApiUrl = "https://mineplex.jitbit.com/helpdesk/api"; + protected int DomainId = 962728; + protected String Category = ""; + + public HelpDeskApiCallBase(String apiUrl, int domainId, String category) + { + ApiUrl = apiUrl; + DomainId = domainId; + Category = category; + } + + protected String execute(HttpRequestBase request) + { + SchemeRegistry schemeRegistry = new SchemeRegistry(); + schemeRegistry.register(new Scheme("https", 80, PlainSocketFactory.getSocketFactory())); + + PoolingClientConnectionManager connectionManager = new PoolingClientConnectionManager(schemeRegistry); + connectionManager.setMaxTotal(200); + connectionManager.setDefaultMaxPerRoute(20); + + HttpClient httpClient = new DefaultHttpClient(connectionManager); + InputStream in = null; + String response = ""; + + try + { + HttpResponse httpResponse = httpClient.execute(request); + + if (httpResponse != null) + { + in = httpResponse.getEntity().getContent(); + response = convertStreamToString(in); + } + } + catch (Exception ex) + { + System.out.println("HelpDeskApiCall Error:\n" + ex.getMessage()); + + for (StackTraceElement trace : ex.getStackTrace()) + { + System.out.println(trace); + } + } + finally + { + httpClient.getConnectionManager().shutdown(); + + if (in != null) + { + try + { + in.close(); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + } + + return response; + } + + protected String getServerTime() + { + Calendar calendar = Calendar.getInstance(); + SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); + dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); + return dateFormat.format(calendar.getTime()); + } + + protected String convertStreamToString(InputStream is) + { + BufferedReader reader = new BufferedReader(new InputStreamReader(is)); + StringBuilder sb = new StringBuilder(); + + String line = null; + try + { + while ((line = reader.readLine()) != null) + { + sb.append(line + "\n"); + } + } + catch (IOException e) + { + e.printStackTrace(); + } + finally + { + try + { + is.close(); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + return sb.toString(); + } +} diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/HelpDeskRepository.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/HelpDeskRepository.java new file mode 100644 index 000000000..1b7453523 --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/helpdesk/repository/HelpDeskRepository.java @@ -0,0 +1,6 @@ +package mineplex.staffServer.helpdesk.repository; + +public class HelpDeskRepository +{ + +}