コード例 #1
0
        public async Task <Response> GetPhoto <TPhoto>(string userId) where TPhoto : new()
        {
            //https://graph.microsoft.com/v1.0/me/photos/48x48/$value
            Response ResultResponse = new Response();


            this.AccessToken = AccessTokenConfig.GetAccessToken(AppClient);

            ResultResponse = await ExecuteLocalRequest();

            //var stream = ResultResponse.HttpResponse.Content.ReadAsStreamAsync();

            // var pic = Convert.ToBase64String(ResultResponse.HttpResponse.Content);

            return(ResultResponse);

            //Função local que executa a requisição das infromações do usuário.
            //Essa função só é visivel nesse metodo.
            async Task <Response> ExecuteLocalRequest()
            {
                using (var client = new RESTService <HttpRestClientNative>(getUserEndPoint("/photos/48x48/$value", userId)))
                {
                    //Headers necessário para obtenção da foto.Content-Type e Authrization Token
                    //client.AddHeader("Content-Type", "image/jpg");
                    client.AddHeader("Authorization", "Bearer " + this.AccessToken.access_token);
                    return(await client.Get <TPhoto>());
                }
            }
        }
コード例 #2
0
        public static AccessToken GetAccessToken(AppClient appClient)
        {
            AccessToken result = new AccessToken();

            result.access_token = ObtemToken();
            if (!string.IsNullOrEmpty(result.access_token))
            {
                return(result);
            }

            try
            {
                using (var client = new RESTService <HttpRestClientRestSharp>(string.Format("https://login.microsoftonline.com/{0}/oauth2/v2.0/token", appClient.TenanId)))
                {
                    client.AddHeader("Content-Type", "application /x-www-form-urlencoded");
                    var response = client.Post <AccessToken>(appClient.QueryString).Result;
                    result = response.Data;
                    SalvarToken(result.access_token);
                }
            }
            catch (Exception ex)
            {
                result.access_token = "Excepion : " + ex.Message;
            }
            return(result);
        }
コード例 #3
0
        public async Task <Response> GetUser <TUser>() where TUser : new()
        {
            TUser    result         = new TUser();
            Response ResultResponse = new Response();

            try
            {
                //Efetua a requisição invocando a função local ExecuteLocalRequest()
                ResultResponse = await ExecuteLocalRequest();

                //Trata o retorno da requisição.
                if (ResultResponse.Status == HttpStatusCode.OK)
                {
                    var data = ResultResponse.Data;
                    result = data;
                }
                else
                {
                    if (ResultResponse.Status == HttpStatusCode.Unauthorized)
                    {
                        //Token invalido, requisita um novo
                        AccessToken = AccessTokenConfig.GetAccessToken(AppClient);
                        //Executa novamente a consulta com o novo Token
                        ResultResponse = await ExecuteLocalRequest();
                    }
                    else
                    {
                        return(ResultResponse);
                    }
                }

                //Função local que executa a requisição das infromações do usuário.
                //Essa função só é visivel nesse metodo.
                async Task <Response> ExecuteLocalRequest()
                {
                    this.EndPoint = string.Empty;

                    using (var client = new RESTService <HttpRestClientRestSharp>(getUserEndPoint()))
                    {
                        client.AddHeader("Authorization", "Bearer " + this.AccessToken.access_token);
                        return(await client.Get <TUser>());
                    }
                }
            }
            catch
            {
            }

            return(ResultResponse);
        }
コード例 #4
0
        public async Task <Response> GetMessages <TMessage>() where TMessage : new()
        {
            List <TMessage> result = new List <TMessage>();

            Response ResultResponse = new Response();

            try
            {
                //Efetua a requisição invocando a função local ExecuteLocalRequest()
                ResultResponse = await ExecuteLocalRequest();

                //Trata o retorno da requisição.
                if (ResultResponse.Status == HttpStatusCode.OK)
                {
                    var data = ResultResponse.Data;

                    var objeto = JSON.StringToObject <TMessage>(ResultResponse.HttpResponse.Content);

                    //result.Add();
                    ResultResponse.Data = result;
                }
                else
                {
                    if (ResultResponse.Status == HttpStatusCode.Unauthorized)
                    {
                        //Token invalido, requisita um novo
                        AccessToken = AccessTokenConfig.GetAccessToken(AppClient);
                        //Executa novamente a consulta com o novo Token
                        ResultResponse = await ExecuteLocalRequest();


                        //var data = ResultResponse.Data;
                        var objeto = JSON.StringToObject <dynamic>(ResultResponse.HttpResponse.Content);
                        ResultResponse.Data = objeto;

                        //result.Add(JSON.StringToObject<TMessage>(ResultResponse.HttpResponse.Content));
                        //ResultResponse.Data = result;
                    }
                    else
                    {
                        return(ResultResponse);
                    }
                }

                //Função local que executa a requisição das infromações do usuário.
                //Essa função só é visivel nesse metodo.
                async Task <Response> ExecuteLocalRequest()
                {
                    this.EndPoint = this.EndPoint ?? $"/messages";

                    using (var client = new RESTService <HttpRestClientRestSharp>(getUserEndPoint()))
                    {
                        //Headers necessário para obtenção da foto.Content-Type e Authrization Token
                        //client.AddHeader("Content-Type", "image/jpg");
                        client.AddHeader("Authorization", "Bearer " + this.AccessToken.access_token);
                        return(await client.Get <TMessage>());
                    }
                }
            }
            catch
            {
            }

            return(ResultResponse);
        }