Skip to content

Instantly share code, notes, and snippets.

@pmedcraft
Created March 3, 2017 12:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pmedcraft/ce3cf744a00e05ccdb8275d244d668a2 to your computer and use it in GitHub Desktop.
Save pmedcraft/ce3cf744a00e05ccdb8275d244d668a2 to your computer and use it in GitHub Desktop.
C# methods for uploading a multimedia asset to SDL Media Manager
private static Dictionary<string, object> UploadToMediaManager(IMediaManager2011 mediaManagerClient,
Dictionary<string, string> downloadInfo, long mediaManagerFolderId, long assetTypeId,
long outletId, long[] tags)
{
// Upload to Media Manager
UploadInfoData uploadInfoData = new UploadInfoData
{
Author = "Migration Upload Tool",
MakeAvailableForWebPublishing = true,
ProgramCreation = ProgramCreationOptions.OneProgramPerItem,
DistributionCreation = DistributionCreationOptions.OneDistribution
};
string uploadUrl = mediaManagerClient.GetUploadUrl(mediaManagerFolderId, assetTypeId, tags, downloadInfo["title"], uploadInfoData);
using (WebClient client = new WebClient())
{
try
{
client.UploadFile(uploadUrl, downloadInfo["file"]);
}
catch(Exception exception)
{
log.Error(exception);
return null;
}
WebHeaderCollection webResponse = client.ResponseHeaders;
long assetId = 0;
long.TryParse(webResponse.GetValues("AssetId").First(), out assetId);
long programId = 0;
long.TryParse(webResponse.GetValues("ProgramId").First(), out programId);
long distributionId = 0;
long.TryParse(webResponse.GetValues("DistributionId").First(), out distributionId);
Dictionary<string, long> responseIdsUpload = new Dictionary<string, long> { { "assetId", assetId }, { "programId", programId }, { "distributionId", distributionId } };
// Update the asset's properties
AssetData assetData = (AssetData)mediaManagerClient.GetItem(ItemTypes.Asset, responseIdsUpload["assetId"]);
assetData.Name = downloadInfo["title"];
assetData.Description = !String.IsNullOrEmpty(downloadInfo["altText"]) ? downloadInfo["altText"] : downloadInfo["title"];
mediaManagerClient.UpdateItem(assetData);
// Update the program's properties
ProgramData programData = (ProgramData)mediaManagerClient.GetItem(ItemTypes.Program, responseIdsUpload["programId"]);
programData.Name = downloadInfo["title"];
programData.Description = !String.IsNullOrEmpty(downloadInfo["altText"]) ? downloadInfo["altText"] : downloadInfo["title"];
mediaManagerClient.UpdateItem(programData);
return CreateDistribution(mediaManagerClient, responseIdsUpload, downloadInfo["title"], mediaManagerFolderId, outletId);
}
}
private static Dictionary<string, object> CreateDistribution(IMediaManager2011 mediaManagerClient,
Dictionary<string, long> responseIdsUpload, string assetDescription,
long mediaManagerFolderId, long outletId)
{
// Create the Distribution
long programId = responseIdsUpload["programId"];
var newDistribution = new DistributionData
{
Name = assetDescription,
Description = assetDescription,
FolderId = mediaManagerFolderId,
IsLive = true,
OutletId = outletId,
ProgramIds = new[] { programId }
};
DistributionData distributionData = null;
try
{
distributionData = (DistributionData)mediaManagerClient.AddItem(newDistribution);
}
catch(Exception exception)
{
log.Error("Error creating the distribution in Media Manager");
log.Error(exception);
return null;
}
try
{
mediaManagerClient.PutLiveAsync(ItemTypes.Distribution, new long[] { distributionData.Id });
}
catch(Exception exception)
{
log.Error("Failed to put live distribution: " + distributionData.GlobalId);
log.Error(exception);
}
Dictionary<string, object> uploadInfo = new Dictionary<string, object>();
uploadInfo.Add("distributionId", distributionData.Id);
uploadInfo.Add("description", distributionData.Description);
uploadInfo.Add("globalId", distributionData.GlobalId);
return uploadInfo;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment