00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "rsApiHandler.h"
00021 #include "currencyConvertorMS.h"
00022 #include "currencyConvertorH.h"
00023 #include "currencyConvertor.nsmap"
00024
00025
00026 char *countryCodeNames[] = {
00027 "AFA",
00028 "ALL",
00029 "DZD",
00030 "ARS",
00031 "AWG",
00032 "AUD",
00033 "BSD",
00034 "BHD",
00035 "BDT",
00036 "BBD",
00037 "BZD",
00038 "BMD",
00039 "BTN",
00040 "BOB",
00041 "BWP",
00042 "BRL",
00043 "GBP",
00044 "BND",
00045 "BIF",
00046 "XOF",
00047 "XAF",
00048 "KHR",
00049 "CAD",
00050 "CVE",
00051 "KYD",
00052 "CLP",
00053 "CNY",
00054 "COP",
00055 "KMF",
00056 "CRC",
00057 "HRK",
00058 "CUP",
00059 "CYP",
00060 "CZK",
00061 "DKK",
00062 "DJF",
00063 "DOP",
00064 "XCD",
00065 "EGP",
00066 "SVC",
00067 "EEK",
00068 "ETB",
00069 "EUR",
00070 "FKP",
00071 "GMD",
00072 "GHC",
00073 "GIP",
00074 "XAU",
00075 "GTQ",
00076 "GNF",
00077 "GYD",
00078 "HTG",
00079 "HNL",
00080 "HKD",
00081 "HUF",
00082 "ISK",
00083 "INR",
00084 "IDR",
00085 "IQD",
00086 "ILS",
00087 "JMD",
00088 "JPY",
00089 "JOD",
00090 "KZT",
00091 "KES",
00092 "KRW",
00093 "KWD",
00094 "LAK",
00095 "LVL",
00096 "LBP",
00097 "LSL",
00098 "LRD",
00099 "LYD",
00100 "LTL",
00101 "MOP",
00102 "MKD",
00103 "MGF",
00104 "MWK",
00105 "MYR",
00106 "MVR",
00107 "MTL",
00108 "MRO",
00109 "MUR",
00110 "MXN",
00111 "MDL",
00112 "MNT",
00113 "MAD",
00114 "MZM",
00115 "MMK",
00116 "NAD",
00117 "NPR",
00118 "ANG",
00119 "NZD",
00120 "NIO",
00121 "NGN",
00122 "KPW",
00123 "NOK",
00124 "OMR",
00125 "XPF",
00126 "PKR",
00127 "XPD",
00128 "PAB",
00129 "PGK",
00130 "PYG",
00131 "PEN",
00132 "PHP",
00133 "XPT",
00134 "PLN",
00135 "QAR",
00136 "ROL",
00137 "RUB",
00138 "WST",
00139 "STD",
00140 "SAR",
00141 "SCR",
00142 "SLL",
00143 "XAG",
00144 "SGD",
00145 "SKK",
00146 "SIT",
00147 "SBD",
00148 "SOS",
00149 "ZAR",
00150 "LKR",
00151 "SHP",
00152 "SDD",
00153 "SRG",
00154 "SZL",
00155 "SEK",
00156 "CHF",
00157 "SYP",
00158 "TWD",
00159 "TZS",
00160 "THB",
00161 "TOP",
00162 "TTD",
00163 "TND",
00164 "TRL",
00165 "USD",
00166 "AED",
00167 "UGX",
00168 "UAH",
00169 "UYU",
00170 "VUV",
00171 "VEB",
00172 "VND",
00173 "YER",
00174 "YUM",
00175 "ZMK",
00176 "ZWD",
00177 "TRY"
00178 };
00179
00180
00181
00182 int NumofCountryCodes = sizeof(countryCodeNames)/ sizeof(char *);
00183
00184
00185
00186 int getIdFromCountryCodes(char *incc) {
00187
00188
00189 int i;
00190
00191 for (i=0; i < NumofCountryCodes; i++) {
00192 if (!strcmp(incc,countryCodeNames[i]))
00193 return(i);
00194 }
00195 return(-100);
00196 }
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233 int
00234 msiConvertCurrency(msParam_t* inConvertFromParam, msParam_t* inConvertToParam,
00235 msParam_t* outRateParam,
00236 ruleExecInfo_t* rei )
00237 {
00238
00239 struct soap *soap = soap_new();
00240 struct _ns1__ConversionRate pair;
00241 struct _ns1__ConversionRateResponse rate;
00242 char response[10000];
00243
00244
00245 RE_TEST_MACRO( " Calling msiConvertCurrency" );
00246
00247
00248
00249 soap_init(soap);
00250 soap_set_namespaces(soap, currencyConvertor_namespaces);
00251
00252
00253
00254
00255
00256
00257
00258 pair.FromCurrency = (ns1__Currency) getIdFromCountryCodes((char *)inConvertFromParam->inOutStruct);
00259 pair.ToCurrency = (ns1__Currency) getIdFromCountryCodes((char *)inConvertToParam->inOutStruct);
00260
00261 if (soap_call___ns1__ConversionRate(soap, NULL, NULL, &pair, &rate) == SOAP_OK) {
00262 sprintf(response,"%f",rate.ConversionRateResult);
00263
00264 fillMsParam( outRateParam, NULL,
00265 STR_MS_T, response, NULL );
00266 return(0);
00267 }
00268 else {
00269 sprintf(response,"Error in execution of msiConvertCurrency::%s\n",soap->buf);
00270 fillMsParam( outRateParam, NULL,
00271 STR_MS_T, response, NULL );
00272 return(0);
00273 }
00274 }
00275