Program Listing for File oas_validator.hpp

Return to documentation for file (oas_validator.hpp)

/*
 * Copyright (c) 2024 Muhammad Nawaz
 * Licensed under the MIT License. See LICENSE file for more information.
 */
// [ END OF LICENSE c6bd0f49d040fca8d8a9cb05868e66aa63f0e2e0 ]

#ifndef OAS_VALIDATOR_HPP
#define OAS_VALIDATOR_HPP

#include <exception>
#include <string>
#include <unordered_map>
#include <unordered_set>

class ValidatorInitExc;
class OASValidatorImp;

#ifndef VALIDATION_ERROR
#define VALIDATION_ERROR
enum class ValidationError
{
    NONE = 0,
    INVALID_METHOD = -1,
    INVALID_ROUTE = -2,
    INVALID_PATH_PARAM = -3,
    INVALID_QUERY_PARAM = -4,
    INVALID_HEADER_PARAM = -5,
    INVALID_BODY = -6,
    INVALID_RSP = -7
};
#endif

class OASValidator
{
private:
    OASValidatorImp* impl_;

public:
    explicit OASValidator(const std::string& oas_specs,
                          const std::unordered_map<std::string, std::unordered_set<std::string>>& method_map = {});

    OASValidator(const OASValidator& other);

    OASValidator& operator=(const OASValidator& other);

    ValidationError ValidateRoute(const std::string& method, const std::string& http_path, std::string& error_msg);
    ValidationError ValidateBody(const std::string& method, const std::string& http_path, const std::string& json_body,
                                 std::string& error_msg);

    ValidationError ValidatePathParam(const std::string& method, const std::string& http_path, std::string& error_msg);

    ValidationError ValidateQueryParam(const std::string& method, const std::string& http_path, std::string& error_msg);

    ValidationError ValidateHeaders(const std::string& method, const std::string& http_path,
                                    const std::unordered_map<std::string, std::string>& headers,
                                    std::string& error_msg);

    ValidationError ValidateRequest(const std::string& method, const std::string& http_path, std::string& error_msg);

    ValidationError ValidateRequest(const std::string& method, const std::string& http_path,
                                    const std::string& json_body, std::string& error_msg);

    ValidationError ValidateRequest(const std::string& method, const std::string& http_path,
                                    const std::unordered_map<std::string, std::string>& headers,
                                    std::string& error_msg);

    ValidationError ValidateRequest(const std::string& method, const std::string& http_path,
                                    const std::string& json_body,
                                    const std::unordered_map<std::string, std::string>& headers,
                                    std::string& error_msg);

    ~OASValidator();
};

#endif // OAS_VALIDATOR_HPP