/** * “Copyright 2012 Megam Systems” * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. **/ package org.megam.deccanplato.provider.box; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.message.BasicNameValuePair; import org.megam.deccanplato.http.TransportMachinery; import org.megam.deccanplato.http.TransportResponse; import org.megam.deccanplato.http.TransportTools; import org.megam.deccanplato.provider.core.AdapterAccess; import org.megam.deccanplato.provider.core.AdapterAccessException; import org.megam.deccanplato.provider.core.DataMap; import org.megam.deccanplato.provider.core.DefaultDataMap; import static org.megam.deccanplato.provider.box.Constants.*; import static org.megam.deccanplato.provider.Constants.*; import com.google.gson.Gson; import com.google.gson.GsonBuilder; /** * @author alrin * */ public class BoxAdapterAccess implements AdapterAccess { private boolean success = false; private static final String BOX_OAUTH2_URL = "https://api.box.com/2.0/tokens"; private String Ticket; public BoxAdapterAccess() { super(); } @Override public boolean isSuccessful() { return success; } @Override public <T extends Object> DataMap<T> authenticate(DataMap<T> access) throws AdapterAccessException { Map<String, T> accessMap = access.map(); System.out.print("OAUTH MAP"+accessMap.toString()); Map<String, String> headerMap =new HashMap<String, String>(); headerMap.put("Authorization", "BoxAuth api_key="+(String) accessMap.get(API_KEY)); Map<String, String> boxList=new HashMap<String,String>(); boxList.put("email", (String) accessMap.get(EMAIL)); TransportTools tools = new TransportTools(BOX_OAUTH2_URL, null, headerMap); Gson obj=new GsonBuilder().setPrettyPrinting().create(); System.out.println(obj.toJson(boxList)); tools.setContentType(ContentType.APPLICATION_JSON, obj.toJson(boxList)); String responseBody = null; TransportResponse response = null; try { response = TransportMachinery.post(tools); responseBody = response.entityToString(); success=true; System.out.println("OUTPUT:"+responseBody); } catch (ClientProtocolException ce) { throw new AdapterAccessException( "An error occurred during post operation.", ce); } catch (IOException ioe) { throw new AdapterAccessException( "An error occurred during post operation.", ioe); } DataMap<T> accessMap1=new DefaultDataMap<>(); accessMap1.map().put(OUTPUT, (T) accessMap.get(API_KEY)); return accessMap1; /* * Old Box code written by Thomas Alrin */ /*BOX_OAUTH2_URL = BOX_OAUTH2_URL + accessMap.get("api_key"); TransportTools tools = new TransportTools(BOX_OAUTH2_URL, null); String responseBody = null; TransportResponse response = null; try { try { response = TransportMachinery.get(tools); } catch (URISyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } responseBody = response.entityToString(); } catch (ClientProtocolException ce) { throw new AdapterAccessException( "An error occurred during post operation.", ce); } catch (IOException ioe) { throw new AdapterAccessException( "An error occurred during post operation.", ioe); } DocumentBuilder db = null; try { db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); } catch (ParserConfigurationException e) { e.printStackTrace(); } InputSource is = new InputSource(); is.setCharacterStream(new StringReader(responseBody)); Document doc = null; try { doc = (Document) db.parse(is); } catch (SAXException | IOException e) { e.printStackTrace(); } NodeList nodes = ((Node) doc).getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { Node element = nodes.item(i); NodeList child = element.getChildNodes(); for (int j = 0; j < child.getLength(); j++) { Node ele = child.item(j); if (ele.getNodeName().equals("ticket")) { Ticket = ele.getTextContent(); } } } BoxAuthToken((String) accessMap.get("api_key"),Ticket); return null; } public void BoxAuthToken(String api, String tick) throws AdapterAccessException { String url = "https://www.box.com/api/1.0/rest?action=get_auth_token&api_key="+api+"&ticket="+tick; TransportTools tools = new TransportTools(url, null); String responseBody = null; TransportResponse response = null; try { try { response = TransportMachinery.get(tools); } catch (URISyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } responseBody = response.entityToString(); } catch (ClientProtocolException ce) { throw new AdapterAccessException( "An error occurred during post operation.", ce); } catch (IOException ioe) { throw new AdapterAccessException( "An error occurred during post operation.", ioe); }*/ } }