/** * Returns an input stream pointing to a HTTP API command. * * @param command Name of the command to execute * @param parameters Parameters, separated by ";". * @param manager Reference back to business layer * @return */ public InputStream getThumbInputStreamForMicroHTTPd(String thumb, INotifiableManager manager) throws FileNotFoundException { URLConnection uc = null; try { if (mUrlSuffix == null) { throw new NoSettingsException(); } final URL url; /*if (ClientFactory.XBMC_REV > 0 && ClientFactory.XBMC_REV >= ClientFactory.THUMB_TO_VFS_REV) { url = new URL(mUrlSuffix + XBMC_MICROHTTPD_VFS_BOOTSTRAP + URLEncoder.encode(thumb)); } else {*/ url = new URL(mUrlSuffix + XBMC_MICROHTTPD_THUMB_BOOTSTRAP + thumb + ".jpg"); Log.i(TAG, "Preparing input stream from " + url + " for microhttpd.."); uc = getUrlConnection(url); return uc.getInputStream(); } catch (FileNotFoundException e) { throw e; } catch (MalformedURLException e) { manager.onError(e); } catch (IOException e) { manager.onError(e); } catch (NoSettingsException e) { manager.onError(e); } return null; }
/** * Executes a query. * * @param command Name of the command to execute * @param parameters Parameters * @param manager Reference back to business layer * @return Parsed JSON object, empty object on error. */ public JsonNode query(String command, JsonNode parameters, INotifiableManager manager) { URLConnection uc = null; try { final ObjectMapper mapper = Client.MAPPER; if (mUrlSuffix == null) { throw new NoSettingsException(); } final URL url = new URL(mUrlSuffix + XBMC_JSONRPC_BOOTSTRAP); uc = url.openConnection(); uc.setConnectTimeout(SOCKET_CONNECTION_TIMEOUT); uc.setReadTimeout(mSocketReadTimeout); if (authEncoded != null) { uc.setRequestProperty("Authorization", "Basic " + authEncoded); } uc.setRequestProperty("Content-Type", "application/json"); uc.setDoOutput(true); final ObjectNode data = Client.obj().p("jsonrpc", "2.0").p("method", command).p("id", "1"); if (parameters != null) { data.put("params", parameters); } final JsonFactory jsonFactory = new JsonFactory(); final JsonGenerator jg = jsonFactory.createJsonGenerator(uc.getOutputStream(), JsonEncoding.UTF8); jg.setCodec(mapper); // POST data jg.writeTree(data); jg.flush(); final JsonParser jp = jsonFactory.createJsonParser(uc.getInputStream()); jp.setCodec(mapper); final JsonNode ret = jp.readValueAs(JsonNode.class); return ret; } catch (MalformedURLException e) { manager.onError(e); } catch (IOException e) { int responseCode = -1; try { responseCode = ((HttpURLConnection) uc).getResponseCode(); } catch (IOException e1) { } // do nothing, getResponse code failed so treat as default i/o exception. if (uc != null && responseCode == HttpURLConnection.HTTP_UNAUTHORIZED) { manager.onError(new HttpException(Integer.toString(HttpURLConnection.HTTP_UNAUTHORIZED))); } else { manager.onError(e); } } catch (NoSettingsException e) { manager.onError(e); } return new ObjectNode(null); }
/** * Executes a query. * * @param command Name of the command to execute * @param parameters Parameters, separated by ";". * @param manager Reference back to business layer * @return HTTP response string. */ public String query(String command, String parameters, INotifiableManager manager) { URLConnection uc = null; try { if (mUrlSuffix == null) { throw new NoSettingsException(); } URL url = new URL(getUrl(command, parameters)); uc = getUrlConnection(url); final String debugUrl = URLDecoder.decode(url.toString()); Log.i(TAG, debugUrl); final BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()), 8192); final StringBuilder response = new StringBuilder(); String line; while ((line = in.readLine()) != null) { response.append(line); } in.close(); return response.toString().replace("<html>", "").replace("</html>", ""); } catch (MalformedURLException e) { manager.onError(e); } catch (IOException e) { int responseCode = -1; try { if (uc != null) { responseCode = ((HttpURLConnection) uc).getResponseCode(); } } catch (IOException e1) { } // do nothing, getResponse code failed so treat as default i/o exception. if (uc != null && responseCode == HttpURLConnection.HTTP_UNAUTHORIZED) { manager.onError(new HttpException(Integer.toString(HttpURLConnection.HTTP_UNAUTHORIZED))); } else { manager.onError(e); } } catch (NoSettingsException e) { manager.onError(e); } return ""; }
/** * Returns an input stream pointing to a HTTP API command. * * @param command Name of the command to execute * @param parameters Parameters, separated by ";". * @param manager Reference back to business layer * @return */ public InputStream getThumbInputStream( String command, String parameters, INotifiableManager manager) { URLConnection uc = null; try { if (mUrlSuffix == null) { throw new NoSettingsException(); } URL url = new URL(getUrl(command, parameters)); uc = getUrlConnection(url); Log.i(TAG, "Preparing input stream from " + url); return uc.getInputStream(); } catch (MalformedURLException e) { manager.onError(e); } catch (IOException e) { manager.onError(e); } catch (NoSettingsException e) { manager.onError(e); } return null; }
public InputStream getThumbInputStream(String thumb, INotifiableManager manager) throws FileNotFoundException { URLConnection uc = null; try { if (mUrlSuffix == null) { throw new NoSettingsException(); } URL url = new URL(thumb); Log.i(TAG, "Preparing input stream from " + thumb + " for microhttpd.."); uc = getUrlConnection(url); return uc.getInputStream(); } catch (FileNotFoundException e) { throw e; } catch (MalformedURLException e) { manager.onError(e); } catch (IOException e) { manager.onError(e); } catch (NoSettingsException e) { manager.onError(e); } return null; }
public JsonNode getJson( INotifiableManager manager, String method, JsonNode parameters, String resultField) { try { final JsonNode response = getJson(manager, method, parameters); final JsonNode result = response.get(resultField); if (result == null) { throw new Exception("Could not find field \"" + resultField + "\" as return value."); } else { return response.get(resultField); } } catch (Exception e) { manager.onError(e); } return Client.obj(); }
/** * Executes a JSON-RPC command and returns the result as JSON object. * * @param manager Upper layer reference for error posting * @param method Name of the method to run * @param parameters Parameters of the method * @return Result */ public JsonNode getJson(INotifiableManager manager, String method, JsonNode parameters) { try { final JsonNode response = query(method, parameters, manager); final JsonNode result = response.get(RESULT_FIELD); if (result == null) { if (response.get(ERROR_FIELD) == null) { throw new Exception("Weird JSON response, could not parse error."); } else { throw new Exception(response.get(ERROR_FIELD).get("message").getTextValue()); } } else { return response.get(RESULT_FIELD); } } catch (Exception e) { manager.onError(e); } return Client.obj(); }