Commit f2b9334fb60d202356a5c9f600da9655b9024440
1 parent
ae3e8cdf
Exists in
SpeasyGet
Working from request - TBC
Showing
2 changed files
with
64 additions
and
12 deletions
Show diff stats
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 | */ | ... | ... |