public static async Task <OAuth2Module> AddFacebook(FacebookConfig config)
        {
            OAuth2Module module = await FacebookOAuth2Module.Create(config);

            Instance.modules[config.accountId] = module;
            return(module);
        }
 public async static Task<OAuth2Module> Create(Config config, SessionRepositry repository)
 {
     OAuth2Module module = new OAuth2Module();
     module.repository = repository;
     await module.init(config);
     return module;
 }
        public static async Task <OAuth2Module> AddKeyCloak(KeycloakConfig config)
        {
            OAuth2Module module = await KeycloakOAuth2Module.Create(config);

            Instance.modules[config.accountId] = module;
            return(module);
        }
        public async static Task <OAuth2Module> Create(Config config)
        {
            OAuth2Module module = new OAuth2Module();
            await module.init(config);

            return(module);
        }
        public async static Task <OAuth2Module> Create(Config config, SessionRepositry repository)
        {
            OAuth2Module module = new OAuth2Module();

            module.repository = repository;
            await module.init(config);

            return(module);
        }
        public static async Task <OAuth2Module> AddAccount(Config config)
        {
            if (Instance.modules.ContainsKey(config.accountId))
            {
                return(Instance.modules[config.accountId]);
            }
            else
            {
                OAuth2Module module = await OAuth2Module.Create(config);

                Instance.modules[config.accountId] = module;
                return(module);
            }
        }
        private async static Task RestoreAccount(Config config)
        {
            OAuth2Module module;

            if (config.GetType() == typeof(KeycloakConfig))
            {
                module = await KeycloakOAuth2Module.Create(config);
            }
            else if (config.GetType() == typeof(FacebookConfig))
            {
                module = await FacebookOAuth2Module.Create(config);
            }
            else
            {
                module = await OAuth2Module.Create(config);
            }

            Instance.modules[config.accountId] = module;
        }
 public async static Task<OAuth2Module> Create(Config config)
 {
     OAuth2Module module = new OAuth2Module();
     await module.init(config);
     return module; 
 }
        public async void Upload(OAuth2Module module)
        {
            using (var client = new HttpClient())
            using (var content = new MultipartFormDataContent())
            {
                button.IsEnabled = false;
                progress.IsActive = true;

                client.DefaultRequestHeaders.Authorization = module.AuthenticationHeaderValue();

                var fileContent = new StreamContent((await file.OpenAsync(FileAccessMode.Read)).AsStreamForRead());
                fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
                {
                    Name = "\"image\"",
                    FileName = "\"" + file.Name + "\""
                };
                fileContent.Headers.ContentType = new MediaTypeHeaderValue("image/jpg");

                content.Add(fileContent);
                HttpResponseMessage response = await client.PostAsync(new Uri("https://www.googleapis.com/upload/drive/v2/files"), content);
                string responseString = await response.Content.ReadAsStringAsync();

                Debug.WriteLine(responseString);
                await new MessageDialog("uploaded file " + (response.StatusCode != HttpStatusCode.OK ? "un" : "") + "successful").ShowAsync();
            }

            file = null;
            button.Content = "Take Picture";
            button.IsEnabled = true;
            progress.IsActive = false;
        }