blob: 3e17b9cf62a4c15ac180a298e68722fd1af9b1a9 [file]
#pragma once
#include "redfish_query_engine/redfish_v1.grpc.pb.h"
#include "redfish_query_engine/redfish_v1.pb.h"
#include "grpcpp/support/status.h"
#include "grpcpp/security/auth_context.h"
#include "grpcpp/server.h"
#include "grpcpp/server_context.h"
#include "proxy.h"
#include "redfish_plugin.h"
namespace milotic {
class ProxyRedfishV1Impl : public ::redfish::v1::RedfishV1::Service {
public:
explicit ProxyRedfishV1Impl(Proxy &proxy) : 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