Example usage for com.google.common.net MediaType parse

List of usage examples for com.google.common.net MediaType parse

Introduction

In this page you can find the example usage for com.google.common.net MediaType parse.

Prototype

public static MediaType parse(String input) 

Source Link

Document

Parses a media type from its string representation.

Usage

From source file:org.openqa.selenium.remote.server.Passthrough.java

@Override
public void handle(HttpRequest req, HttpResponse resp) throws IOException {
    URL target = new URL(upstream.toExternalForm() + req.getUri());
    HttpURLConnection connection = (HttpURLConnection) target.openConnection();
    connection.setInstanceFollowRedirects(true);
    connection.setRequestMethod(req.getMethod().toString());
    connection.setDoInput(true);//from  ww  w .  ja va  2 s. c o  m
    connection.setDoOutput(true);
    connection.setUseCaches(false);

    for (String name : req.getHeaderNames()) {
        if (IGNORED_REQ_HEADERS.contains(name.toLowerCase())) {
            continue;
        }

        for (String value : req.getHeaders(name)) {
            connection.addRequestProperty(name, value);
        }
    }
    // None of this "keep alive" nonsense.
    connection.setRequestProperty("Connection", "close");

    if (POST == req.getMethod()) {
        // We always transform to UTF-8 on the way up.
        String contentType = req.getHeader("Content-Type");
        contentType = contentType == null ? JSON_UTF_8.toString() : contentType;

        MediaType type = MediaType.parse(contentType);
        connection.setRequestProperty("Content-Type", type.withCharset(UTF_8).toString());

        Charset charSet = req.getContentEncoding();

        StringWriter logWriter = new StringWriter();
        try (InputStream is = req.consumeContentStream();
                Reader reader = new InputStreamReader(is, charSet);
                Reader in = new TeeReader(reader, logWriter);
                OutputStream os = connection.getOutputStream();
                Writer out = new OutputStreamWriter(os, UTF_8)) {
            CharStreams.copy(in, out);
        }
        LOG.info("To upstream: " + logWriter.toString());
    }

    resp.setStatus(connection.getResponseCode());
    // clear response defaults.
    resp.setHeader("Date", null);
    resp.setHeader("Server", null);

    connection.getHeaderFields().entrySet().stream()
            .filter(entry -> entry.getKey() != null && entry.getValue() != null)
            .filter(entry -> !IGNORED_REQ_HEADERS.contains(entry.getKey().toLowerCase())).forEach(entry -> {
                entry.getValue().stream().filter(Objects::nonNull)
                        .forEach(value -> resp.addHeader(entry.getKey(), value));
            });
    InputStream in = connection.getErrorStream();
    if (in == null) {
        in = connection.getInputStream();
    }

    String charSet = connection.getContentEncoding() != null ? connection.getContentEncoding() : UTF_8.name();
    try (Reader reader = new InputStreamReader(in, charSet)) {
        String content = CharStreams.toString(reader);
        LOG.info("To downstream: " + content);
        resp.setContent(content.getBytes(charSet));
    } finally {
        in.close();
    }
}

From source file:com.spotify.apollo.elide.ElideResource.java

private static boolean acceptHeaderHasNoJsonApiMediaTypeWithoutParameters(Request request) {
    Optional<String> header = headerValueIgnoreCase(request, "accept");

    if (!header.isPresent()) {
        return false;
    }//w ww.ja  v  a 2 s  . c  o  m

    Optional<String> mediaTypeWithoutParameter = Splitter.on(',').trimResults().splitToList(header.get())
            .stream().filter(s -> MediaType.parse(s).parameters().isEmpty()).findAny();

    return !mediaTypeWithoutParameter.isPresent();
}

From source file:com.proofpoint.http.client.SmileResponseHandler.java

@Override
public T handle(Request request, Response response) {
    if (!successfulResponseCodes.contains(response.getStatusCode())) {
        throw new UnexpectedResponseException(String.format("Expected response code to be %s, but was %d: %s",
                successfulResponseCodes, response.getStatusCode(), response.getStatusMessage()), request,
                response);/*from w w w .  j  av  a 2 s  . c  o m*/
    }
    String contentType = response.getHeader(CONTENT_TYPE);
    if (contentType == null) {
        throw new UnexpectedResponseException("Content-Type is not set for response", request, response);
    }
    if (!MediaType.parse(contentType).is(MEDIA_TYPE_SMILE)) {
        throw new UnexpectedResponseException(
                "Expected application/x-jackson-smile response from server but got " + contentType, request,
                response);
    }
    try {
        JsonParser jsonParser = new SmileFactory().createParser(response.getInputStream());
        ObjectMapper objectMapper = OBJECT_MAPPER_SUPPLIER.get();

        // Important: we are NOT to close the underlying stream after
        // mapping, so we need to instruct parser:
        jsonParser.disable(JsonParser.Feature.AUTO_CLOSE_SOURCE);

        return objectMapper.readValue(jsonParser,
                objectMapper.getTypeFactory().constructType(jsonCodec.getType()));
    } catch (InvalidFormatException e) {
        throw new IllegalArgumentException("Unable to create " + jsonCodec.getType() + " from SMILE response",
                e);
    } catch (IOException e) {
        throw new RuntimeException("Error reading SMILE response from server", e);
    }
}

From source file:com.github.fge.jsonschema.syntax.checkers.hyperschema.MediaSyntaxChecker.java

@Override
protected void checkValue(final Collection<JsonPointer> pointers, final MessageBundle bundle,
        final ProcessingReport report, final SchemaTree tree) throws ProcessingException {
    final JsonNode node = getNode(tree);
    JsonNode subNode;// ww w. j  a  va2  s .c  om
    NodeType type;
    String value;

    subNode = node.path(BINARY_ENCODING_FIELDNAME);
    if (!subNode.isMissingNode()) {
        type = NodeType.getNodeType(subNode);
        value = subNode.textValue();
        if (value == null)
            report.error(newMsg(tree, bundle, "draftv4.media.binaryEncoding.incorrectType")
                    .put("expected", NodeType.STRING).putArgument("found", type));
        else if (!BINARY_ENCODINGS.contains(value.toLowerCase()))
            report.error(newMsg(tree, bundle, "draftv4.media.binaryEncoding.invalid")
                    .putArgument("value", value).putArgument("valid", BINARY_ENCODINGS));
    }

    subNode = node.path(TYPE_FIELDNAME);
    if (subNode.isMissingNode())
        return;
    type = NodeType.getNodeType(subNode);
    if (type != NodeType.STRING) {
        report.error(newMsg(tree, bundle, "draftv4.media.type.incorrectType").put("expected", NodeType.STRING)
                .putArgument("found", type));
        return;
    }
    value = subNode.textValue();
    try {
        MediaType.parse(value);
    } catch (IllegalArgumentException ignored) {
        report.error(newMsg(tree, bundle, "draftv4.media.type.notMediaType").putArgument("value", value));
    }
}

From source file:com.khannedy.sajikeun.servlet.AssetServlet.java

protected void doHttp(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    try {//from   w  ww .j  a  va2  s.c om

        final StringBuilder builder = new StringBuilder(req.getServletPath());
        if (req.getPathInfo() != null) {
            builder.append(req.getPathInfo());
        }
        final Asset asset = loadAsset(builder.toString());
        if (asset == null) {
            resp.sendError(HttpServletResponse.SC_NOT_FOUND);
            return;
        }

        if (cache) {
            if (isCachedClientSide(req, asset)) {
                resp.sendError(HttpServletResponse.SC_NOT_MODIFIED);
                return;
            }
        }

        resp.setDateHeader(HttpHeaders.LAST_MODIFIED, asset.getLastModified());
        resp.setHeader(HttpHeaders.ETAG, asset.getETag());

        final String mimeTypeOfExtension = req.getServletContext().getMimeType(req.getRequestURI());
        MediaType mediaType = DEFAULT_MEDIA_TYPE;

        if (mimeTypeOfExtension != null) {
            try {
                mediaType = MediaType.parse(mimeTypeOfExtension);
                if (defaultCharset != null && mediaType.is(MediaType.ANY_TEXT_TYPE)) {
                    mediaType = mediaType.withCharset(defaultCharset);
                }
            } catch (IllegalArgumentException ignore) {
            }
        }

        resp.setContentType(mediaType.type() + '/' + mediaType.subtype());

        if (mediaType.charset().isPresent()) {
            resp.setCharacterEncoding(mediaType.charset().get().toString());
        }

        try (ServletOutputStream output = resp.getOutputStream()) {
            output.write(asset.getResource());
        }
    } catch (RuntimeException | URISyntaxException ignored) {
        resp.sendError(HttpServletResponse.SC_NOT_FOUND);
    }
}

From source file:com.spotify.apollo.elide.ElideResource.java

private static boolean contentTypeHasMediaTypeParameters(Request request) {
    Optional<String> header = headerValueIgnoreCase(request, "content-type");

    return header.isPresent() && !MediaType.parse(header.get()).parameters().isEmpty();
}

From source file:com.linkedin.flashback.netty.builder.RecordedHttpMessageBuilder.java

/**
 * Get content type from headers//from ww  w  .j  a v  a 2 s. c om
 *
 * */
protected String getContentType() {
    String header = getHeader(HttpHeaders.CONTENT_TYPE);
    if (Strings.isNullOrEmpty(header)) {
        return DEFAULT_CONTENT_TYPE;
    } else {
        return MediaType.parse(header).withoutParameters().toString();
    }
}

From source file:keywhiz.FileAssetServlet.java

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    try {//w w w  . j  a  v a  2  s  . c  o  m
        ByteSource asset = loadAsset(req.getRequestURI());
        if (asset == null) {
            resp.sendError(HttpServletResponse.SC_NOT_FOUND);
            return;
        }

        final String mimeTypeOfExtension = req.getServletContext().getMimeType(req.getRequestURI());
        MediaType mediaType = DEFAULT_MEDIA_TYPE;

        if (mimeTypeOfExtension != null) {
            try {
                mediaType = MediaType.parse(mimeTypeOfExtension);
                if (mediaType.is(MediaType.ANY_TEXT_TYPE)) {
                    mediaType = mediaType.withCharset(DEFAULT_CHARSET);
                }
            } catch (IllegalArgumentException ignore) {
            }
        }

        resp.setContentType(mediaType.type() + "/" + mediaType.subtype());

        if (mediaType.charset().isPresent()) {
            resp.setCharacterEncoding(mediaType.charset().get().toString());
        }

        try (OutputStream output = resp.getOutputStream()) {
            asset.copyTo(output);
        }
    } catch (RuntimeException ignored) {
        resp.sendError(HttpServletResponse.SC_NOT_FOUND);
    }
}

From source file:net.morimekta.providence.server.ProvidenceServlet.java

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    PProcessor processor = processorProvider.processorForRequest(req);
    try {//from w  w  w.  j ava2s  .com
        Serializer requestSerializer = serializerProvider.getDefault();
        if (req.getContentType() != null) {
            requestSerializer = serializerProvider.getSerializer(req.getContentType());

            if (requestSerializer == null) {
                resp.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "Unknown content-type: " + req.getContentType());
                return;
            }
        }

        Serializer responseSerializer = requestSerializer;
        String acceptHeader = resp.getHeader("Accept");
        if (acceptHeader != null) {
            String[] entries = acceptHeader.split("[,]");
            for (String entry : entries) {
                if (entry.trim().isEmpty()) {
                    continue;
                }

                try {
                    MediaType mediaType = MediaType.parse(entry.trim());
                    Serializer tmp = serializerProvider
                            .getSerializer(mediaType.type() + "/" + mediaType.subtype());
                    if (tmp != null) {
                        responseSerializer = tmp;
                        break;
                    }
                } catch (IllegalArgumentException ignore) {
                    // Ignore. Bad header input is pretty common.
                }
            }
            if (responseSerializer == null) {
                resp.sendError(HttpServletResponse.SC_BAD_REQUEST,
                        "No supported accept media-type: " + acceptHeader);
                return;
            }
        }

        MessageReader reader = new IOMessageReader(req.getInputStream(), requestSerializer);

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        MessageWriter writer = new IOMessageWriter(baos, responseSerializer);

        // Create a new processor handler instance for each request, as
        // they may be request context dependent. E.g. depends on
        // information in header, servlet context etc.
        new DefaultProcessorHandler(processor).process(reader, writer);

        resp.setStatus(HttpServletResponse.SC_OK);
        resp.setContentType(responseSerializer.mimeType());
        resp.setContentLength(baos.size());
        resp.getOutputStream().write(baos.toByteArray());
    } catch (Exception e) {
        LOGGER.error("Exception in service call for " + processor.getDescriptor().getQualifiedName(), e);
        resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal error: " + e.getMessage());
    }
}

From source file:org.eclipse.mylyn.internal.tasks.ui.editors.TaskEditorExtensions.java

/**
 * get a task editor extension for a specific task attribute
 * //from www .  jav a  2s  . com
 * @param taskRepository
 * @param taskAttribute
 * @return the extension, or null if there is none
 * @see #getTaskEditorExtension(TaskRepository);
 * @since 3.11
 */
public static AbstractTaskEditorExtension getTaskEditorExtension(TaskRepository taskRepository,
        TaskAttribute taskAttribute) {
    init();
    String input = taskAttribute.getMetaData().getMediaType();
    if (input != null) {
        try {
            MediaType media = MediaType.parse(input);
            Multimap<String, String> parameters = media.parameters();
            if (parameters.containsKey(MARKUP_KEY)) {
                Iterator<String> iter = parameters.get(MARKUP_KEY).iterator();
                String markup = iter.next();
                SortedSet<RegisteredTaskEditorExtension> extensions = getTaskEditorExtensions();
                for (RegisteredTaskEditorExtension extension : extensions) {
                    if (markup.equals(extension.getName())) {
                        return extension.getExtension();
                    }
                }
            }
        } catch (IllegalArgumentException e) {
            StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN,
                    String.format("Unable to parse markup type for attribute %s", taskAttribute.toString()), //$NON-NLS-1$
                    e));
        }
    }
    return getTaskEditorExtension(taskRepository);
}