Ejemplo n.º 1
0
api_return QueueApi::handleGetBundle(ApiRequest& aRequest) {
    auto b = getBundle(aRequest);

    auto j = Serializer::serializeItem(b, bundlePropertyHandler);
    aRequest.setResponseBody(j);
    return websocketpp::http::status_code::ok;
}
Ejemplo n.º 2
0
JSModulesUnbundle::Module RAMBundleRegistry::getModule(
    uint32_t bundleId, uint32_t moduleId) {
  if (m_bundles.find(bundleId) == m_bundles.end()) {
    if (!m_factory) {
      throw std::runtime_error(
        "You need to register factory function in order to "
        "support multiple RAM bundles."
      );
    }

    auto bundlePath = m_bundlePaths.find(bundleId);
    if (bundlePath == m_bundlePaths.end()) {
      throw std::runtime_error(
        "In order to fetch RAM bundle from the registry, its file "
        "path needs to be registered first."
      );
    }
    m_bundles.emplace(bundleId, m_factory(bundlePath->second));
  }

  auto module = getBundle(bundleId)->getModule(moduleId);
  if (bundleId == MAIN_BUNDLE_ID) {
    return module;
  }
  return {
    folly::to<std::string>("seg-", bundleId, '_', std::move(module.name)),
    std::move(module.code),
  };
}
Ejemplo n.º 3
0
api_return QueueApi::handleRemoveBundle(ApiRequest& aRequest) {
    auto removeFinished = JsonUtil::getOptionalFieldDefault<bool>("remove_finished", aRequest.getRequestBody(), false);

    auto b = getBundle(aRequest);
    QueueManager::getInstance()->removeBundle(b, removeFinished);
    return websocketpp::http::status_code::ok;
}
Ejemplo n.º 4
0
api_return QueueApi::handleUpdateBundle(ApiRequest& aRequest) {
    auto b = getBundle(aRequest);
    const auto& reqJson = aRequest.getRequestBody();

    // Priority
    if (reqJson.find("priority") != reqJson.end()) {
        QueueManager::getInstance()->setBundlePriority(b, Deserializer::deserializePriority(reqJson, false));
    }

    return websocketpp::http::status_code::ok;
}
Ejemplo n.º 5
0
api_return QueueApi::handleShareBundle(ApiRequest& aRequest) {
    auto b = getBundle(aRequest);
    if (!b->isFinished()) {
        aRequest.setResponseErrorStr("This action can only be performed for finished bundles");
        return websocketpp::http::status_code::bad_request;
    }

    auto skipScan = JsonUtil::getOptionalFieldDefault<bool>("skip_scan", aRequest.getRequestBody(), false);
    QueueManager::getInstance()->shareBundle(b, skipScan);
    return websocketpp::http::status_code::ok;
}
Ejemplo n.º 6
0
	api_return QueueApi::handleRemoveBundleSource(ApiRequest& aRequest) {
		auto b = getBundle(aRequest);
		auto user = Deserializer::getUser(aRequest.getStringParam(2), false);

		auto removed = QueueManager::getInstance()->removeBundleSource(b, user, QueueItem::Source::FLAG_REMOVED);
		aRequest.setResponseBody({
			{ "count", removed },
		});

		return websocketpp::http::status_code::ok;
	}
Ejemplo n.º 7
0
	api_return QueueApi::handleSearchBundle(ApiRequest& aRequest) {
		auto b = getBundle(aRequest);
		auto searches = QueueManager::getInstance()->searchBundleAlternates(b, true);

		if (searches == 0) {
			aRequest.setResponseErrorStr("No files to search for");
			return websocketpp::http::status_code::bad_request;
		}

		aRequest.setResponseBody({
			{ "sent", searches },
		});

		return websocketpp::http::status_code::ok;
	}
Ejemplo n.º 8
0
	api_return QueueApi::handleGetBundleSources(ApiRequest& aRequest) {
		auto b = getBundle(aRequest);
		auto sources = QueueManager::getInstance()->getBundleSources(b);

		auto ret = json::array();
		for (const auto& s : sources) {
			ret.push_back({
				{ "user", Serializer::serializeHintedUser(s.getUser()) },
				{ "last_speed", s.getUser().user->getSpeed() },
				{ "files", s.files },
				{ "size", s.size },
			});
		}

		aRequest.setResponseBody(ret);
		return websocketpp::http::status_code::ok;
	}
Ejemplo n.º 9
0
	api_return QueueApi::handleUpdateBundle(ApiRequest& aRequest) {
		auto b = getBundle(aRequest);
		const auto& reqJson = aRequest.getRequestBody();

		// Priority
		if (reqJson.find("priority") != reqJson.end()) {
			QueueManager::getInstance()->setBundlePriority(b, Deserializer::deserializePriority(reqJson, false));
		}

		if (reqJson.find("auto_priority") != reqJson.end()) {
			auto autoPrio = JsonUtil::getField<bool>("auto_priority", reqJson);
			if (autoPrio != b->getAutoPriority()) {
				QueueManager::getInstance()->toggleBundleAutoPriority(b);
			}
		}

		return websocketpp::http::status_code::ok;
	}
Ejemplo n.º 10
0
Extension::Validity Extension::validate()
{
    // Skips the validation if already done.
    if( m_validity != UnknownValidity )
    {
        return m_validity;
    }

    // Retrieves the extension point.
    Runtime * rntm( Runtime::getDefault() );
     ::boost::shared_ptr< ExtensionPoint >  point( rntm->findExtensionPoint(m_point) );

    // Checks that the point exists.
    if( !point )
    {
        throw RuntimeException(m_point + " : invalid point reference.");
    }

    // Validates the extension.
    ::boost::shared_ptr< io::Validator >   validator( point->getExtensionValidator() );
    OSLM_ASSERT("Sorry, validator creation failed for point "<<point->getIdentifier(), validator );

    // Check extension XML Node <extension id="xxx" implements="yyy" >...</extension>
    validator->clearErrorLog();
    if( validator->validate( m_xmlNode ) == true )
    {
        m_validity = Valid;
    }
    else
    {
        m_validity = Invalid;
        const std::string   identifier = m_id.empty() ? "anonymous" : m_id;
        OSLM_ERROR("In bundle " << getBundle()->getIdentifier() << ". " << identifier
                << ": invalid extension XML element node does not respect schema. Verification error log is : "
                << std::endl << validator->getErrorLog() );
    }

    return m_validity;
}
Ejemplo n.º 11
0
		std::string BundleEvent::getMessage() const
		{
			switch (getAction())
			{
			case BUNDLE_DELETED:
				return "bundle " + getBundle().toString() + " deleted";
			case BUNDLE_CUSTODY_ACCEPTED:
				return "custody accepted for " + getBundle().toString();
			case BUNDLE_FORWARDED:
				return "bundle " + getBundle().toString() + " forwarded";
			case BUNDLE_DELIVERED:
				return "bundle " + getBundle().toString() + " delivered";
			case BUNDLE_RECEIVED:
				return "bundle " + getBundle().toString() + " received";
			case BUNDLE_STORED:
				return "bundle " + getBundle().toString() + " stored";
			default:
				break;
			}

			return "unkown";
		}
Ejemplo n.º 12
0
api_return QueueApi::handleSearchBundle(ApiRequest& aRequest) {
    auto b = getBundle(aRequest);
    QueueManager::getInstance()->searchBundleAlternates(b, true);
    return websocketpp::http::status_code::ok;
}