示例#1
0
        public async void Handle([FromQuery] String code, [FromQuery] String access_token, [FromQuery] String subscriber_number)
        {
            if (Request.QueryString.HasValue)
            {
                //TODO: Check request origination
                //1. Via web form: check if has CODE, then do POST to get access token
                //2. Via SMS: (requires hosting) check if has access token

                // access token needs to be stored along phone number
                bool isRequestValid = false;
                bool isRegister     = false;

                var queryValues = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(Request.QueryString.Value);
                if (queryValues.ContainsKey("code"))
                {
                    GlobeLabsClient globeLabs  = new GlobeLabsClient();
                    var             subscriber = await globeLabs.GetAccessToken(code);

                    if (subscriber != null)
                    {
                        access_token      = subscriber.access_token;
                        subscriber_number = subscriber.subscriber_number;
                        isRequestValid    = true;
                        isRegister        = true;
                    }
                }
                if (queryValues.ContainsKey("access_token") && queryValues.ContainsKey("subscriber_number"))
                {
                    isRequestValid = true;
                    isRegister     = true;
                }

                if (isRequestValid)
                {
                    if (isRegister)
                    {
                        using nachos.io.Client cli = new Client(base.ConnectionString);
                        var subscriber = ContactIO.Find(cli, mobileNumber: subscriber_number);
                        if (subscriber != null)
                        {
                            ContactIO.Upsert(cli, new io.model.Contact
                            {
                                Id          = subscriber.Id,
                                AccessToken = access_token
                            });
                        }
                    }
                }
            }
        }