| /** | 
 |  * Copyright © 2018 IBM Corporation | 
 |  * | 
 |  * Licensed under the Apache License, Version 2.0 (the "License"); | 
 |  * you may not use this file except in compliance with the License. | 
 |  * You may obtain a copy of the License at | 
 |  * | 
 |  *     http://www.apache.org/licenses/LICENSE-2.0 | 
 |  * | 
 |  * Unless required by applicable law or agreed to in writing, software | 
 |  * distributed under the License is distributed on an "AS IS" BASIS, | 
 |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 |  * See the License for the specific language governing permissions and | 
 |  * limitations under the License. | 
 |  */ | 
 |  | 
 | #include "config.h" | 
 |  | 
 | #include "argument.hpp" | 
 | #include "certificate.hpp" | 
 | #include "certs_manager.hpp" | 
 |  | 
 | #include <systemd/sd-event.h> | 
 |  | 
 | #include <sdbusplus/bus.hpp> | 
 | #include <sdbusplus/server/manager.hpp> | 
 | #include <sdeventplus/event.hpp> | 
 |  | 
 | #include <cctype> | 
 | #include <string> | 
 | #include <utility> | 
 |  | 
 | inline std::string capitalize(const std::string& s) | 
 | { | 
 |     std::string res = s; | 
 |     if (!res.empty()) | 
 |     { | 
 |         res[0] = static_cast<char>(std::toupper(res[0])); | 
 |     } | 
 |     return res; | 
 | } | 
 |  | 
 | int main(int argc, char** argv) | 
 | { | 
 |     phosphor::certs::Arguments arguments; | 
 |     if (phosphor::certs::processArguments(argc, argv, arguments) != 0) | 
 |     { | 
 |         std::exit(EXIT_FAILURE); | 
 |     } | 
 |  | 
 |     auto bus = sdbusplus::bus::new_default(); | 
 |     auto objPath = std::string(objectNamePrefix) + '/' + arguments.typeStr + | 
 |                    '/' + arguments.endpoint; | 
 |     // Add sdbusplus ObjectManager | 
 |     sdbusplus::server::manager_t objManager(bus, objPath.c_str()); | 
 |  | 
 |     // Get default event loop | 
 |     auto event = sdeventplus::Event::get_default(); | 
 |  | 
 |     // Attach the bus to sd_event to service user requests | 
 |     bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL); | 
 |     phosphor::certs::Manager manager( | 
 |         bus, event, objPath.c_str(), | 
 |         phosphor::certs::stringToCertificateType(arguments.typeStr), | 
 |         arguments.unit, arguments.path); | 
 |  | 
 |     // Adjusting Interface name as per std convention | 
 |     auto busName = std::string(busNamePrefix) + '.' + | 
 |                    capitalize(arguments.typeStr) + '.' + | 
 |                    capitalize(arguments.endpoint); | 
 |     bus.request_name(busName.c_str()); | 
 |     event.loop(); | 
 |     return 0; | 
 | } |