};
function MediaControllerServer(data) {
+ var _iconURI = null;
+
Object.defineProperties(this, {
playbackInfo: {
value: new MediaControllerPlaybackInfo(data),
writable: false,
enumerable: true
+ },
+ iconURI: {
+ get: function() {
+ return _iconURI;
+ },
+ set: function(v) {
+ _iconURI = edit_.isAllowed ? (v ? v : null) : _iconURI;
+ },
+ enumerable: true
}
});
}
edit_.disallow();
};
+MediaControllerServer.prototype.updateIconURI = function(iconURI) {
+ var args = validator_.validateArgs(arguments, [
+ {name: 'iconURI', type: types_.STRING, nullable: true}
+ ]);
+
+ var data = {
+ iconURI: args.iconURI
+ };
+
+ var result = native_.callSync('MediaControllerServer_updateIconURI', data);
+ if (native_.isFailure(result)) {
+ throw new WebAPIException(WebAPIException.UNKNOWN_ERR, native_.getErrorObject(result).message);
+ }
+
+ edit_.allow();
+ this.iconURI = args.iconURI;
+ edit_.disallow();
+};
+
MediaControllerServer.prototype.updatePlaybackPosition = function(position) {
var args = validator_.validateArgs(arguments, [
{name: 'position', type: types_.UNSIGNED_LONG_LONG}
}.bind(this),
set: function() {},
enumerable: true
+ },
+ iconURI: {
+ get: function() {
+ var result = native_.callSync('MediaControllerServerInfo_getIconURI', {name: this.name});
+ if (native_.isFailure(result)) {
+ throw new native_.getErrorObject(result);
+ }
+ var data = native_.getResultObject(result);
+ return data.iconURI;
+ }.bind(this),
+ set: function() {},
+ enumerable: true
}
});
}
return PlatformResult(ErrorCode::NO_ERROR);
}
+PlatformResult MediaControllerClient::GetServerIconURI(const std::string& name, common::optional<std::string>* icon_uri) {
+ ScopeLogger();
+
+ char* icon_uri_str = nullptr;
+ SCOPE_EXIT {
+ free(icon_uri_str);
+ };
+
+ int ret = mc_client_get_server_icon(handle_, name.c_str(), &icon_uri_str);
+ if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
+ return PlatformResult(ErrorCode::UNKNOWN_ERR);
+ }
+
+ *icon_uri = nullptr;
+ if (nullptr != icon_uri_str) {
+ *icon_uri = std::string(icon_uri_str);
+ }
+
+ return PlatformResult(ErrorCode::NO_ERROR);
+}
+
PlatformResult MediaControllerClient::SetServerStatusChangeListener(const JsonCallback& callback) {
ScopeLogger();
#include <string>
#include "common/platform_result.h"
+#include "common/optional.h"
#include "mediacontroller/mediacontroller_utils.h"
double position);
common::PlatformResult SetPlaylistUpdateListener(const JsonCallback& callback);
common::PlatformResult UnsetPlaylistUpdateListener();
+ common::PlatformResult GetServerIconURI(const std::string& name, common::optional<std::string>* icon_uri);
private:
mc_client_h handle_;
REGISTER_SYNC("MediaControllerServer_updatePlaybackItem",
MediaControllerServerUpdatePlaybackItem);
REGISTER_ASYNC("MediaControllerServer_getAllPlaylists", MediaControllerServerGetAllPlaylists);
+ REGISTER_SYNC("MediaControllerServer_updateIconURI", MediaControllerServerUpdateIconURI);
// client
REGISTER_SYNC("MediaControllerManager_getClient", MediaControllerManagerGetClient);
MediaControllerServerInfoRemovePlaylistUpdateListener);
REGISTER_ASYNC("MediaControllerServerInfo_getAllPlaylists",
MediaControllerServerInfoGetAllPlaylists);
+ REGISTER_SYNC("MediaControllerServerInfo_getIconURI",
+ MediaControllerServerInfoGetIconURI);
// playlist
REGISTER_SYNC("MediaControllerPlaylist_addItem", MediaControllerPlaylistAddItem);
ReportSuccess(out);
}
+void MediaControllerInstance::MediaControllerServerUpdateIconURI(const picojson::value& args,
+ picojson::object& out) {
+ ScopeLogger();
+ CHECK_EXIST(args, "iconURI", out);
+
+ if (!server_) {
+ LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occured."), &out,
+ ("Failed: server_"));
+ return;
+ }
+
+ const char* icon_uri = nullptr;
+ if (args.get("iconURI").is<std::string>()) {
+ icon_uri = args.get("iconURI").get<std::string>().c_str();
+ }
+ else if (!args.get("iconURI").is<picojson::null>()) {
+ LogAndReportError(PlatformResult(ErrorCode::INVALID_VALUES_ERR,
+ "Icon URI must be a string or null."),
+ &out,
+ ("Icon URI is not a string or null."));
+ return;
+ }
+
+ PlatformResult result = server_->UpdateIconURI(icon_uri);
+ if (!result) {
+ LogAndReportError(result, &out, ("Failed server_->UpdateIconURI()"));
+ return;
+ }
+
+ ReportSuccess(out);
+}
+
void MediaControllerInstance::MediaControllerServerUpdatePlaybackPosition(
const picojson::value& args, picojson::object& out) {
ScopeLogger();
ReportSuccess(out);
}
+void MediaControllerInstance::MediaControllerServerInfoGetIconURI(const picojson::value& args,
+ picojson::object& out) {
+ ScopeLogger();
+ CHECK_ARGS(args, "name", std::string, out);
+
+ if (!client_) {
+ LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occured."), &out,
+ ("Failed: client_"));
+ return;
+ }
+
+ std::string server_name = args.get("name").get<std::string>();
+
+ common::optional<std::string> icon_uri;
+ PlatformResult status = client_->GetServerIconURI(server_name, &icon_uri);
+ if (!status) {
+ LogAndReportError(status, &out, ("Failed: client_->GetServerIconURI()"));
+ return;
+ }
+
+ picojson::object result;
+ if (icon_uri) {
+ result["iconURI"] = picojson::value(*icon_uri);
+ }
+ else {
+ result["iconURI"] = picojson::value();
+ }
+
+ ReportSuccess(picojson::value(result), out);
+}
+
+
void MediaControllerInstance::MediaControllerPlaylistAddItem(const picojson::value& args,
picojson::object& out) {
ScopeLogger();
void MediaControllerServerDeletePlaylist(const picojson::value& args, picojson::object& out);
void MediaControllerServerUpdatePlaybackItem(const picojson::value& args, picojson::object& out);
void MediaControllerServerGetAllPlaylists(const picojson::value& args, picojson::object& out);
+ void MediaControllerServerUpdateIconURI(const picojson::value& args, picojson::object& out);
// client
void MediaControllerManagerGetClient(const picojson::value& args, picojson::object& out);
void MediaControllerServerInfoRemovePlaylistUpdateListener(const picojson::value& args,
picojson::object& out);
void MediaControllerServerInfoGetAllPlaylists(const picojson::value& args, picojson::object& out);
+ void MediaControllerServerInfoGetIconURI(const picojson::value& args, picojson::object& out);
// playlist
void MediaControllerPlaylistAddItem(const picojson::value& args, picojson::object& out);
return PlatformResult(ErrorCode::NO_ERROR);
}
+common::PlatformResult MediaControllerServer::UpdateIconURI(const char* icon_uri) {
+ ScopeLogger();
+ int ret = mc_server_set_icon(handle_, icon_uri);
+ if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
+ return LogAndCreateResult(
+ ErrorCode::UNKNOWN_ERR, "Error setting server icon uri",
+ ("mc_server_set_icon() error: %d, message: %s", ret, get_error_message(ret)));
+ }
+ return PlatformResult(ErrorCode::NO_ERROR);
+}
+
PlatformResult MediaControllerServer::MediaControllerPlaylistAddItem(
const std::string& name, const std::string& index, const picojson::object& metadata) {
ScopeLogger();
const picojson::object& metadata);
common::PlatformResult MediaControllerPlaylistGetItems(const std::string& name,
picojson::array* items);
+ common::PlatformResult UpdateIconURI(const char* icon_uri);
private:
mc_server_h handle_;