Skip to content

Commit

Permalink
Added initial Files.AddSource to JSON-RPC
Browse files Browse the repository at this point in the history
  • Loading branch information
topfs2 committed Oct 12, 2014
1 parent 6e6663f commit 6e1aaed
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 1 deletion.
34 changes: 34 additions & 0 deletions xbmc/interfaces/json-rpc/FileOperations.cpp
Expand Up @@ -227,6 +227,40 @@ JSONRPC_STATUS CFileOperations::Download(const std::string &method, ITransportLa
return transport->Download(parameterObject["path"].asString().c_str(), result) ? OK : InvalidParams;
}

JSONRPC_STATUS CFileOperations::AddSource(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
{
std::string media = parameterObject["media"].asString();
std::string initalName = parameterObject["name"].asString();
std::string directory = parameterObject["directory"].asString();
StringUtils::ToLower(media);

std::vector<std::string> paths;
paths.push_back(directory);

CMediaSource share;
unsigned int i, j=2;
bool bConfirmed=false;
VECSOURCES* pShares = CMediaSourceSettings::Get().GetSources(media);
std::string name = initalName;
while (!bConfirmed)
{
for (i = 0; i < pShares->size(); ++i)
{
if (StringUtils::EqualsNoCase((*pShares)[i].strName, name))
break;
}
if (i < pShares->size()) // found a match - try next
name = StringUtils::Format("%s (%i)", initalName.c_str(), j++);
else
bConfirmed = true;
}

share.FromNameAndPaths(media, name, paths);
CMediaSourceSettings::Get().AddShare(media, share);

return OK;
}

bool CFileOperations::FillFileItem(const CFileItemPtr &originalItem, CFileItemPtr &item, std::string media /* = "" */, const CVariant &parameterObject /* = CVariant(CVariant::VariantTypeArray) */)
{
if (originalItem.get() == NULL)
Expand Down
2 changes: 2 additions & 0 deletions xbmc/interfaces/json-rpc/FileOperations.h
Expand Up @@ -34,6 +34,8 @@ namespace JSONRPC
static JSONRPC_STATUS PrepareDownload(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
static JSONRPC_STATUS Download(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);

static JSONRPC_STATUS AddSource(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);

static bool FillFileItem(const CFileItemPtr &originalItem, CFileItemPtr &item, std::string media = "", const CVariant &parameterObject = CVariant(CVariant::VariantTypeArray));
static bool FillFileItemList(const CVariant &parameterObject, CFileItemList &list);
};
Expand Down
1 change: 1 addition & 0 deletions xbmc/interfaces/json-rpc/JSONServiceDescription.cpp
Expand Up @@ -98,6 +98,7 @@ JsonRpcMethodMap CJSONServiceDescription::m_methodMaps[] = {
{ "Files.GetFileDetails", CFileOperations::GetFileDetails },
{ "Files.PrepareDownload", CFileOperations::PrepareDownload },
{ "Files.Download", CFileOperations::Download },
{ "Files.AddSource", CFileOperations::AddSource },

// Music Library
{ "AudioLibrary.GetArtists", CAudioLibrary::GetArtists },
Expand Down
14 changes: 13 additions & 1 deletion xbmc/interfaces/json-rpc/schema/methods.json
Expand Up @@ -583,6 +583,18 @@
],
"returns": { "type": "any", "required": true }
},
"Files.AddSource": {
"type": "method",
"description": "Add a source for the media windows",
"transport": "Response",
"permission": "ReadData",
"params": [
{ "name": "media", "$ref": "Files.Media", "required": true },
{ "name": "name", "type": "string", "required": true },
{ "name": "directory", "type": "string", "required": true }
],
"returns": { "type": "any", "required": true }
},
"Files.GetDirectory": {
"type": "method",
"description": "Get the directories and files in the given directory",
Expand Down Expand Up @@ -2323,4 +2335,4 @@
],
"returns": "string"
}
}
}

0 comments on commit 6e1aaed

Please sign in to comment.