summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2020-08-21 14:24:01 -0400
committerGlenn Smith <glenn@vector35.com>2020-09-14 17:24:08 -0400
commit33e31719d37deed58cfe709bf475b80fece8c34a (patch)
tree77850624b400089f164ed48c879240f72b9d16f3 /binaryninjaapi.h
parent1acc58d472470f96f12ac4dfc78dc221775d18d3 (diff)
Custom request types and data transfer for DownloadProvider
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 5be335bf..0348c52b 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -4735,13 +4735,24 @@ __attribute__ ((format (printf, 1, 2)))
static void DestroyInstanceCallback(void* ctxt);
static int PerformRequestCallback(void* ctxt, const char* url);
+ static int PerformCustomRequestCallback(void* ctxt, const char* method, const char* url, uint64_t headerCount, const char* const* headerKeys, const char* const* headerValues, BNDownloadInstanceResponse** response);
+ static void PerformFreeResponse(void* ctxt, BNDownloadInstanceResponse* response);
virtual void DestroyInstance();
public:
+ struct Response
+ {
+ uint16_t statusCode;
+ std::unordered_map<std::string, std::string> headers;
+ };
+
virtual int PerformRequest(const std::string& url) = 0;
+ virtual int PerformCustomRequest(const std::string& method, const std::string& url, const std::unordered_map<std::string, std::string>& headers, Response& response) = 0;
int PerformRequest(const std::string& url, BNDownloadInstanceOutputCallbacks* callbacks);
+ int PerformCustomRequest(const std::string& method, const std::string& url, const std::unordered_map<std::string, std::string>& headers, Response& response, BNDownloadInstanceInputOutputCallbacks* callbacks);
+ uint64_t ReadDataCallback(uint8_t* data, uint64_t len);
uint64_t WriteDataCallback(uint8_t* data, uint64_t len);
bool NotifyProgressCallback(uint64_t progress, uint64_t total);
void SetError(const std::string& error);
@@ -4755,6 +4766,7 @@ __attribute__ ((format (printf, 1, 2)))
virtual ~CoreDownloadInstance() {};
virtual int PerformRequest(const std::string& url) override;
+ virtual int PerformCustomRequest(const std::string& method, const std::string& url, const std::unordered_map<std::string, std::string>& headers, DownloadInstance::Response& response) override;
};
class DownloadProvider: public StaticCoreRefCountObject<BNDownloadProvider>