);
};
- this.addPlaybackInfoChangeListener = function(listener) {
+ this.addPlaybackInfoChangeListener = function() {
var args = [_serverName].concat(Array.prototype.slice.call(arguments));
return addPlaybackInfoChangeListener.apply(this, args);
};
serverGetAllPlaylists.apply(this, arguments);
};
+MediaControllerPlaylists.prototype.getPlaylist = function() {
+ var args = validator_.validateArgs(arguments, [
+ {
+ name: 'playlistName',
+ type: types_.STRING,
+ optional: false,
+ nullable: false
+ }
+ ]);
+
+ var data = {
+ playlistName: args.playlistName
+ };
+
+ var result = native_.callSync('MediaControllerPlaylistsGetPlaylist', data);
+
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
+
+ return new MediaControllerPlaylist(native_.getResultObject(result));
+};
+
var MediaControllerPlaylistsInfo = function(serverName) {
var _serverName = serverName;
this.removePlaylistUpdateListener = function(watchId) {
removePlaylistUpdateListener(watchId);
};
+
+ this.getPlaylist = function() {
+ var args = validator_.validateArgs(arguments, [
+ {
+ name: 'playlistName',
+ type: types_.STRING,
+ optional: false,
+ nullable: false
+ }
+ ]);
+
+ var data = {
+ serverName: _serverName,
+ playlistName: args.playlistName
+ };
+
+ var result = native_.callSync('MediaControllerPlaylistsInfoGetPlaylist', data);
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
+
+ return new MediaControllerPlaylist(native_.getResultObject(result));
+ };
};
exports = new MediaControllerManager();
REGISTER_METHOD(MediaControllerDisplayRotationInfoAddChangeListener);
REGISTER_METHOD(MediaControllerDisplayRotationInfoRemoveChangeListener);
+ // playlists
+ REGISTER_METHOD(MediaControllerPlaylistsGetPlaylist);
+
// playlists_info
REGISTER_METHOD(MediaControllerPlaylistsInfoSendPlaybackItem);
+ REGISTER_METHOD(MediaControllerPlaylistsInfoGetPlaylist);
#undef REGISTER_METHOD
}
ReportSuccess(out);
}
+void MediaControllerInstance::MediaControllerPlaylistsInfoGetPlaylist(const picojson::value& args,
+ picojson::object& out) {
+ ScopeLogger();
+
+ CHECK_ARGS(args, kServerName, std::string, out);
+ CHECK_ARGS(args, kPlaylistName, std::string, out);
+
+ const std::string& server_name = args.get(kServerName).get<std::string>();
+ const std::string& playlist_name = args.get(kPlaylistName).get<std::string>();
+ picojson::value playlist_info = picojson::value(picojson::object());
+ picojson::object& playlist_obj = playlist_info.get<picojson::object>();
+
+ PlatformResult result = utils::GetPlaylist(server_name, playlist_name, &playlist_obj);
+ if (!result) {
+ LogAndReportError(result, &out, ("Failed: utils::GetPlaylist"));
+ return;
+ }
+
+ ReportSuccess(playlist_info, out);
+}
+
void MediaControllerInstance::MediaControllerServerInfoGetIconURI(const picojson::value& args,
picojson::object& out) {
ScopeLogger();
ReportSuccess(out);
}
+void MediaControllerInstance::MediaControllerPlaylistsGetPlaylist(const picojson::value& args,
+ picojson::object& out) {
+ ScopeLogger();
+ CHECK_ARGS(args, kPlaylistName, std::string, out);
+
+ const std::string& playlist_name = args.get(kPlaylistName).get<std::string>();
+ const std::string& app_id = common::CurrentApplication::GetInstance().GetApplicationId();
+ picojson::value playlist_info = picojson::value(picojson::object());
+ picojson::object& playlist_obj = playlist_info.get<picojson::object>();
+
+ auto result = utils::GetPlaylist(app_id, playlist_name, &playlist_obj);
+ if (!result) {
+ LogAndReportError(result, &out, ("Failed: utils::GetPlaylist"));
+ return;
+ }
+
+ ReportSuccess(playlist_info, out);
+}
+
// subtitles
void MediaControllerInstance::MediaControllerSubtitlesUpdateEnabled(const picojson::value& args,
picojson::object& out) {
void MediaControllerDisplayRotationInfoRemoveChangeListener(const picojson::value& args,
picojson::object& out);
+ // playlists
+ void MediaControllerPlaylistsGetPlaylist(const picojson::value& args, picojson::object& out);
+
// playlists_info
void MediaControllerPlaylistsInfoSendPlaybackItem(const picojson::value& args,
picojson::object& out);
+ void MediaControllerPlaylistsInfoGetPlaylist(const picojson::value& args, picojson::object& out);
std::shared_ptr<MediaControllerClient> client_;
std::shared_ptr<MediaControllerServer> server_;
return PlatformResult(ErrorCode::NO_ERROR);
}
+PlatformResult utils::GetPlaylist(const std::string& app_id, const std::string& playlist_name,
+ picojson::object* playlist_obj) {
+ ScopeLogger();
+
+ mc_playlist_h playlist_item = nullptr;
+ SCOPE_EXIT {
+ mc_playlist_destroy(playlist_item);
+ };
+
+ int ret = mc_playlist_get_playlist(app_id.c_str(), playlist_name.c_str(), &playlist_item);
+
+ if (MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER == ret) {
+ return LogAndCreateResult(
+ ErrorCode::NOT_FOUND_ERR,
+ "A playlist named " + playlist_name + " does not exist on the server " + app_id,
+ ("mc_playlist_get_playlist() error: %d, message: %s", ret, get_error_message(ret)));
+ }
+
+ if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
+ return LogAndCreateResult(
+ ErrorCode::UNKNOWN_ERR, "Error while getting a playlist named " + playlist_name,
+ ("mc_playlist_get_playlist() error: %d, message: %s", ret, get_error_message(ret)));
+ }
+
+ if (nullptr != playlist_obj) {
+ (*playlist_obj)[kName] = picojson::value(playlist_name);
+ }
+
+ return PlatformResult(ErrorCode::NO_ERROR);
+}
+
ErrorCode utils::ConvertMediaControllerError(int e) {
ScopeLogger();
ErrorCode error;
namespace utils {
common::PlatformResult GetAllPlaylists(const std::string& app_id, picojson::array* playlists);
+common::PlatformResult GetPlaylist(const std::string& app_id, const std::string& playlist_name,
+ picojson::object* playlist_obj);
common::ErrorCode ConvertMediaControllerError(int e);
bool isMetadataAttributeEncodable(const std::string& name);
common::PlatformResult EncodeMetadata(const picojson::object& to_encode, picojson::object* encoded);