@Test public void post() throws Exception { given(connection.getURL()).willReturn(new URL(URL)); given(connection.getResponseCode()).willReturn(200); given(connection.getResponseMessage()).willReturn("OK"); Map<String, List<String>> responseHeaderFields = new LinkedHashMap<String, List<String>>(); responseHeaderFields.put("Set-Cookie", Arrays.asList("aaa")); given(connection.getHeaderFields()).willReturn(responseHeaderFields); Request request = new Request( "POST", URL, Arrays.asList(new Header("Hoge", "Piyo")), new FormUrlEncodedTypedOutput().addField("foo", "bar")); Response response = underTest.execute(request); verify(connection).setRequestMethod("POST"); verify(connection).addRequestProperty("Hoge", "Piyo"); verify(connection).getOutputStream(); assertThat(response.getUrl()).isEqualTo(URL); assertThat(response.getStatus()).isEqualTo(200); assertThat(response.getReason()).isEqualTo("OK"); assertThat(response.getHeaders()).isEqualTo(Arrays.asList(new Header("Set-Cookie", "aaa"))); assertThat(output.toString("UTF-8")).isEqualTo("foo=bar"); }
@Test public void errorResponseThrowsHttpError() throws Exception { given(connection.getURL()).willReturn(new URL(URL)); given(connection.getResponseCode()).willReturn(400); Map<String, List<String>> responseHeaderFields = new LinkedHashMap<String, List<String>>(); given(connection.getHeaderFields()) .willReturn(responseHeaderFields, Collections.<String, List<String>>emptyMap()); Request request = new Request("GET", URL, Collections.<Header>emptyList(), null); Response response = underTest.execute(request); assertThat(response.getStatus()).isEqualTo(400); }
@Test public void postAndGet() throws Exception { given(connection.getURL()).willReturn(new URL(URL), new URL(URL + "/secret")); given(connection.getResponseCode()).willReturn(302, 200); Map<String, List<String>> responseHeaderFields = new LinkedHashMap<String, List<String>>(); responseHeaderFields.put("Location", Arrays.asList("http://example.com/secret")); given(connection.getHeaderFields()) .willReturn(responseHeaderFields, Collections.<String, List<String>>emptyMap()); Request request = new Request("POST", URL, Collections.<Header>emptyList(), null); Response response = underTest.execute(request); assertThat(response.getStatus()).isEqualTo(200); assertThat(response.getUrl()).isEqualTo(URL + "/secret"); }
public static void parseFile(Context context, String fileUri, RequestManager.Task task) { Uri uri = Uri.parse(fileUri); final StringBuffer headerString = new StringBuffer(); String tempFile = null; String scheme = uri.getScheme(); if ("http".equals(scheme)) { tempFile = getUniqueTempFileName(context, uri.getLastPathSegment()); if (tempFile != null) { final boolean manifest = fileUri.toLowerCase(Locale.US).endsWith(".ism/manifest"); final String callbackFile = tempFile; DataHandlerCallback dataCallback = new DataHandlerCallback() { @SuppressLint("WorldReadableFiles") public void handleData(InputStream is) { try { FileOutputStream fos = new FileOutputStream(callbackFile, true); int dataCounter = 0, read; byte[] buffer = new byte[2048]; try { while ((read = is.read(buffer)) != -1) { dataCounter += read; fos.write(buffer, 0, read); String header; if (manifest) { header = findManifestHeader(callbackFile); } else { header = findHeader(callbackFile); } if (header != null) { DrmLog.debug("header found"); // We have the header, stop download headerString.append(header); break; } if (!manifest && dataCounter > 20 * 1024) { // PR header has not been found in the // first 20kB of the file, it is // probably a non-DRM file, stop // trying to renew. break; } } } finally { fos.close(); } } catch (IOException e) { DrmLog.logException(e); } } }; Response response = UrlConnectionClient.get( context, task.mDlsSessionId, uri.toString(), null, dataCallback, null); if (response == null) { task.mHttpError = Constants.HTTP_ERROR_INTERNAL_ERROR; } else if (response.getStatus() != 200) { task.mHttpError = response.getStatus(); int innerHttpError = response.getInnerStatus(); if (innerHttpError != 0) { task.mInnerHttpError = innerHttpError; } } } } else if ((scheme == null || scheme.equals("file"))) { File file = null; try { file = new File(URLDecoder.decode(uri.getEncodedPath(), "UTF-8")); } catch (UnsupportedEncodingException e) { DrmLog.logException(e); } if (file != null && file.exists()) { String header = findHeader(file.getAbsolutePath()); if (header != null && header.length() > 0) { headerString.append(header); } } else { task.mHttpError = Constants.HTTP_ERROR_INTERNAL_ERROR; } } if (headerString.length() > 0) { String header = headerString.toString(); task.mHeader = header; } else if (task.mHttpError != Constants.HTTP_ERROR_INTERNAL_ERROR) { // The file is not a DRM file task.mHttpError = Constants.HTTP_ERROR_UNHANDLED_ERROR_IN_PK; } if (tempFile != null) { if (!(new File(tempFile).delete())) { // it's OK if we couldn't delete the file } } }