Commit f2b9334fb60d202356a5c9f600da9655b9024440

Authored by Erdogan Furkan
1 parent ae3e8cdf
Exists in SpeasyGet

Working from request - TBC

src/ParamGetImpl/SpeasyProxyInterface/ParamGetSpeasyProxy.cc
... ... @@ -21,9 +21,12 @@
21 21 #include "TimeUtil.hh"
22 22 #include <fstream>
23 23 #include "Helper.hh"
  24 +
  25 +#include <iostream>
24 26 #define CURL_STATICLIB
25 27 #include <curl/curl.h>
26 28 #include <curl/easy.h>
  29 +#include <cstdio>
27 30  
28 31 namespace AMDA {
29 32  
... ... @@ -233,27 +236,69 @@ TimeStamp ParamGetSpeasyProxy::init()
233 236 return _timeStamp;
234 237 }
235 238  
  239 +std::string ParamGetSpeasyProxy::getURLTime(double time){
  240 +
  241 + std::string newTime = TimeUtil::DD2ISO_TimeDate(TimeUtil::double2DD_TimeDate(time));
  242 + std::string delim = ":";
  243 + std::string toReplaceWith = "%3A";
  244 + size_t pos = 0;
  245 +
  246 + while ((pos = newTime.find(delim, pos)) != std::string::npos) {
  247 + newTime.replace(pos, delim.length(), toReplaceWith);
  248 + pos += toReplaceWith.length();
  249 + }
  250 +
  251 + // delim = ".000";
  252 + // newTime.erase(newTime.find(delim),newTime.find(delim) + delim.length());
  253 +
  254 + return newTime;
  255 +}
  256 +
  257 +std::string ParamGetSpeasyProxy::getSpeasyProxyLink(){
  258 + // http://172.200.0.14:6543/get_data?path=amda%2Fc1_b_gsm&start_time=2018-10-24T00%3A00%3A00&stop_time=2018-10-24T02%3A00%3A00&format=cdf&zstd_compression=false&output_format=CDF_ISTP&pickle_proto=3
  259 +
  260 + std::string path = "http://172.200.0.14:6543/get_data?path=";
  261 + std::string delim = "/";
  262 + std::string toReplaceWith = "%2F";
  263 + std::string paramId = _paramId;
  264 + size_t pos = 0;
  265 +
  266 + while ((pos = paramId.find(delim, pos)) != std::string::npos) {
  267 + paramId.replace(pos, delim.length(), toReplaceWith);
  268 + pos += toReplaceWith.length();
  269 + }
  270 + path += paramId + "&start_time=" + getURLTime(_currentInterval->_startTime);
  271 + path += "&stop_time=" + getURLTime(_currentInterval->_stopTime);
  272 + path += "&format=cdf&zstd_compression=false&output_format=CDF_ISTP&pickle_proto=3";
  273 +
  274 + return path;
  275 +}
236 276  
237 277 unsigned int ParamGetSpeasyProxy::write()
238 278 {
239 279 unsigned int result = 0;
240   -
241   - //std::string link = "http://172.200.0.14:6543/get_data?path=amda%2Fimf&start_time=2008-01-01T00%3A00%3A00&stop_time=2008-01-02T00%3A00%3A00&format=json&zstd_compression=false&pickle_proto=3";
242   - std::string localPath = "/home/amda_admin/AMDA/AMDA_Kernel/cdf_speasy.cdf";
  280 +
  281 + // Getting parameter ids
  282 + std::string timeParamId = "time";
  283 + std::string croptedParamId = _paramId;
  284 + std::string delim = "/";
  285 + croptedParamId.erase(0, croptedParamId.find(delim) + delim.length());
  286 +
  287 + // Creation of the data packet
  288 + SpeasyProxyParamDataPacket *packet= new SpeasyProxyParamDataPacket();
  289 + packet->init(_container,_type,_dim1,_dim2);
  290 +
  291 + // Downloading and loading FileReader
  292 + std::string localPath = download(getSpeasyProxyLink());
243 293 FileReaderCDF* fileReaderPtr = new FileReaderCDF();
244 294 bool isOpen = fileReaderPtr->open(localPath);
  295 +
  296 +
  297 +
245 298 if(isOpen)
246 299 {
247   - std::string timeParamId = "time";
248   - std::string croptedParamId = _paramId;
249   - std::string delim = "/";
250   - croptedParamId.erase(0, croptedParamId.find(delim) + delim.length());
251   -
252 300 // Call to getParamPacketData to get CDF data
253 301  
254   - SpeasyProxyParamDataPacket *packet= new SpeasyProxyParamDataPacket();
255   - packet->init(_container,_type,_dim1,_dim2);
256   -
257 302 fileReaderPtr->getParamPacketData(timeParamId, croptedParamId, packet);
258 303  
259 304  
... ... @@ -278,7 +323,8 @@ unsigned int ParamGetSpeasyProxy::write()
278 323 else {
279 324 // Nothing to do.
280 325 }
281   -
  326 + if (result != 0)
  327 + remove(localPath.c_str());
282 328 return result;
283 329 }
284 330  
... ...
src/ParamGetImpl/SpeasyProxyInterface/ParamGetSpeasyProxy.hh
... ... @@ -150,6 +150,12 @@ public:
150 150 */
151 151 TimeStamp init();
152 152  
  153 +
  154 + std::string getURLTime(double time);
  155 + std::string getSpeasyProxyLink();
  156 +
  157 +
  158 +
153 159 /**
154 160 * @overload DataWriter::updateInfo update parameter info in relation to the ParamGet
155 161 */
... ...