public async Task <EdxUser> Get(string edxId)
        {
            var edxUser = await _keyGenContext.EdxUsers.SingleOrDefaultAsync(e => e.EdxId == edxId);

            if (edxUser == null)
            {
                // create one!
                var success = false;
                while (!success)
                {
                    try
                    {
                        edxUser = new EdxUser {
                            EdxId = edxId, Uid = UidGenerator.Next()
                        };
                        _keyGenContext.EdxUsers.Add(edxUser);
                        var result = await _keyGenContext.SaveChangesAsync(true);

                        success = true;
                    }
                    catch (DbUpdateException)
                    {
                        // this would fail if Uid is not unique, so we want to try again with a new Uid
                    }
                }
            }

            return(edxUser);
        }
示例#2
0
        public async Task <EdxUser> GetUserAsync(string edxUserId)
        {
            EdxUser resultEdxUser = null;
            var     request       = new HttpRequestMessage(HttpMethod.Get, $"{_serviceBaseUrl}/EdxUser/{edxUserId}");
            var     response      = await Client.SendAsync(request);

            if (response.IsSuccessStatusCode)
            {
                var json = await response.Content.ReadAsStringAsync();

                resultEdxUser = JsonConvert.DeserializeObject <EdxUser>(json);
            }

            return(resultEdxUser);
        }