在Ruby / Rails中下载,解压缩和解析文件

时间:2014-01-14 01:18:37

标签: ruby-on-rails ruby soap bing-api

我正在使用非常令人沮丧的Bing Ads Api(SOAP),虽然我已成功执行了我需要的大部分SOAP请求,但最后一个却给了我麻烦。

该团队告诉我要获取广告系列统计信息(点击次数,展示次数,转化次数等),我需要生成报告(传递参数),然后从响应和“民意调查”中获取报告ID “带有另一个SOAP请求的报告,它生成一个zip文件的下载URL。

我已经成功完成了以上所有操作,下载网址(仅适用于5分钟)看起来像这样:

https://download.api.bingads.microsoft.com/ReportDownload/Download.aspx?q=k471B%2fhtf62jwhaelHhu0EqMSfWCvWSpOOBRu76%2bUC%2bgATLEobf%2bMYiVKX0CBOr52d95ViPXJeKbvAbnb%2bSK%2bGumYlSYQT80kTtt5waa5z%2fmbeXT%2fPFqde95DFR1%2b4yQgekl5T6gKipbMFcQJOn5aGYmtI1ALcREIwJRA%2bi%2b3jOE55Cl69TAzBOUWvB73NAKX6S0Y7zF%2bERnSu7TJnJfmqHopWihGtkeMzoqqwsJVgVDEKz84RrPPaDOs2pxg3qE%2bLSrEwu2cpa7bP%2f9t%2fjUVtIgiZMbMjzSf73VnAUSpYNz

当我转到该URL时,它开始下载一个曾经解压缩的zip文件,它确实包含我需要解析的XML,以便向我正在创建的Web应用程序的用户报告。

我的问题是 - 在应用程序中始终如一地获取XML的最佳方法是什么?对于应用程序而言,这似乎是一种艰难的方法,考虑到每次用户加载Bing页面或更改日期范围时都必须进行上述操作,但它们告诉我它是唯一的方法。

我一直在寻找的路径是使用HTTParty获取报告,然后使用RubyZip解压缩(由于未定义的转换错误问题而未成功)但我不确定该怎么做。存储在数据库中(可能是暂时的)?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

如果没有更好的方法来使用API​​,请缓存结果(在数据库或文件系统中)并使用将定期运行的rake任务刷新数据。如果这样做,请考虑为用户添加一个选项,以请求立即刷新。

答案 1 :(得分:0)

使用后台任务下载zip文件然后处理它,可以使用delayed_job或resque之类的东西来启动带有URL的作业。