static async Task RunSample3Async(AppConfig appConfig) { int accountId = 999999999; string clientId = "YOUR_CLIENT_ID"; string clientSecret = "YOUR_CLIENT_SECRET"; string redirectUrl = "YOUR_REDIRECT_URL"; string refreshToken = "YOUR_REFRESH_TOKEN"; accountId = appConfig.AccountId; clientId = appConfig.ClientId; clientSecret = appConfig.ClientSecret; redirectUrl = appConfig.RedirectUrl; refreshToken = appConfig.RefreshToken; var accessTokenSource = new AccessTokenSource( clientId: clientId, clientSecret: clientSecret, redirectUrl: redirectUrl, refreshToken: refreshToken ); var basecampClientOptions = new BasecampClientOptions(accountId, accessTokenSource) { UserAgent = UserAgent.Generate("YOUR_APPLICATION", "YOUR_CONTACT_ADDRESS"), RateLimiter = new ConstantRateLimiter(delayMs: 500), ResponseMessageCache = new SingleResponseMessageCache(), }; var basecampClient = new BasecampClient(basecampClientOptions); }
static async Task RunSample2Async(AppConfig appConfig) { int accountId = 999999999; string clientId = "YOUR_CLIENT_ID"; string clientSecret = "YOUR_CLIENT_SECRET"; string redirectUrl = "YOUR_REDIRECT_URL"; string refreshToken = "YOUR_REFRESH_TOKEN"; accountId = appConfig.AccountId; clientId = appConfig.ClientId; clientSecret = appConfig.ClientSecret; redirectUrl = appConfig.RedirectUrl; refreshToken = appConfig.RefreshToken; var accessTokenSource = new AccessTokenSource( clientId: clientId, clientSecret: clientSecret, redirectUrl: redirectUrl, refreshToken: refreshToken ); var basecampClient = new BasecampClient(accountId, accessTokenSource); var projects = await basecampClient.GetProjectsAsync(); foreach (var project in projects.AsReadToEndEnumerable()) { Console.WriteLine($"Project {project.Name} ({project.Id})"); } var projectEnumerator = projects.GetReadToEndEnumerator(); while (await projectEnumerator.MoveNextAsync(CancellationToken.None)) { var project = projectEnumerator.Current; Console.WriteLine($"Project {project.Name} ({project.Id})"); } var recordings = await basecampClient.GetRecordingsAsync(RecordingTypeEnum.ScheduleEntry); var bucketId = recordings.First().Bucket.Id.Value; var recordingId = recordings.First().Id.Value; var events = await basecampClient.GetEventsAsync(bucketId, recordingId); Console.WriteLine(); Console.WriteLine("First Page Events:"); foreach (var e in events) { Console.WriteLine($"Event {e.Action} ({e.Id})"); } }
public async Task <AccessTokenSource> AuthenticateVerificationCodeAsync(string verificationCode) { string responseJson; var requestUri = new Uri(launchpadUri, "authorization/token"); using (var requestMessage = new HttpRequestMessage(HttpMethod.Post, requestUri)) { requestMessage.Content = new FormUrlEncodedContent(new Dictionary <string, string> { ["type"] = "web_server", ["client_id"] = oauthOptions.ClientId, ["redirect_uri"] = oauthOptions.RedirectUrl, ["client_secret"] = oauthOptions.ClientSecret, ["code"] = verificationCode }); requestMessage.Headers.UserAgent.TryParseAdd(userAgent); using (var httpClient = httpClientPool.Create()) using (var responseMessage = await httpClient.SendAsync(requestMessage)) { await HttpResponseUtils.EnsureSuccessAsync(responseMessage); responseJson = await responseMessage.Content.ReadAsStringAsync(); } } var tokenResponse = JsonConvert.DeserializeObject <TokenResponse>(responseJson); var accessTokenSourceOptions = new AccessTokenSourceOptions( tokenUri: new Uri(launchpadUri, "authorization/token"), oauthOptions: oauthOptions, refreshToken: tokenResponse.RefreshToken ); var accessTokenSource = new AccessTokenSource(accessTokenSourceOptions); accessTokenSource.LoadToken(tokenResponse); return(accessTokenSource); }