blob: 135dc38b8ab45d03de69bca06f53cacf1d8d784d [file] [log] [blame]
#pragma once
#include "redfish_query_engine/redfish_v1.grpc.pb.h"
#include "redfish_query_engine/redfish_v1.pb.h"
#include "grpcpp/security/auth_context.h"
#include "grpcpp/server.h"
#include "grpcpp/server_context.h"
#include "grpcpp/support/status.h"
#include "proxy.h"
#include "proxy_config.pb.h"
#include "redfish_plugin.h"
namespace milotic {
class ProxyRedfishV1Impl : public ::redfish::v1::RedfishV1::Service {
public:
explicit ProxyRedfishV1Impl(
Proxy &proxy, const milotic_grpc_proxy::RedfishV1Options &options)
: proxy_(proxy) {}
grpc::Status Get(grpc::ServerContext *context,
const ::redfish::v1::Request *request,
redfish::v1::Response *response) override {
return DispatchRequest(RedfishPlugin::RequestVerb::kGet, request, response,
*context->auth_context());
}
grpc::Status Post(grpc::ServerContext *context,
const ::redfish::v1::Request *request,
redfish::v1::Response *response) override {
return DispatchRequest(RedfishPlugin::RequestVerb::kPost, request, response,
*context->auth_context());
}
grpc::Status Patch(grpc::ServerContext *context,
const ::redfish::v1::Request *request,
redfish::v1::Response *response) override {
return DispatchRequest(RedfishPlugin::RequestVerb::kPatch, request,
response, *context->auth_context());
}
grpc::Status Put(grpc::ServerContext *context,
const ::redfish::v1::Request *request,
redfish::v1::Response *response) override {
return DispatchRequest(RedfishPlugin::RequestVerb::kPut, request, response,
*context->auth_context());
}
grpc::Status Delete(grpc::ServerContext *context,
const ::redfish::v1::Request *request,
redfish::v1::Response *response) override {
return DispatchRequest(RedfishPlugin::RequestVerb::kDelete, request,
response, *context->auth_context());
}
ProxyRedfishV1Impl(const ProxyRedfishV1Impl &) = delete;
ProxyRedfishV1Impl &operator=(const ProxyRedfishV1Impl &) = delete;
private:
grpc::Status DispatchRequest(RedfishPlugin::RequestVerb verb,
const ::redfish::v1::Request *request,
redfish::v1::Response *response,
const grpc::AuthContext &auth_context);
Proxy &proxy_;
};
} // namespace milotic