// ===================================================================================================
//                           _  __     _ _
//                          | |/ /__ _| | |_ _  _ _ _ __ _
//                          | ' </ _` | |  _| || | '_/ _` |
//                          |_|\_\__,_|_|\__|\_,_|_| \__,_|
//
// This file is part of the Kaltura Collaborative Media Suite which allows users
// to do with audio, video, and animation what Wiki platforms allow them to do with
// text.
//
// Copyright (C) 2006-2022  Kaltura Inc.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
//
// @ignore
// ===================================================================================================
using System;
using System.Xml;
using System.Collections.Generic;
using System.IO;
using Kaltura.Request;
using Kaltura.Types;
using Kaltura.Enums;
using Newtonsoft.Json.Linq;

namespace Kaltura.Services
{
	public class DrmLicenseAccessGetAccessRequestBuilder : RequestBuilder<DrmLicenseAccessDetails>
	{
		#region Constants
		public const string ENTRY_ID = "entryId";
		public const string FLAVOR_IDS = "flavorIds";
		public const string REFERRER = "referrer";
		#endregion

		public string EntryId { get; set; }
		public string FlavorIds { get; set; }
		public string Referrer { get; set; }

		public DrmLicenseAccessGetAccessRequestBuilder()
			: base("drm_drmlicenseaccess", "getAccess")
		{
		}

		public DrmLicenseAccessGetAccessRequestBuilder(string entryId, string flavorIds, string referrer)
			: this()
		{
			this.EntryId = entryId;
			this.FlavorIds = flavorIds;
			this.Referrer = referrer;
		}

		public override Params getParameters(bool includeServiceAndAction)
		{
			Params kparams = base.getParameters(includeServiceAndAction);
			if (!isMapped("entryId"))
				kparams.AddIfNotNull("entryId", EntryId);
			if (!isMapped("flavorIds"))
				kparams.AddIfNotNull("flavorIds", FlavorIds);
			if (!isMapped("referrer"))
				kparams.AddIfNotNull("referrer", Referrer);
			return kparams;
		}

		public override Files getFiles()
		{
			Files kfiles = base.getFiles();
			return kfiles;
		}

		public override object Deserialize(JToken result)
		{
			return ObjectFactory.Create<DrmLicenseAccessDetails>(result);
		}
	}


	public class DrmLicenseAccessService
	{
		private DrmLicenseAccessService()
		{
		}

		public static DrmLicenseAccessGetAccessRequestBuilder GetAccess(string entryId, string flavorIds, string referrer)
		{
			return new DrmLicenseAccessGetAccessRequestBuilder(entryId, flavorIds, referrer);
		}
	}
}
