All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.restassured.parsing.Parser Maven / Gradle / Ivy

There is a newer version: 7.4.3.112-ga112
Show newest version
/*
 * Copyright 2016 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package io.restassured.parsing;

import io.restassured.internal.http.ContentTypeExtractor;

import static org.apache.commons.lang3.ArrayUtils.contains;
import static org.apache.commons.lang3.StringUtils.endsWithIgnoreCase;

/**
 * The different parsers that are provided by REST Assured.
 */
public enum Parser {
    XML("application/xml","text/xml","application/xhtml+xml"), TEXT("text/plain", "*/*"),
    JSON("application/json","application/javascript","text/javascript", "text/json"), HTML("text/html");

    private static final String PLUS_XML = "+xml";
    private static final String PLUS_JSON = "+json";
    private static final String PLUS_HTML = "+html";

    private final String[] contentTypes;

    Parser(String... contentTypes) {
        this.contentTypes = contentTypes;
    }

    public String getContentType() {
        return contentTypes[0];
    }

    public static Parser fromContentType(String contentType) {
        if(contentType == null) {
            return null;
        }
        contentType = ContentTypeExtractor.getContentTypeWithoutCharset(contentType.toLowerCase());
        final Parser foundParser;
        if(contains(XML.contentTypes, contentType) || endsWithIgnoreCase(contentType, PLUS_XML)) {
            foundParser = XML;
        } else if(contains(JSON.contentTypes, contentType) || endsWithIgnoreCase(contentType, PLUS_JSON)) {
            foundParser = JSON;
        } else if(contains(TEXT.contentTypes, contentType)) {
            foundParser = TEXT;
        } else if(contains(HTML.contentTypes, contentType) || endsWithIgnoreCase(contentType, PLUS_HTML)) {
            foundParser = HTML;
        } else {
            foundParser = null;
        }
        return foundParser;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy