Пример #1
0
        /// <summary>根据授权码获取访问令牌</summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public virtual String GetAccessToken(String code)
        {
            if (code.IsNullOrEmpty())
            {
                throw new ArgumentNullException(nameof(code), "未设置授权码");
            }

            Code = code;

            var url = GetUrl(AccessUrl);

            WriteLog("GetAccessToken {0}", url);

            var html = Request(url);

            if (html.IsNullOrEmpty())
            {
                return(null);
            }

            html = html.Trim();
            if (Log != null && Log.Enable)
            {
                WriteLog(html);
            }

            var dic = GetNameValues(html);

            if (dic != null)
            {
                if (dic.ContainsKey("access_token"))
                {
                    AccessToken = dic["access_token"].Trim();
                }
                if (dic.ContainsKey("expires_in"))
                {
                    Expire = DateTime.Now.AddSeconds(dic["expires_in"].Trim().ToInt());
                }
                if (dic.ContainsKey("refresh_token"))
                {
                    RefreshToken = dic["refresh_token"].Trim();
                }

                // 如果响应区域包含用户信息,则增加用户地址
                if (UserUrl.IsNullOrEmpty() && dic.ContainsKey("scope"))
                {
                    var ss = dic["scope"].Trim().Split(",");
                    if (ss.Contains("UserInfo"))
                    {
                        UserUrl   = "userinfo?access_token={token}";
                        LogoutUrl = "logout?client_id={key}&redirect_uri={redirect}&state={state}";
                    }
                }

                OnGetInfo(dic);
            }
            Items = dic;

            return(html);
        }
Пример #2
0
        public async Task <IActionResult> PutUserUrl([FromRoute] string id, [FromBody] UserUrl userUrl)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != userUrl.UrlId)
            {
                return(BadRequest());
            }

            _context.Entry(userUrl).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!UserUrlExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Пример #3
0
        public async Task <string> CreateShortUrlForUser(Guid userId, string url)
        {
            var isExistUser = await ShortenURlDbContext.UserUrl.FirstOrDefaultAsync(c => c.UserId == userId);

            var shortUrl    = createShortUrlService.MakeShortURL();
            var newShortUrl = new ShortUrl()
            {
                ShortUrlString = shortUrl,
                Url            = url
            };

            if (isExistUser != null)
            {
                isExistUser.ShortUrls.Add(newShortUrl);
                await ShortenURlDbContext.SaveChangesAsync();
            }
            else
            {
                var newUserUrl = new UserUrl()
                {
                    UserId = userId
                };
                newUserUrl.ShortUrls.Add(newShortUrl);
                ShortenURlDbContext.UserUrl.Add(newUserUrl);
                await ShortenURlDbContext.SaveChangesAsync();
            }
            return(shortUrl);
        }
Пример #4
0
    protected void MyUrlsGridView_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        var commands = new[] { "start", "stop", "remove" };

        if (commands.Contains(e.CommandName))
        {
            var index = e.GetSelectedRowIndex() % MyUrlsGridView.PageSize;
            var row   = MyUrlsGridView.Rows[index];
            var urlId = (row.Cells[0].Text.Trim());
            var url   = new UserUrl(Convert.ToInt32(urlId));

            switch (e.CommandName)
            {
            case "start":
                if (url.Status == AdvertStatus.Paused)
                {
                    url.Activate();
                }
                break;

            case "stop":
                if (url.Status == AdvertStatus.Active)
                {
                    url.Pause();
                }
                break;

            case "remove":
                url.Delete();
                break;
            }

            MyUrlsGridView.DataBind();
        }
    }
Пример #5
0
    protected void AddUrlButton_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            try
            {
                AppSettings.DemoCheck();
                ErrorMessagePanel.Visible = SuccessMessagePanel.Visible = false;

                UserUrl.Create(Member.CurrentId, UrlTextBox.Text);

                SuccessMessagePanel.Visible = true;
                SuccessMessage.Text         = U6000.REQUESTSENTPLEASEWAIT;
            }
            catch (Exception ex)
            {
                if (ex is Exception)
                {
                    ErrorMessagePanel.Visible = true;
                    ErrorMessage.Text         = ex.Message;
                }
                else
                {
                    ErrorLogger.Log(ex);
                }
            }
            finally
            {
                ClearAll();
            }
        }
    }
Пример #6
0
        /// <summary>
        /// Создание сжатой ссылки
        /// </summary>
        /// <param name="userUrl"><seealso cref="UserUrl"/></param>
        /// <param name="userGuid">гуид пользователя</param>
        /// <returns></returns>
        public async Task <string> AddUserUrlAsync(UserUrl userUrl, Guid userGuid)
        {
            using (var context = new UrlShortenerContext())
            {
                if (userUrl == null || userGuid == Guid.Empty)
                {
                    throw new NullReferenceException();
                }

                //есть такой пользователь в Бд?
                var user = await context.Users.FirstOrDefaultAsync(x => x.UserGuid == userGuid);

                var userId = user?.Id;
                if (userId == null)
                {
                    //добавляем в БД пользователя
                    var result = context.Users.Add(new User()
                    {
                        UserGuid = userGuid
                    });
                    userId = result.Id;
                }

                userUrl.UserId = (long)userId;

                var newUrl = context.UserUrls.Add(userUrl);
                await context.SaveChangesAsync();

                return(newUrl.CompactUrl);
            }
        }
Пример #7
0
    protected void UserUrlsCheckBoxList_Init(object sender, EventArgs e)
    {
        var urls = UserUrl.GetActive(Member.CurrentId);

        foreach (var url in urls)
        {
            UserUrlsCheckBoxList.Items.Add(new ListItem(url.Url, url.Id.ToString()));
        }
        UserUrlsCheckBoxList.DataBind();
    }
Пример #8
0
        public async Task <IActionResult> PostUserUrl([FromBody] UserUrl userUrl)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.UserUrl.Add(userUrl);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetUserUrl", new { id = userUrl.UrlId }, userUrl));
        }
Пример #9
0
        public UrlDTO GetUrl(int id)
        {
            UserUrl userUrl = _repository.GetItem(id);

            if (userUrl == null)
            {
                throw new ValidationException("Url not found", "");
            }

            return(new UrlDTO {
                Id = userUrl.Id, Content = userUrl.Content, Url = userUrl.Url
            });
        }
Пример #10
0
        public void EditUrl(UrlDTO url)
        {
            UserUrl userUrl = _repository.GetItem(url.Id);

            if (userUrl == null)
            {
                throw new ValidationException("Url not found", "");
            }

            userUrl.Url     = url.Url;
            userUrl.Content = url.Content;

            _repository.EditItem(userUrl);
            _repository.Save();
        }
Пример #11
0
    public static void ChangeAllStatuses(IEnumerable <int> ids, AdvertStatus status)
    {
        foreach (var id in ids)
        {
            var url = new UserUrl(id);

            if (status == AdvertStatus.Active)
            {
                url.Accept();
            }
            else if (status == AdvertStatus.Rejected)
            {
                url.Reject();
            }
        }
    }
Пример #12
0
        /// <summary>
        /// Создание сжатой ссылки
        /// </summary>
        /// <param name="userUrl">Описание добавляемой ссылки<seealso cref="UserUrlData"/></param>
        /// <returns></returns>
        public async Task <UserUrlResult> AddUserUrlAsync(UserUrlData userUrl)
        {
            if (userUrl.UserGuid == null || userUrl.UserGuid == Guid.Empty)
            {
                userUrl.UserGuid = Guid.NewGuid();
            }
            var data = new UserUrl
            {
                CreateOn      = DateTime.Now,
                CompactUrl    = userUrl.CompactUrl,
                NumberOfViews = 0,
                OriginUrl     = userUrl.OriginUrl
            };
            var compactUrl = await _urlShortenerRep.AddUserUrlAsync(data, (Guid)userUrl.UserGuid);

            return(new UserUrlResult {
                CompactUrl = compactUrl, UserGuid = (Guid)userUrl.UserGuid
            });
        }
Пример #13
0
    protected void CreateOfferWallView_Activate(object sender, EventArgs e)
    {
        bool packsConfigured   = PTCOfferWall.ArePacksConfigured();
        bool userHasActiveUrls = UserUrl.UserHasActive(Member.CurrentId);

        CreateOfferWallsPlaceHolder.Visible = packsConfigured && userHasActiveUrls;

        if (!CreateOfferWallsPlaceHolder.Visible)
        {
            NewOfferWallUnavailable.Visible    = true;
            NewOfferWallUnavailable.HeaderText = U6000.NEWADVERTUNAVAILABLEHEADER;
            string reason = !packsConfigured ? U6000.NEWADVERTUNAVAILABLEREASON : U6002.PLEASEADDURLSFIRST;

            NewOfferWallUnavailable.Reason = reason;
        }
        else
        {
            NewOfferWallUnavailable.Visible = false;
        }
    }
Пример #14
0
    public static void Create(int userId, string url)
    {
        var userUrl = Get(userId, url);

        if (userUrl != null)
        {
            if (userUrl.Status == AdvertStatus.Rejected)
            {
                throw new MsgException(U6002.THISURLHASBEENREJECTED);
            }
            else
            {
                userUrl.Status = AdvertStatus.WaitingForAcceptance;
            }
        }
        else
        {
            userUrl = new UserUrl(userId, url);
        }

        userUrl.Save();
    }
Пример #15
0
        private void buttonOk_Click(object sender, EventArgs e)
        {
            try
            {
                if (!String.IsNullOrEmpty(richTextBoxUrls.Text))
                {
                    string[] splits = richTextBoxUrls.Text.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);

                    using (BotContext context = new BotContext())
                    {
                        User user = context.Users.FirstOrDefault(x => x.Id == userId);

                        foreach (string split in splits)
                        {
                            UserUrl userUrl = user.UserUrls.FirstOrDefault(x => x.Value == split);
                            if (userUrl == null)
                            {
                                userUrl       = new UserUrl();
                                userUrl.User  = user;
                                userUrl.Value = split;

                                user.UserUrls.Add(userUrl);
                            }
                        }

                        context.SaveChanges();

                        Singleton.Main.RefreshUrls(user.UserUrls.ToList());

                        this.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Пример #16
0
        /// <summary>企业内部应用获取用户信息</summary>
        /// <param name="access_token"></param>
        /// <param name="userid">员工id</param>
        /// <returns></returns>
        public IDictionary <String, Object> GetUserInfo(String access_token, String userid)
        {
            var url = UserUrl.Replace("{token}", access_token).Replace("{userid}", userid);

            var http = CreateClient();
            var buf  = Task.Run(() => http.GetAsync <Byte[]>(url)).Result;
            var str  = buf.ToStr();
            var js   = new JsonParser(str).Decode() as IDictionary <String, Object>;

            UserName = js["name"] + "";
            NickName = js["nick"] + "";
            Avatar   = js["avatar"] + "";
            Mail     = js["email"] + "";
            Mobile   = js["mobile"] + "";
            Code     = js["jobnumber"] + "";

            // 合并字典
            var dic = Items;

            if (dic == null)
            {
                Items = js.ToDictionary(e => e.Key, e => e.Value as String);
            }
            else
            {
                foreach (var item in js)
                {
                    if (!dic.ContainsKey(item.Key))
                    {
                        dic[item.Key] = item.Value as String;
                    }
                }
            }

            return(js);
        }
 /// <summary>
 /// Get user information with default mode set by user.
 /// </summary>
 public async Task <(ApiStatus, UserV2)> GetUserAsync(int osuId) => await GetAsync <UserV2>(UserUrl(osuId), _auth);
Пример #18
0
        public async Task <IActionResult> Start(UserUrlModel model)
        {
            using (var client = new HttpClient())
            {
                // Assuming the API is in the same web application.
                string baseUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}";


                //Check if the user is already available in db
                client.BaseAddress = new Uri(baseUrl);
                var responseMessage = client.GetAsync("/api/Users");

                responseMessage.Wait();

                User user   = null;
                var  result = responseMessage.Result;
                if (result.IsSuccessStatusCode)
                {
                    var stream = await result.Content.ReadAsStreamAsync();

                    using (JsonReader jsonReader = new JsonTextReader(new System.IO.StreamReader(stream)))
                    {
                        var serializer = new JsonSerializer();
                        var users      = serializer.Deserialize <IEnumerable <User> >(jsonReader);

                        user = users.Where(t => t.Email == model.Email).FirstOrDefault();
                    }
                }

                if (user == null)
                {
                    user = new User()
                    {
                        UserId = Guid.NewGuid().ToString(),
                        Email  = model.Email
                    };

                    var postTask = client.PostAsJsonAsync <User>("/api/Users", user);

                    postTask.Wait();

                    if (!postTask.Result.IsSuccessStatusCode)
                    {
                        return(View("Error"));
                    }

                    /*else
                     * {
                     *  var stream = await result.Content.ReadAsStreamAsync();
                     *  using (JsonReader jsonReader = new JsonTextReader(new System.IO.StreamReader(stream)))
                     *  {
                     *      var serializer = new JsonSerializer();
                     *      user = serializer.Deserialize<User>(jsonReader);
                     *  }
                     * }*/
                }

                UserUrl userUrl = new UserUrl
                {
                    UrlId       = Guid.NewGuid().ToString(),
                    UserId      = user.UserId,
                    ActualUrl   = model.ActualUrl,
                    Description = model.Description
                };
                userUrl.ShortUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}/Home/DynamicUrl?id=" + userUrl.UrlId;


                var usersUrlTask = client.PostAsJsonAsync <UserUrl>("/api/UserUrls", userUrl);

                usersUrlTask.Wait();

                if (usersUrlTask.Result.IsSuccessStatusCode)
                {
                    return(View("Added",
                                new UserUrlModel {
                        UrlId = userUrl.UrlId, Email = user.Email, ShortUrl = userUrl.ShortUrl, ActualUrl = userUrl.ActualUrl, Description = userUrl.Description
                    }));
                }
            }

            return(View());
        }