public static void Main(string[] args) { string username = "******"; string password = "******"; var baseUrl = "https://api.particle.io"; var accessTokenController = new AccessTokenController(baseUrl); // Login, if a token exists and it's not expired use it. var accessTokens = accessTokenController.ListTokensAsync(username, password).Result; var userToken = accessTokens.FirstOrDefault(t => t.Client == "user"); if (userToken == null) { var authResponse = accessTokenController.GenerateAccessTokenAsync(username, password).Result; userToken = new AccessToken { Token = authResponse.Access_Token, Expires_At = DateTime.UtcNow.AddSeconds(authResponse.Expires_In).ToString("o"), Client = "user" }; } // var sseManager = new SSECore (baseUrl,userToken.Token); // sseManager.SSEPublished += (eve) => { // Console.WriteLine (eve.Info.Data); // }; // // Task.Run (() => { // sseManager.GetStreamOfEvents ("Dummy"); // }); var deviceController = new DeviceController(baseUrl); var devices = deviceController.ListDevicesAsync(userToken.Token).Result; var device = devices.FirstOrDefault(); if (device != null && device.Connected) { var cloudController = new CloudController(baseUrl, userToken, device); Task.Run(async() => { var deviceInfo = await deviceController.GetDeviceInfoByIdAsync(userToken.Token, device.Id); // var testVariable = deviceInfo.VariableList.FirstOrDefault (); // // var vResp = await cloudController.GetVariableAsync (testVariable.Name); // // if(vResp != null) // Console.WriteLine (vResp.Result); var testFunction = deviceInfo.Functions.FirstOrDefault(); var fResp = await cloudController.CallFunctionAsync(testFunction, "test"); if (fResp != null) { Console.WriteLine(fResp.Return_Value); } }).Wait(); } }
private bool PostLinkedIn() { string requestCode = Session[LinkedInCodeSessionKey].ToString(); if (requestCode == null) { Session[MessageKey] = txtFeedContent.Text.Trim(); //Session[TitleKey] = txtTitle.Text.Trim(); var config = new LinkedInApiConfiguration(LinkedInAppID, LinkedInSecret); var api = new LinkedInApi(config); string queryString = Request.Url.Query; string redirectUrl = Request.Url.AbsoluteUri; if (queryString.Trim() != string.Empty) { redirectUrl = redirectUrl.Replace(queryString, string.Empty); } var scope = AuthorizationScope.ReadBasicProfile | AuthorizationScope.ReadEmailAddress | AuthorizationScope.WriteShare | AuthorizationScope.ReadWriteCompanyPage; var state = Guid.NewGuid().ToString(); var url = api.OAuth2.GetAuthorizationUrl(scope, state, redirectUrl); Response.Redirect(url.AbsoluteUri, false); } else { int linkedInCompanyID = int.Parse(LinkedInCompanyID); string queryString = Request.Url.Query; string redirectUrl = Request.Url.AbsoluteUri; if (queryString.Trim() != string.Empty) { redirectUrl = redirectUrl.Replace(queryString, string.Empty); } try { string message = txtFeedContent.Text.Trim(); var config = new LinkedInApiConfiguration(LinkedInAppID, LinkedInSecret); // get the APIs client var api = new LinkedInApi(config); AuthorizationAccessToken userToken = api.OAuth2.GetAccessToken(requestCode, redirectUrl); if (userToken != null) { string acessToken = userToken.AccessToken; DateTime authorizationDateUTC = userToken.AuthorizationDateUtc; int? expiresIn = userToken.ExpiresIn; AccessTokenController accessTokenController = new AccessTokenController(); int addUpdateResult = accessTokenController.AddLinkedInAccessToken(acessToken, authorizationDateUTC, expiresIn); } UserAuthorization user = new UserAuthorization(userToken.AccessToken); PostShareResult postShareResult = api.Companies.Share( user, linkedInCompanyID, new PostShare() { Visibility = new Visibility() { Code = "anyone" }, Comment = message }); string resultID = hdnSelectedMessageID.Value; SocialFeedController feedController = new SocialFeedController(); UserChoiceInfo userChoiceInfo = feedController.ConvertToUserChoice(postShareResult.Location, postShareResult.UpdateKey, postShareResult.UpdateUrl, message, resultID); int output = feedController.SaveUserChoice(userChoiceInfo); if (output == 1) { return(true); } else { return(false); } } catch (Exception ex) { ProcessException(ex); } } return(false); }