winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

SearchRequestComposer.cpp (1781B)


      1 // Copyright (c) Microsoft Corporation.
      2 // Licensed under the MIT License.
      3 #include "pch.h"
      4 #include "SearchRequestComposer.h"
      5 #include "Rest/Schema/1_0/Json/SearchRequestSerializer.h"
      6 #include "Rest/Schema/1_1/Json/SearchRequestSerializer.h"
      7 
      8 namespace AppInstaller::Repository::Rest::Schema
      9 {
     10     struct SearchRequestComposer::impl
     11     {
     12         // The serializer.  We only have one lineage (1.0+) right now.
     13         std::unique_ptr<Rest::Schema::V1_0::Json::SearchRequestSerializer> m_serializer;
     14     };
     15 
     16     SearchRequestComposer::SearchRequestComposer(SearchRequestComposer&&) noexcept = default;
     17     SearchRequestComposer& SearchRequestComposer::operator=(SearchRequestComposer&&) noexcept = default;
     18 
     19     SearchRequestComposer::~SearchRequestComposer() = default;
     20 
     21     SearchRequestComposer::SearchRequestComposer(const Utility::Version& schemaVersion)
     22     {
     23         const auto& parts = schemaVersion.GetParts();
     24         THROW_HR_IF(E_INVALIDARG, parts.empty());
     25 
     26         m_pImpl = std::make_unique<impl>();
     27 
     28         if (parts[0].Integer == 1)
     29         {
     30             if (parts.size() == 1 || parts[1].Integer == 0)
     31             {
     32                 m_pImpl->m_serializer = std::make_unique<Rest::Schema::V1_0::Json::SearchRequestSerializer>();
     33             }
     34             else
     35             {
     36                 m_pImpl->m_serializer = std::make_unique<Rest::Schema::V1_1::Json::SearchRequestSerializer>();
     37             }
     38         }
     39         else
     40         {
     41             THROW_HR(HRESULT_FROM_WIN32(ERROR_UNSUPPORTED_TYPE));
     42         }
     43     }
     44 
     45     web::json::value SearchRequestComposer::Serialize(const AppInstaller::Repository::SearchRequest& searchRequest) const
     46     {
     47         return m_pImpl->m_serializer->Serialize(searchRequest);
     48     }
     49 }