Skip to content

Instantly share code, notes, and snippets.

@happyjake
Created September 4, 2012 17:10
Show Gist options
  • Save happyjake/3623619 to your computer and use it in GitHub Desktop.
Save happyjake/3623619 to your computer and use it in GitHub Desktop.
node_addon util
void GetArgAsStdString(const Arguments& args, int n, std::string& str) {
Local<String> inbuf_str = args[n].As<String>();
str.resize(inbuf_str->Utf8Length());
inbuf_str->WriteUtf8((char *) &(str[0]));
}
bool GetObjValAsUInteger(Handle<Object> obj, const char *key, size_t& uintVal) {
Local<String> k = String::New(key);
if (!obj->Has(k)) {
return false;
}
Local<Value> val = obj->Get(k);
uintVal = val->Uint32Value();
return true;
}
bool GetObjValAsString(Handle<Object> obj, const char *key, std::string& str) {
Local<String> k = String::New(key);
if (!obj->Has(k)) {
return false;
}
Local<Value> val = obj->Get(k);
if (!val->IsString()) {
return false;
}
Local<String> strVal = val.As<String>();
str.resize(strVal->Utf8Length());
strVal->WriteUtf8((char *) &(str[0]));
return true;
}
bool GetBufferFromString(const std::string& str_b64, RBBuffer& buffer) {
size_t buff_size;
char *buff = base64_decode((char *) str_b64.c_str(), str_b64.size(), &buff_size);
if (!buff) {
return false;
}
buffer.Reset();
buffer.Write(buff, buff_size);
free(buff);
return true;
}
bool GetObjValAsBase64Buffer(Handle<Object> obj, const char *key, RBBuffer& buffer) {
std::string str_b64;
if (!GetObjValAsString(obj, key, str_b64)) {
return false;
}
return GetBufferFromString(str_b64, buffer);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment