C++
Platform API 토큰을 만들고 platform.proto를 받으려면 gRPC 가이드부터 시작하세요. protoc, grpc_cpp_plugin, gRPC 및 protobuf C++ 라이브러리를 설치하세요. 설치 방법은 공식 C++ 시작 가이드를 참고하세요.
platform.proto가 있는 디렉터리에서 protobuf 메시지와 서비스 스텁을 생성하세요:
protoc -I. --cpp_out=. platform.proto
protoc -I. --grpc_out=. \
--plugin=protoc-gen-grpc="$(command -v grpc_cpp_plugin)" platform.proto
main.cc로 저장하세요:
#include <cstdlib>
#include <iostream>
#include <memory>
#include <string>
#include <grpcpp/grpcpp.h>
#include "platform.grpc.pb.h"
int main() {
const char* token = std::getenv("CR_RECONSTRUCT_API_TOKEN");
if (!token || !*token) {
std::cerr << "Set CR_RECONSTRUCT_API_TOKEN\n";
return 1;
}
auto channel = grpc::CreateChannel(
"reconstruct.dev:443", grpc::SslCredentials(grpc::SslCredentialsOptions{}));
auto client = reconstruct::platform::v1::PlatformService::NewStub(channel);
reconstruct::platform::v1::ListCatalogsRequest list_request;
list_request.set_page_size(10);
reconstruct::platform::v1::ListCatalogsResponse page;
grpc::ClientContext list_context;
list_context.AddMetadata("authorization", std::string("Bearer ") + token);
auto status = client->ListCatalogs(&list_context, list_request, &page);
if (!status.ok()) {
std::cerr << status.error_message() << '\n';
return 1;
}
for (const auto& catalog : page.catalogs()) {
reconstruct::platform::v1::GetCatalogRequest get_request;
get_request.set_catalog_id(catalog.catalog_id());
reconstruct::platform::v1::GetCatalogResponse detail;
grpc::ClientContext get_context;
get_context.AddMetadata("authorization", std::string("Bearer ") + token);
status = client->GetCatalog(&get_context, get_request, &detail);
if (!status.ok()) {
std::cerr << status.error_message() << '\n';
return 1;
}
std::cout << detail.catalog_id() << ": " << detail.description() << '\n';
}
}
생성된 파일과 클라이언트를 컴파일하려면 다음 CMakeLists.txt를 사용하세요:
cmake_minimum_required(VERSION 3.16)
project(reconstruct_client LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
find_package(Protobuf CONFIG REQUIRED)
find_package(gRPC CONFIG REQUIRED)
add_executable(reconstruct_client
main.cc platform.pb.cc platform.grpc.pb.cc)
target_link_libraries(reconstruct_client PRIVATE
gRPC::grpc++ protobuf::libprotobuf)
cmake -S . -B build, cmake --build build, ./build/reconstruct_client를 순서대로 실행하세요.