| #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 "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 |