#include "getAllDomains.h"

GetAllDomainsWorker::GetAllDomainsWorker(Handler *handler, Nan::Callback *callback) :
    AsyncWorker(callback), _handler(handler)
{
}

void GetAllDomainsWorker::Execute()
{
  std::string err;

  if (!this->_handler->getAllDomains(this->_list, err))
    SetErrorMessage(err.c_str());
}

void GetAllDomainsWorker::HandleOKCallback()
{
  v8::Local<v8::Array> ret = Nan::New<v8::Array>();
  std::size_t i;

  for (i = 0; i < this->_list.size(); i++) {
    ret->Set(i, this->_list[i].toObject());
  }

  v8::Local<v8::Value> argv[] = { Nan::Null(), ret };

  this->callback->Call(2, argv);
}

void GetAllDomainsWorker::HandleErrorCallback()
{
  v8::Local<v8::Value> argv[] = { v8::String::NewFromUtf8(Nan::GetCurrentContext()->GetIsolate(), this->ErrorMessage()), Nan::Null() };

  this->callback->Call(2, argv);
}