/*
* Copyright (c) 2015. , Beaufort 8
* released under MIT License
* http://opensource.org/licenses/MIT
*/
package de.elggconnect.elggconnectclient.webservice;
import de.elggconnect.elggconnectclient.util.UserAuthentication;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
/**
* WebServiceMethod for the AuthGetToken HTTP API Method
*
* @author Alexander Stifel
* @author Beaufort 8
*/
public class AuthGetToken implements IWebServiceMethod {
private static final String APIMETHOD = "method=auth.gettoken";
private static final String USER_AGENT = "ELGGCONNECT";
private String authToken;
private UserAuthentication userAuthentication = UserAuthentication.getInstance();
private Long status = Long.valueOf(-1);
private String username;
private String password;
public AuthGetToken(String username, String password) {
this.password = password;
this.username = username;
}
public String getAuthToken() {
return authToken;
}
@Override
/**
* Run the AuthGetTokeb Web API Method
*/
public Long execute() {
//Build url Parameter String
String urlParameters = APIMETHOD + "&username=" + this.username + "&password=" + this.password;
//Try to execute the API Method
try {
URL url = new URL(userAuthentication.getBaseURL());
URLConnection conn = url.openConnection();
//add user agent to the request header
conn.setRequestProperty("User-Agent", USER_AGENT);
conn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.write(urlParameters);
writer.flush();
String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
//Read the response JSON
StringBuilder text = new StringBuilder();
while ((line = reader.readLine()) != null) {
text.append(line).append("\n");
}
JSONObject json = (JSONObject) new JSONParser().parse(text.toString());
this.status = (Long) json.get("status");
if (this.status != -1L) {
this.authToken = (String) json.get("result");
//Save the AuthToken
userAuthentication.setAuthToken((String) json.get("result"));
}
writer.close();
reader.close();
} catch (Exception e) {
System.err.println(e.getMessage());
}
return this.status;
}
}