GetTokenValueFromWOPIResourceUrl() public static method

A method is used to get token value.
public static GetTokenValueFromWOPIResourceUrl ( string wopiResourceUrl ) : string
wopiResourceUrl string A parameter represents the WOPI resource URL, which is contain token information.
return string
Esempio n. 1
0
        /// <summary>
        /// This method is used to get the common headers.
        /// </summary>
        /// <param name="targetResourceUri">The value of the target resource URI.</param>
        /// <returns>The common headers.</returns>
        public static WebHeaderCollection GetCommonHeaders(string targetResourceUri)
        {
            WebHeaderCollection getCommonHeaders = new WebHeaderCollection();
            string tokenValue = TokenAndRequestUrlHelper.GetTokenValueFromWOPIResourceUrl(targetResourceUri);

            // Setting the required headers:
            string authorizationValue = string.Format(@"Bearer {0}", tokenValue);

            getCommonHeaders.Add("Authorization", authorizationValue);
            long   currentTicks = DateTime.UtcNow.Ticks;
            string proofHeaderValueOfCurrent = HeadersHelper.GetProofHeaderValue(targetResourceUri, currentTicks);

            getCommonHeaders.Add("X-WOPI-Proof", proofHeaderValueOfCurrent);
            string proofHeaderValueOfOld = HeadersHelper.GetProofHeaderValue(targetResourceUri, currentTicks, true);

            getCommonHeaders.Add("X-WOPI-ProofOld", proofHeaderValueOfOld);
            getCommonHeaders.Add("X-WOPI-TimeStamp", currentTicks.ToString());

            return(getCommonHeaders);
        }
Esempio n. 2
0
        /// <summary>
        /// This method is used to construct an byte array type for Proof Header.
        /// </summary>
        /// <param name="targetResourceUrl">The value of the target resource URL.</param>
        /// <param name="ticksOfTimeStamp">The current header value.</param>
        /// <returns>An byte array of the proof header.</returns>
        private static byte[] ConstructProofHeaderBytes(string targetResourceUrl, long ticksOfTimeStamp)
        {
            if (string.IsNullOrEmpty(targetResourceUrl))
            {
                throw new ArgumentNullException("targetResourceUrl");
            }

            if (0 == ticksOfTimeStamp)
            {
                throw new ArgumentException("The [ticksOfTimeStamp] parameter must larger than 0.");
            }

            // Encode Token
            string tokenValue = TokenAndRequestUrlHelper.GetTokenValueFromWOPIResourceUrl(targetResourceUrl);

            byte[] encodedTokenLength  = EncodeNumericValueForProofHeader(tokenValue.Length);
            byte[] encodedTokenContent = EncodeStringValueForProofHeader(tokenValue);

            // Encode Url content
            targetResourceUrl = targetResourceUrl.ToUpper(CultureInfo.CurrentCulture);
            byte[] encodedUrlLength  = EncodeNumericValueForProofHeader(targetResourceUrl.Length);
            byte[] encodedUrlContent = EncodeStringValueForProofHeader(targetResourceUrl);

            // Encode TimeStamp, the TimeStamp is a 64-bit integer, its length is 8 bytes.
            byte[] encodedTimeStampLength  = EncodeNumericValueForProofHeader(8);
            byte[] encodedTimeStampContent = EncodeNumericValueForProofHeader(ticksOfTimeStamp);

            // Construct the proof header value: [token length] + [token content] + [URL length] + [url content] + [timestamp length] + [timestamp value]
            List <byte> proofHeaderBytesValue = new List <byte>();

            proofHeaderBytesValue.AddRange(encodedTokenLength);
            proofHeaderBytesValue.AddRange(encodedTokenContent);
            proofHeaderBytesValue.AddRange(encodedUrlLength);
            proofHeaderBytesValue.AddRange(encodedUrlContent);
            proofHeaderBytesValue.AddRange(encodedTimeStampLength);
            proofHeaderBytesValue.AddRange(encodedTimeStampContent);

            return(proofHeaderBytesValue.ToArray());
        }