Keyple Service C++ Library - 3.3.5
Component of the Keyple C++ middleware
InternalLegacyDto.cpp
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright (c) 2025 Calypso Networks Association https://calypsonet.org/ *
3 * *
4 * See the NOTICE file(s) distributed with this work for additional *
5 * information regarding copyright ownership. *
6 * *
7 * This program and the accompanying materials are made available under the *
8 * terms of the Eclipse Public License 2.0 which is available at *
9 * http://www.eclipse.org/legal/epl-2.0 *
10 * *
11 * SPDX-License-Identifier: EPL-2.0 *
12 ******************************************************************************/
13
14#include "keyple/core/service/InternalLegacyDto.hpp"
15
16#include <memory>
17#include <vector>
18
19#include "keyple/core/service/InternalCardSelector.hpp"
20
21namespace keyple {
22namespace core {
23namespace service {
24
25InternalLegacyDto::InternalLegacyDto()
26{
27}
28
29const std::vector<std::shared_ptr<LegacyCardSelectionRequestV0>>
30InternalLegacyDto::mapToLegacyCardSelectionRequestsV0(
31 const std::vector<std::shared_ptr<CardSelector>>& cardSelectors,
32 const std::vector<std::shared_ptr<CardSelectionRequestSpi>>&
33 cardSelectionRequests)
34{
35 std::vector<std::shared_ptr<LegacyCardSelectionRequestV0>> result;
36
37 for (int i = 0; i < cardSelectors.size(); i++) {
38 result.push_back(mapToLegacyCardSelectionRequestV0(
39 cardSelectors[i], cardSelectionRequests[i]));
40 }
41
42 return result;
43}
44
45const std::vector<std::shared_ptr<LegacyCardSelectionRequestV1>>
46InternalLegacyDto::mapToLegacyCardSelectionRequestsV1(
47 const std::vector<std::shared_ptr<CardSelector>>& cardSelectors,
48 const std::vector<std::shared_ptr<CardSelectionRequestSpi>>&
49 cardSelectionRequests)
50{
51 std::vector<std::shared_ptr<LegacyCardSelectionRequestV1>> result;
52
53 for (int i = 0; i < cardSelectors.size(); i++) {
54 result.push_back(mapToLegacyCardSelectionRequestV1(
55 cardSelectors[i], cardSelectionRequests[i]));
56 }
57
58 return result;
59}
60
61std::shared_ptr<LegacyCardSelectionRequestV0>
62InternalLegacyDto::mapToLegacyCardSelectionRequestV0(
63 std::shared_ptr<CardSelector> cardSelector,
64 std::shared_ptr<CardSelectionRequestSpi> cardSelectionRequestSpi)
65{
66 auto result = std::make_shared<LegacyCardSelectionRequestV0>();
67
68 result->mCardRequest = cardSelectionRequestSpi->getCardRequest() != nullptr
69 ? mapToLegacyCardRequestV0(
70 cardSelectionRequestSpi->getCardRequest())
71 : nullptr;
72
73 result->mCardSelector
74 = mapToLegacyCardSelector(cardSelector, cardSelectionRequestSpi);
75
76 return result;
77}
78
79std::shared_ptr<LegacyCardSelectionRequestV1>
80InternalLegacyDto::mapToLegacyCardSelectionRequestV1(
81 std::shared_ptr<CardSelector> cardSelector,
82 std::shared_ptr<CardSelectionRequestSpi> cardSelectionRequestSpi)
83{
84 auto result = std::make_shared<LegacyCardSelectionRequestV1>();
85
86 result->mCardRequest = cardSelectionRequestSpi->getCardRequest() != nullptr
87 ? mapToLegacyCardRequestV1(
88 cardSelectionRequestSpi->getCardRequest())
89 : nullptr;
90
91 result->mCardSelector
92 = mapToLegacyCardSelector(cardSelector, cardSelectionRequestSpi);
93
94 return result;
95}
96
97std::shared_ptr<LegacyCardSelector>
98InternalLegacyDto::mapToLegacyCardSelector(
99 std::shared_ptr<CardSelector> cardSelector,
100 std::shared_ptr<CardSelectionRequestSpi> cardSelectionRequestSpi)
101{
102 auto result = std::make_shared<LegacyCardSelector>();
103 auto basicCardSelector
104 = std::dynamic_pointer_cast<InternalCardSelector>(cardSelector);
105
106 result->mCardProtocol = basicCardSelector->getLogicalProtocolName();
107 result->mPowerOnDataRegex = basicCardSelector->getPowerOnDataRegex();
108
109 const auto isoCardSelector
110 = std::dynamic_pointer_cast<InternalIsoCardSelector>(cardSelector);
111 if (isoCardSelector) {
112 result->mAid = isoCardSelector->getAid();
113 result->mFileOccurrence = isoCardSelector->getFileOccurrence();
114 result->mFileControlInformation
115 = isoCardSelector->getFileControlInformation();
116 } else {
117 result->mAid = std::vector<uint8_t>(0);
118 result->mFileOccurrence = CommonIsoCardSelector::FileOccurrence::FIRST;
119 result->mFileControlInformation
120 = CommonIsoCardSelector::FileControlInformation::FCI;
121 }
122 result->mSuccessfulSelectionStatusWords
123 = cardSelectionRequestSpi->getSuccessfulSelectionStatusWords();
124
125 return result;
126}
127
128std::shared_ptr<LegacyCardRequest>
129InternalLegacyDto::mapToLegacyCardRequestV0(
130 const std::shared_ptr<CardRequestSpi> cardRequest)
131{
132 auto result = std::make_shared<LegacyCardRequestV0>();
133
134 result->mApduRequests
135 = mapToLegacyApduRequests(cardRequest->getApduRequests());
136 result->mIsStatusCodesVerificationEnabled
137 = cardRequest->stopOnUnsuccessfulStatusWord();
138
139 return result;
140}
141
142std::shared_ptr<LegacyCardRequest>
143InternalLegacyDto::mapToLegacyCardRequestV1(
144 const std::shared_ptr<CardRequestSpi> cardRequest)
145{
146 auto result = std::make_shared<LegacyCardRequestV1>();
147
148 result->mApduRequests
149 = mapToLegacyApduRequests(cardRequest->getApduRequests());
150 result->mStopOnUnsuccessfulStatusWord
151 = cardRequest->stopOnUnsuccessfulStatusWord();
152
153 return result;
154}
155
156const std::vector<std::shared_ptr<LegacyApduRequest>>
157InternalLegacyDto::mapToLegacyApduRequests(
158 const std::vector<std::shared_ptr<ApduRequestSpi>>& apduRequests)
159{
160 std::vector<std::shared_ptr<LegacyApduRequest>> result;
161
162 for (const auto& apduRequestSpi : apduRequests) {
163 result.push_back(mapToLegacyApduRequest(apduRequestSpi));
164 }
165
166 return result;
167}
168
169std::shared_ptr<LegacyApduRequest>
170InternalLegacyDto::mapToLegacyApduRequest(
171 const std::shared_ptr<ApduRequestSpi> apduRequestSpi)
172{
173 auto result = std::make_shared<LegacyApduRequest>();
174
175 result->mApdu = apduRequestSpi->getApdu();
176 result->mInfo = apduRequestSpi->getInfo();
177 result->mSuccessfulStatusWords = apduRequestSpi->getSuccessfulStatusWords();
178
179 return result;
180}
181
182} /* namespace service */
183} /* namespace core */
184} /* namespace keyple */