Open-Transactions  0.93.0-ge03d287
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ot_otapi_ot.hpp
Go to the documentation of this file.
1 /************************************************************
2  *
3  * ot_otapi_ot.hpp
4  *
5  */
6 
7 /************************************************************
8  -----BEGIN PGP SIGNED MESSAGE-----
9  Hash: SHA1
10 
11  * OPEN TRANSACTIONS
12  *
13  * Financial Cryptography and Digital Cash
14  * Library, Protocol, API, Server, CLI, GUI
15  *
16  * -- Anonymous Numbered Accounts.
17  * -- Untraceable Digital Cash.
18  * -- Triple-Signed Receipts.
19  * -- Cheques, Vouchers, Transfers, Inboxes.
20  * -- Basket Currencies, Markets, Payment Plans.
21  * -- Signed, XML, Ricardian-style Contracts.
22  * -- Scripted smart contracts.
23  *
24  * Copyright (C) 2010-2013 by "Fellow Traveler" (A pseudonym)
25  *
26  * EMAIL:
28  *
29  * BITCOIN: 1NtTPVVjDsUfDWybS4BwvHpG2pdS9RnYyQ
30  *
31  * KEY FINGERPRINT (PGP Key in license file):
32  * 9DD5 90EB 9292 4B48 0484 7910 0308 00ED F951 BB8E
33  *
34  * OFFICIAL PROJECT WIKI(s):
35  * https://github.com/FellowTraveler/Moneychanger
36  * https://github.com/FellowTraveler/Open-Transactions/wiki
37  *
38  * WEBSITE:
39  * http://www.OpenTransactions.org/
40  *
41  * Components and licensing:
42  * -- Moneychanger..A Java client GUI.....LICENSE:.....GPLv3
43  * -- otlib.........A class library.......LICENSE:...LAGPLv3
44  * -- otapi.........A client API..........LICENSE:...LAGPLv3
45  * -- opentxs/ot....Command-line client...LICENSE:...LAGPLv3
46  * -- otserver......Server Application....LICENSE:....AGPLv3
47  * Github.com/FellowTraveler/Open-Transactions/wiki/Components
48  *
49  * All of the above OT components were designed and written by
50  * Fellow Traveler, with the exception of Moneychanger, which
51  * was contracted out to Vicky C ([email protected]).
52  * The open-source community has since actively contributed.
53  *
54  * -----------------------------------------------------
55  *
56  * LICENSE:
57  * This program is free software: you can redistribute it
58  * and/or modify it under the terms of the GNU Affero
59  * General Public License as published by the Free Software
60  * Foundation, either version 3 of the License, or (at your
61  * option) any later version.
62  *
63  * ADDITIONAL PERMISSION under the GNU Affero GPL version 3
64  * section 7: (This paragraph applies only to the LAGPLv3
65  * components listed above.) If you modify this Program, or
66  * any covered work, by linking or combining it with other
67  * code, such other code is not for that reason alone subject
68  * to any of the requirements of the GNU Affero GPL version 3.
69  * (==> This means if you are only using the OT API, then you
70  * don't have to open-source your code--only your changes to
71  * Open-Transactions itself must be open source. Similar to
72  * LGPLv3, except it applies to software-as-a-service, not
73  * just to distributing binaries.)
74  *
75  * Extra WAIVER for OpenSSL, Lucre, and all other libraries
76  * used by Open Transactions: This program is released under
77  * the AGPL with the additional exemption that compiling,
78  * linking, and/or using OpenSSL is allowed. The same is true
79  * for any other open source libraries included in this
80  * project: complete waiver from the AGPL is hereby granted to
81  * compile, link, and/or use them with Open-Transactions,
82  * according to their own terms, as long as the rest of the
83  * Open-Transactions terms remain respected, with regard to
84  * the Open-Transactions code itself.
85  *
86  * Lucre License:
87  * This code is also "dual-license", meaning that Ben Lau-
88  * rie's license must also be included and respected, since
89  * the code for Lucre is also included with Open Transactions.
90  * See Open-Transactions/src/otlib/lucre/LUCRE_LICENSE.txt
91  * The Laurie requirements are light, but if there is any
92  * problem with his license, simply remove the Lucre code.
93  * Although there are no other blind token algorithms in Open
94  * Transactions (yet. credlib is coming), the other functions
95  * will continue to operate.
96  * See Lucre on Github: https://github.com/benlaurie/lucre
97  * -----------------------------------------------------
98  * You should have received a copy of the GNU Affero General
99  * Public License along with this program. If not, see:
100  * http://www.gnu.org/licenses/
101  *
102  * If you would like to use this software outside of the free
103  * software license, please contact FellowTraveler.
104  * (Unfortunately many will run anonymously and untraceably,
105  * so who could really stop them?)
106  *
107  * DISCLAIMER:
108  * This program is distributed in the hope that it will be
109  * useful, but WITHOUT ANY WARRANTY; without even the implied
110  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
111  * PURPOSE. See the GNU Affero General Public License for
112  * more details.
113 
114  -----BEGIN PGP SIGNATURE-----
115  Version: GnuPG v1.4.9 (Darwin)
116 
117  iQIcBAEBAgAGBQJRSsfJAAoJEAMIAO35UbuOQT8P/RJbka8etf7wbxdHQNAY+2cC
118  vDf8J3X8VI+pwMqv6wgTVy17venMZJa4I4ikXD/MRyWV1XbTG0mBXk/7AZk7Rexk
119  KTvL/U1kWiez6+8XXLye+k2JNM6v7eej8xMrqEcO0ZArh/DsLoIn1y8p8qjBI7+m
120  aE7lhstDiD0z8mwRRLKFLN2IH5rAFaZZUvj5ERJaoYUKdn4c+RcQVei2YOl4T0FU
121  LWND3YLoH8naqJXkaOKEN4UfJINCwxhe5Ke9wyfLWLUO7NamRkWD2T7CJ0xocnD1
122  sjAzlVGNgaFDRflfIF4QhBx1Ddl6wwhJfw+d08bjqblSq8aXDkmFA7HeunSFKkdn
123  oIEOEgyj+veuOMRJC5pnBJ9vV+7qRdDKQWaCKotynt4sWJDGQ9kWGWm74SsNaduN
124  TPMyr9kNmGsfR69Q2Zq/FLcLX/j8ESxU+HYUB4vaARw2xEOu2xwDDv6jt0j3Vqsg
125  x7rWv4S/Eh18FDNDkVRChiNoOIilLYLL6c38uMf1pnItBuxP3uhgY6COm59kVaRh
126  nyGTYCDYD2TK+fI9o89F1297uDCwEJ62U0Q7iTDp5QuXCoxkPfv8/kX6lS6T3y9G
127  M9mqIoLbIQ1EDntFv7/t6fUTS2+46uCrdZWbQ5RjYXdrzjij02nDmJAm2BngnZvd
128  kamH0Y/n11lCvo1oQxM+
129  =uSzz
130  -----END PGP SIGNATURE-----
131  **************************************************************/
132 
133 #ifndef OPENTXS_CLIENT_OT_OTAPI_OT_HPP
134 #define OPENTXS_CLIENT_OT_OTAPI_OT_HPP
135 
136 #include "opentxs/client/OTAPI.hpp"
137 #include "opentxs/client/OT_ME.hpp"
139 
140 #ifndef OT_USE_CXX11
141 #include <cstdlib>
142 #endif
143 
144 #define OT_OTAPI_OT
145 
147 
148 typedef std::map<std::string, opentxs::OTDB::OfferDataNym*> SubMap;
149 typedef std::map<std::string, SubMap*> MapOfMaps;
150 typedef int32_t (*LambdaFunc)(const opentxs::OTDB::OfferDataNym& offer_data,
151  int32_t nIndex, const MapOfMaps& map_of_maps,
152  const SubMap& sub_map,
153  the_lambda_struct& extra_vals);
154 
156  opentxs::OTDB::OfferListNym& offerList);
157 EXPORT OT_OTAPI_OT int32_t find_strange_offers(
158  const opentxs::OTDB::OfferDataNym& offer_data, int32_t nIndex,
159  const MapOfMaps& map_of_maps, const SubMap& sub_map,
160  the_lambda_struct& extra_vals); // if 10 offers are printed
161  // for the SAME market,
162  // nIndex will be 0..9
163 EXPORT OT_OTAPI_OT int32_t
164  iterate_nymoffers_maps(MapOfMaps& map_of_maps,
165  LambdaFunc the_lambda); // low level. map_of_maps
166  // must be
167  // good. (assumed.)
168 EXPORT OT_OTAPI_OT int32_t
169  iterate_nymoffers_maps(MapOfMaps& map_of_maps, LambdaFunc the_lambda,
170  the_lambda_struct& extra_vals); // low level.
171  // map_of_maps
172  // must be good.
173  // (assumed.)
174 
175 EXPORT OT_OTAPI_OT int32_t
176  iterate_nymoffers_sub_map(const MapOfMaps& map_of_maps, SubMap& sub_map,
177  LambdaFunc the_lambda);
178 
179 EXPORT OT_OTAPI_OT int32_t
180  iterate_nymoffers_sub_map(const MapOfMaps& map_of_maps, SubMap& sub_map,
181  LambdaFunc the_lambda,
182  the_lambda_struct& extra_vals);
183 
185  const std::string& serverID, const std::string& nymID);
186 EXPORT OT_OTAPI_OT int32_t output_nymoffer_data(
187  const opentxs::OTDB::OfferDataNym& offer_data, int32_t nIndex,
188  const MapOfMaps& map_of_maps, const SubMap& sub_map,
189  the_lambda_struct& extra_vals); // if 10 offers are printed
190  // for the SAME market,
191  // nIndex will be 0..9
192 
193 extern std::string Args;
194 extern std::string HisAcct;
195 extern std::string HisNym;
196 extern std::string HisPurse;
197 extern std::string MyAcct;
198 extern std::string MyNym;
199 extern std::string MyPurse;
200 extern std::string Server;
201 
202 typedef enum {
203  NO_FUNC = 0,
233  GET_MINT = 30,
238 
240 {
241 public:
242  std::vector<std::string> the_vector; // used for returning a list of
243  // something.
244  std::string the_asset_acct; // for newoffer, we want to remove existing
245  // offers
246  // for the same accounts in certain cases.
247  std::string the_currency_acct; // for newoffer, we want to remove existing
248  // offers
249  // for the same accounts in certain cases.
250  std::string the_scale; // for newoffer as well.
251  std::string the_price; // for newoffer as well.
252  bool bSelling; // for newoffer as well.
253 
255 };
256 
258 {
259 public:
261  std::string serverID;
262  std::string nymID;
263  std::string nymID2;
264  std::string assetID;
265  std::string assetID2;
266  std::string accountID;
267  std::string accountID2;
268  std::string basket;
269  std::string strData;
270  std::string strData2;
271  std::string strData3;
272  std::string strData4;
273  std::string strData5;
274  bool bBool;
275  int32_t nData;
276  int64_t lData;
279  int32_t nRequestNum;
280 
281  OTAPI_Func();
282  OTAPI_Func(OTAPI_Func_Type theType, const std::string& p_serverID,
283  const std::string& p_nymID); // 3 args
284  OTAPI_Func(OTAPI_Func_Type theType, const std::string& p_serverID,
285  const std::string& p_nymID,
286  const std::string& p_strParam); // 4 args
287  OTAPI_Func(OTAPI_Func_Type theType, const std::string& p_serverID,
288  const std::string& p_nymID, const std::string& p_strParam,
289  int64_t p_lData); // 5 args
290  OTAPI_Func(OTAPI_Func_Type theType, const std::string& p_serverID,
291  const std::string& p_nymID, const std::string& p_strParam,
292  const std::string& p_strData); // 5 args
293  OTAPI_Func(OTAPI_Func_Type theType, const std::string& p_serverID,
294  const std::string& p_nymID, const std::string& p_nymID2,
295  const std::string& p_strData,
296  const std::string& p_strData2); // 6 args
297  OTAPI_Func(OTAPI_Func_Type theType, const std::string& p_serverID,
298  const std::string& p_nymID, const std::string& p_accountID,
299  const std::string& p_strParam, int64_t p_lData,
300  const std::string& p_strData2); // 7 args
301  OTAPI_Func(OTAPI_Func_Type theType, const std::string& p_serverID,
302  const std::string& p_nymID, const std::string& p_accountID,
303  const std::string& p_strParam, const std::string& p_strData,
304  int64_t p_lData2); // 7 args
305  OTAPI_Func(OTAPI_Func_Type theType, const std::string& p_serverID,
306  const std::string& p_nymID, const std::string& p_accountID,
307  const std::string& p_strParam, const std::string& p_strData,
308  const std::string& p_strData2); // 7 args
309  OTAPI_Func(OTAPI_Func_Type theType, const std::string& p_serverID,
310  const std::string& p_nymID, const std::string& p_assetID,
311  const std::string& p_basket, const std::string& p_accountID,
312  bool p_bBool, int32_t p_nTransNumsNeeded); // 8 args
313  OTAPI_Func(OTAPI_Func_Type theType, const std::string& p_serverID,
314  const std::string& p_nymID, const std::string& assetAccountID,
315  const std::string& currencyAcctID, const std::string& scale,
316  const std::string& minIncrement, const std::string& quantity,
317  const std::string& price, bool bSelling); // 10 args
318  ~OTAPI_Func();
319 
320  EXPORT OT_OTAPI_OT static void CopyVariables();
321  OT_OTAPI_OT void InitCustom();
322  OT_OTAPI_OT int32_t Run() const;
323  OT_OTAPI_OT std::string SendRequest(OTAPI_Func& theFunction,
324  const std::string& IN_FUNCTION) const;
325  OT_OTAPI_OT int32_t
326  SendRequestLowLevel(OTAPI_Func& theFunction,
327  const std::string& IN_FUNCTION) const;
328  OT_OTAPI_OT std::string SendRequestOnce(OTAPI_Func& theFunction,
329  const std::string& IN_FUNCTION,
330  bool bIsTransaction,
331  bool bWillRetryAfterThis,
332  bool& bCanRetryAfterThis) const;
333  OT_OTAPI_OT std::string SendTransaction(OTAPI_Func& theFunction,
334  const std::string& IN_FUNCTION);
335  OT_OTAPI_OT std::string SendTransaction(OTAPI_Func& theFunction,
336  const std::string& IN_FUNCTION,
337  int32_t nTotalRetries) const;
338 };
339 
340 #endif // OPENTXS_CLIENT_OT_OTAPI_OT_HPP
EXPORT OT_OTAPI_OT MapOfMaps * convert_offerlist_to_maps(opentxs::OTDB::OfferListNym &offerList)
EXPORT OT_OTAPI_OT int32_t output_nymoffer_data(const opentxs::OTDB::OfferDataNym &offer_data, int32_t nIndex, const MapOfMaps &map_of_maps, const SubMap &sub_map, the_lambda_struct &extra_vals)
std::string accountID
std::map< std::string, opentxs::OTDB::OfferDataNym * > SubMap
OT_OTAPI_OT int32_t SendRequestLowLevel(OTAPI_Func &theFunction, const std::string &IN_FUNCTION) const
#define OT_OTAPI_OT
int32_t nTransNumsNeeded
EXPORT static OT_OTAPI_OT void CopyVariables()
std::string Server
std::string the_scale
std::string basket
std::string HisAcct
OTAPI_Func_Type
OTAPI_Func_Type funcType
time64_t tData
int64_t time64_t
Definition: Common.hpp:209
int32_t nData
EXPORT OT_OTAPI_OT int32_t iterate_nymoffers_sub_map(const MapOfMaps &map_of_maps, SubMap &sub_map, LambdaFunc the_lambda)
EXPORT OT_OTAPI_OT opentxs::OTDB::OfferListNym * loadNymOffers(const std::string &serverID, const std::string &nymID)
std::string the_price
std::string serverID
OT_OTAPI_OT std::string SendTransaction(OTAPI_Func &theFunction, const std::string &IN_FUNCTION)
std::string the_asset_acct
OT_OTAPI_OT int32_t Run() const
std::string assetID2
std::string HisNym
std::string HisPurse
std::string MyPurse
int32_t nRequestNum
std::string Args
int64_t lData
std::vector< std::string > the_vector
std::string the_currency_acct
std::string strData2
EXPORT OT_OTAPI_OT int32_t find_strange_offers(const opentxs::OTDB::OfferDataNym &offer_data, int32_t nIndex, const MapOfMaps &map_of_maps, const SubMap &sub_map, the_lambda_struct &extra_vals)
OT_OTAPI_OT std::string SendRequestOnce(OTAPI_Func &theFunction, const std::string &IN_FUNCTION, bool bIsTransaction, bool bWillRetryAfterThis, bool &bCanRetryAfterThis) const
int32_t(* LambdaFunc)(const opentxs::OTDB::OfferDataNym &offer_data, int32_t nIndex, const MapOfMaps &map_of_maps, const SubMap &sub_map, the_lambda_struct &extra_vals)
std::string assetID
std::string MyNym
std::string strData3
OT_OTAPI_OT std::string SendRequest(OTAPI_Func &theFunction, const std::string &IN_FUNCTION) const
std::string strData
std::string strData5
std::string accountID2
std::map< std::string, SubMap * > MapOfMaps
OT_OTAPI_OT void InitCustom()
std::string MyAcct
EXPORT OT_OTAPI_OT int32_t iterate_nymoffers_maps(MapOfMaps &map_of_maps, LambdaFunc the_lambda)
std::string strData4
std::string nymID2
std::string nymID