summary refs log tree commit diff stats
path: root/imagestore.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'imagestore.cpp')
-rw-r--r--imagestore.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/imagestore.cpp b/imagestore.cpp index 09bef92..5094569 100644 --- a/imagestore.cpp +++ b/imagestore.cpp
@@ -2,10 +2,14 @@
2 2
3#include <curlcpp/curl_easy.h> 3#include <curlcpp/curl_easy.h>
4 4
5#include <chrono>
5#include <fstream> 6#include <fstream>
6#include <sstream> 7#include <sstream>
8#include <thread>
7 9
8Magick::Image imagestore::get(std::string key, std::string url) const { 10Magick::Image imagestore::get(std::string key, std::string url) const {
11 std::lock_guard lock(mutex_);
12
9 std::string filename = path_ + "/" + key; 13 std::string filename = path_ + "/" + key;
10 14
11 Magick::Image pic; 15 Magick::Image pic;
@@ -13,6 +17,9 @@ Magick::Image imagestore::get(std::string key, std::string url) const {
13 if (std::ifstream(filename)) { 17 if (std::ifstream(filename)) {
14 pic.read(filename); 18 pic.read(filename);
15 } else { 19 } else {
20 // This is to avoid getting rate limited.
21 std::this_thread::sleep_for(std::chrono::milliseconds(50));
22
16 std::ostringstream imgbuf; 23 std::ostringstream imgbuf;
17 curl::curl_ios<std::ostringstream> imgios(imgbuf); 24 curl::curl_ios<std::ostringstream> imgios(imgbuf);
18 curl::curl_easy imghandle(imgios); 25 curl::curl_easy imghandle(imgios);
@@ -50,3 +57,11 @@ Magick::Image imagestore::get(std::string key, std::string url) const {
50 57
51 return pic; 58 return pic;
52} 59}
60
61void imagestore::cleanup() const {
62 std::lock_guard lock(mutex_);
63
64 for (const auto& entry : std::filesystem::directory_iterator(path_)) {
65 std::filesystem::remove_all(entry);
66 }
67}