Exemple #1
0
        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);
    }