Error message

User warning: The following module is missing from the file system: fast_404. For information about how to fix this, see the documentation page. in _drupal_trigger_error_with_delayed_logging() (line 1143 of /mnt/www/html/ooyala/docroot/includes/bootstrap.inc).

Código de firma de muestra (C#)

A continuación se incluye código de muestra C# para generar firmas:

using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
using System.Web;

public class OoyalaAPI
{
	public const String BaseURL = "https://api.ooyala.com";

	/// <summary>
	/// Takes in the necessary parameters to build a V2 signature for the Ooyala API
	/// </summary>
	/// <param name="apiKey">
	/// The API key for the Ooyala account to generate the URL for. You can find this key in the Developers tab in Backlot
	/// </param>
	/// <param name="secretKey">
	/// The Secret key for the Ooyala account to generate the URL for. You can find this key in the Developers tab in Backlot
	/// </param>
	/// <param name="HTTPMethod">
	/// The method to be used for the request. Possible values are: GET, POST, PUT, PATCH or DELETE
	/// </param>
	/// <param name="path">
	/// The path to use for the request
	/// </param>
	/// <param name="parameters">
	/// A hash containing the list of parameters that will be included in the request.
	/// </param>
	/// <param name="body">
	/// A String containing the JSON representation of the data to be sent on the request. If its a GET request, the body parameter will not be used to generate the signature.
	/// </param>
	/// <returns>
	/// The URL to be used in the HTTP request.
	/// </returns>
	public String generateURL (String apiKey, String secretKey, String HTTPMethod, String path, Dictionary<System.String,System.String> parameters, String body)
	{
		var url = BaseURL + path;

		parameters.Add("api_key", apiKey);

		//Sorting the keys
		var sortedKeys = new String[parameters.Keys.Count];
		parameters.Keys.CopyTo(sortedKeys,0);
		Array.Sort(sortedKeys);

		for (int i = 0; i < sortedKeys.Length; i++) {
			url += (i == 0 ? "?" : "&") + sortedKeys[i] + "=" + parameters[sortedKeys[i]];
		}

		url += "&signature=" + this.generateRequestSignature(secretKey, HTTPMethod, path, sortedKeys, parameters, body);

		return url;
	}

	public String generateRequestSignature(String secretKey, String HTTPMethod, String path, String[] sortedParameterKeys, Dictionary<String,String> parameters, String body){
		var StringToSign = secretKey + HTTPMethod + path;

		for (int i = 0; i < sortedParameterKeys.Length; i++) {
			StringToSign += sortedParameterKeys[i] + "=" + parameters[sortedParameterKeys[i]];
		}

                stringToSign += body;

                var sha256 = new SHA256Managed();
		byte[] digest = sha256.ComputeHash(Encoding.ASCII.GetBytes(StringToSign));
           String signedInput = Convert.ToBase64String(digest);

		//Removing the trailing = signs
		var lastEqualsSignIndex = signedInput.Length - 1;
		while (signedInput[lastEqualsSignIndex] == '=')
		{
			lastEqualsSignIndex--;	
		}

		signedInput = signedInput.SubString(0, lastEqualsSignIndex + 1);

           return HttpUtility.UrlEncode(signedInput.SubString(0, 43));
	}

}