Implement V8 -> C++ conversion of net::HttpResponseHeaders.
This commit is contained in:
parent
9c04d18387
commit
32113bf7f9
2 changed files with 32 additions and 0 deletions
|
@ -165,6 +165,35 @@ v8::Local<v8::Value> Converter<net::HttpResponseHeaders*>::ToV8(
|
||||||
return ConvertToV8(isolate, response_headers);
|
return ConvertToV8(isolate, response_headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Converter<net::HttpResponseHeaders*>::FromV8(
|
||||||
|
v8::Isolate* isolate,
|
||||||
|
v8::Local<v8::Value> val,
|
||||||
|
net::HttpResponseHeaders* out) {
|
||||||
|
if (!val->IsObject()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
auto context = isolate->GetCurrentContext();
|
||||||
|
auto headers = v8::Local<v8::Object>::Cast(val);
|
||||||
|
auto keys = headers->GetOwnPropertyNames();
|
||||||
|
for (uint32_t i = 0; i < keys->Length(); i++) {
|
||||||
|
v8::Local<v8::String> key, value;
|
||||||
|
if (!keys->Get(i)->ToString(context).ToLocal(&key)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!headers->Get(key)->ToString(context).ToLocal(&value)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
v8::String::Utf8Value key_utf8(key);
|
||||||
|
v8::String::Utf8Value value_utf8(value);
|
||||||
|
std::string k(*key_utf8, key_utf8.length());
|
||||||
|
std::string v(*value_utf8, value_utf8.length());
|
||||||
|
std::ostringstream tmp;
|
||||||
|
tmp << k << ": " << v;
|
||||||
|
out->AddHeader(tmp.str());
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace mate
|
} // namespace mate
|
||||||
|
|
||||||
namespace atom {
|
namespace atom {
|
||||||
|
|
|
@ -49,6 +49,9 @@ template <>
|
||||||
struct Converter<net::HttpResponseHeaders*> {
|
struct Converter<net::HttpResponseHeaders*> {
|
||||||
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
|
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
|
||||||
net::HttpResponseHeaders* headers);
|
net::HttpResponseHeaders* headers);
|
||||||
|
static bool FromV8(v8::Isolate* isolate,
|
||||||
|
v8::Local<v8::Value> val,
|
||||||
|
net::HttpResponseHeaders* out);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace mate
|
} // namespace mate
|
||||||
|
|
Loading…
Add table
Reference in a new issue