コード例 #1
0
ファイル: HttpUtility.cs プロジェクト: paraneye/WinApp
        public static async Task<byte[]> SendODataHttpRequestWithCanary(Uri uri, HttpMethod method, Stream requestContent, string contentType,
            HttpClientHandler clientHandler, SPOAuthUtility authUtility, Dictionary<string, string> headers = null)
        {
            // Make a post request to {siteUri}/_api/contextinfo to get the canary
            var response = await HttpUtility.SendODataJsonRequest(
                new Uri(String.Format("{0}/_api/contextinfo", SPOAuthUtility.Current.SiteUrl)),
                HttpMethod.Post,
                null,
                clientHandler,
                SPOAuthUtility.Current);

            Dictionary<String, IJsonValue> dict = new Dictionary<string, IJsonValue>();
            HttpUtility.ParseJson(JsonObject.Parse(Encoding.UTF8.GetString(response, 0, response.Length)), dict);

            string canary = dict["FormDigestValue"].GetString();

            // Make the OData request passing the canary in the request headers
            return await HttpUtility.SendODataHttpRequest(
                uri,
                method,
                requestContent,
                contentType,
                clientHandler,
                SPOAuthUtility.Current,
                new Dictionary<string, string> { 
                { "X-RequestDigest", canary  } 
                });
        }
コード例 #2
0
ファイル: SpoAuthUtility.cs プロジェクト: paraneye/WinApp
 public static async Task<bool> Create(Uri spSiteUrl, string username, string password)
 {
     var utility = new SPOAuthUtility(spSiteUrl, username, password);
     CookieContainer cc = await utility.GetCookieContainer();
     var cookies = from Cookie c in cc.GetCookies(spSiteUrl) where c.Name == "FedAuth" select c;
     if (cookies.Count() > 0)
     {
         current = utility;
         return true;
     }
     else
         throw new Exception("Could not retrieve Auth cookies");
 }
コード例 #3
0
ファイル: HttpUtility.cs プロジェクト: paraneye/WinApp
        /// <summary>
        /// Sends a JSON OData request appending SPO auth cookies to the request header.
        /// </summary>
        public static async Task<byte[]> SendODataJsonRequest(Uri uri, HttpMethod method, Stream requestContent, HttpClientHandler clientHandler, SPOAuthUtility authUtility, Dictionary<string, string> headers = null)
        {
            if (clientHandler.CookieContainer == null)
                clientHandler.CookieContainer = new CookieContainer();

            //CookieContainer cookieContainer = await authUtility.GetCookieContainer();

            //foreach (Cookie c in cookieContainer.GetCookies(uri))
            //{
            //    clientHandler.CookieContainer.Add(uri, c);
            //}

            return await SendHttpRequest(
                uri,
                method,
                requestContent,
                "application/json;odata=verbose;charset=utf-8",
                clientHandler,
                headers);
        }
コード例 #4
0
ファイル: HttpUtility.cs プロジェクト: paraneye/WinApp
        public static async Task<byte[]> SendODataHttpRequest(Uri uri, HttpMethod method, Stream requestContent, string contentType,
            HttpClientHandler clientHandler, SPOAuthUtility authUtility, Dictionary<string, string> headers = null)
        {
            if (clientHandler.CookieContainer == null)
                clientHandler.CookieContainer = new CookieContainer();

            CookieContainer cookieContainer = await authUtility.GetCookieContainer();

            foreach (Cookie c in cookieContainer.GetCookies(uri))
            {
                clientHandler.CookieContainer.Add(uri, c);
            }

            return await SendHttpRequest(
                uri,
                method,
                requestContent,
                contentType,
                clientHandler,
                headers);
        }