Polyphase Game Engine
Loading...
Searching...
No Matches
HttpResponse.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdint.h>
4#include <string>
5#include <vector>
6
7#include "PolyphaseAPI.h"
10
11class Stream;
12class Texture;
13class SoundWave;
14
16{
17public:
18 HttpResponse() = default;
19
20 int GetStatus() const { return mStatusCode; }
21 HttpError GetError() const { return mError; }
22 const std::string& GetErrorMessage()const { return mErrorMessage; }
23 const HttpHeaderMap& GetHeaders() const { return mHeaders; }
24 const std::vector<uint8_t>& GetBody() const { return mBody; }
25 const std::string& GetFinalUrl() const { return mFinalUrl; }
26
27 bool IsSuccess() const { return HttpStatusIsSuccess(mStatusCode) && mError == HttpError::None; }
28
29 // Header lookup (case-insensitive). Returns "" when missing.
30 const std::string& GetHeader(const std::string& name) const;
31 bool HasHeader(const std::string& name) const;
32
33 // Body-as-string view. Doesn't copy; reinterprets the byte buffer as a
34 // std::string_view-equivalent (returned by value as std::string for ABI
35 // simplicity). Use GetBody() for raw byte access.
36 std::string GetBodyAsString() const;
37
38 // Wraps the body as a Stream without copying. The Stream's lifetime must
39 // not exceed this HttpResponse's lifetime.
40 Stream GetStream() const;
41
42 // Decode the body as a PNG/JPG/TGA texture. Returns nullptr on failure.
43 // The returned Texture is allocated via the engine factory; callers own
44 // the lifetime via AssetRef in normal use.
45 Texture* GetTexture() const;
46
47 // Decode the body as a WAV or OGG sound. Format detected via magic bytes.
48 // Returns nullptr on failure.
49 SoundWave* GetSoundWave() const;
50
51 // Mutators (used by HttpClient internals).
52 void SetStatus(int code) { mStatusCode = code; }
53 void SetError(HttpError err, std::string msg = {}) { mError = err; mErrorMessage = std::move(msg); }
54 void SetFinalUrl(std::string url) { mFinalUrl = std::move(url); }
55 HttpHeaderMap& MutableHeaders() { return mHeaders; }
56 std::vector<uint8_t>& MutableBody() { return mBody; }
57
58private:
59 int mStatusCode = 0;
61 std::string mErrorMessage;
62 HttpHeaderMap mHeaders;
63 std::vector<uint8_t> mBody;
64 std::string mFinalUrl;
65};
std::map< std::string, std::string, HttpHeaderLess > HttpHeaderMap
Definition HttpRequest.h:17
bool HttpStatusIsSuccess(int statusCode)
Definition HttpTypes.cpp:52
HttpError
Definition HttpTypes.h:21
Export macros for Polyphase Engine symbols.
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Definition HttpResponse.h:16
bool IsSuccess() const
Definition HttpResponse.h:27
HttpHeaderMap & MutableHeaders()
Definition HttpResponse.h:55
HttpResponse()=default
void SetStatus(int code)
Definition HttpResponse.h:52
void SetFinalUrl(std::string url)
Definition HttpResponse.h:54
const std::vector< uint8_t > & GetBody() const
Definition HttpResponse.h:24
void SetError(HttpError err, std::string msg={})
Definition HttpResponse.h:53
std::vector< uint8_t > & MutableBody()
Definition HttpResponse.h:56
const HttpHeaderMap & GetHeaders() const
Definition HttpResponse.h:23
const std::string & GetFinalUrl() const
Definition HttpResponse.h:25
int GetStatus() const
Definition HttpResponse.h:20
const std::string & GetErrorMessage() const
Definition HttpResponse.h:22
HttpError GetError() const
Definition HttpResponse.h:21
Definition SoundWave.h:6
Definition Stream.h:21
Definition Texture.h:10