@VisibleForTesting String hashBody(Payload payload) { if (payload == null) return emptyStringHash; payload = useTheFilePartIfForm(payload); checkArgument(payload != null, "payload was null"); checkArgument(payload.isRepeatable(), "payload must be repeatable: " + payload); try { return base64().encode(ByteStreams2.hashAndClose(payload.getInput(), sha1()).asBytes()); } catch (Exception e) { Throwables.propagateIfPossible(e); throw new HttpException("error creating sigature for payload: " + payload, e); } }
@VisibleForTesting String hashBody(Payload payload) { if (payload == null) return emptyStringHash; payload = useTheFilePartIfForm(payload); checkArgument(payload != null, "payload was null"); checkArgument(payload.isRepeatable(), "payload must be repeatable: " + payload); try { return base64().encode(ByteStreams2.hashAndClose(payload.getInput(), sha1()).asBytes()); } catch (Exception e) { Throwables.propagateIfPossible(e); throw new HttpException("error creating sigature for payload: " + payload, e); } }
private void assertValidMd5(final InputStream input, String md5) throws IOException { assertEquals(base64().encode(ByteStreams2.hashAndClose(input, md5()).asBytes()), md5); }
@Test(groups = "live") public void testRemoteInputStreamSynch() throws Exception { try { URL url = new URL(checkNotNull(sysHttpStreamUrl, "sysHttpStreamUrl")); URLConnection connection = url.openConnection(); HttpWire wire = setUpSynch(); InputStream in = wire.input(connection.getInputStream()); byte[] compare = ByteStreams2.hashAndClose(in, md5()).asBytes(); Thread.sleep(100); assertEquals(base16().lowerCase().encode(compare), checkNotNull(sysHttpStreamMd5, sysHttpStreamMd5)); assertEquals(((BufferLogger) wire.getWireLog()).buff.toString().getBytes().length, 3331484); } catch (UnknownHostException e) { // probably in offline mode } }
@Test(groups = "live") public void testRemoteInputStream() throws Exception { try { URL url = new URL(checkNotNull(sysHttpStreamUrl, "sysHttpStreamUrl")); URLConnection connection = url.openConnection(); HttpWire wire = setUp(); InputStream in = wire.input(connection.getInputStream()); byte[] compare = ByteStreams2.hashAndClose(in, md5()).asBytes(); Thread.sleep(100); assertEquals(base16().lowerCase().encode(compare), checkNotNull(sysHttpStreamMd5, sysHttpStreamMd5)); assertEquals(((BufferLogger) wire.getWireLog()).buff.toString().getBytes().length, 3331484); } catch (UnknownHostException e) { // probably in offline mode } }
private static void handlePost(HttpServletRequest request, HttpServletResponse response) throws IOException { InputStream body = request.getInputStream(); try { if (request.getHeader("Content-MD5") != null) { String expectedMd5 = request.getHeader("Content-MD5"); String realMd5FromRequest; realMd5FromRequest = base64().encode(ByteStreams2.hashAndClose(body, md5()).asBytes()); boolean matched = expectedMd5.equals(realMd5FromRequest); if (matched) { response.setStatus(SC_OK); response.addHeader("x-Content-MD5", realMd5FromRequest); } else { response.sendError(500, "didn't match"); } } else { String responseString = (request.getContentLength() < 10240) ? toStringAndClose(body) + "POST" : "POST"; body = null; for (String header : new String[] { CONTENT_DISPOSITION, CONTENT_LANGUAGE, CONTENT_ENCODING }) if (request.getHeader(header) != null) { response.addHeader("x-" + header, request.getHeader(header)); } response.setStatus(SC_OK); response.getWriter().println(responseString); } Request.class.cast(request).setHandled(true); } catch (IOException e) { closeQuietly(body); response.sendError(500, getStackTraceAsString(e)); } }
@Test(dependsOnMethods = "testListCookbookVersionsWithChefService") public void testDownloadCookbooks() throws Exception { Iterable<? extends CookbookVersion> cookbooks = chefService.listCookbookVersions(); for (CookbookVersion cookbook : cookbooks) { for (Resource resource : ImmutableList.<Resource> builder().addAll(cookbook.getDefinitions()) .addAll(cookbook.getFiles()).addAll(cookbook.getLibraries()).addAll(cookbook.getSuppliers()) .addAll(cookbook.getRecipes()).addAll(cookbook.getResources()).addAll(cookbook.getRootFiles()) .addAll(cookbook.getTemplates()).addAll(cookbook.getAttributes()).build()) { InputStream stream = api.getResourceContents(resource); assertNotNull(stream, "Resource contents are null for resource: " + resource.getName()); byte[] md5 = ByteStreams2.hashAndClose(stream, md5()).asBytes(); assertEquals(md5, resource.getChecksum()); } } }
@Override public Void call() throws Exception { try { Blob blob = view.getBlobStore().getBlob(container, name); validateMetadata(blob.getMetadata(), container, name); assertEquals(hashAndClose(blob.getPayload().openStream(), md5()), supplier.hash(md5())); } catch (IOException e) { Throwables.propagate(e); } return null; } }));