|
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; |
|
} |