????????????????????
????????????
??????????????????????????????????????????????????????Щ???????? ????????????? GitHub ????????б?? ?? GitHub ??????????????????????
?????????????????????????????????(??????????? C# ????)
public IEnumerable < GitHubUser > FavoritesList() {
CookieHelper cookieHelper = new CookieHelper(this.HttpContext);
HttpCookie httpCookie = cookieHelper.SetAndGetHttpCookies();
MyCookie myCookie = new MyCookie() {
ID = Convert.ToInt32(httpCookie["Id"])
};
List < GitUser > favoritesList = new List < GitUser > ();
using(var db = new GitHubContext()) {
var results = (from ch in db.CookiesHistory where ch.UserId == myCookie.ID select new {
GitUserId = ch.GitUserId
});
foreach(var result in results) {
var user = (from u in db.GitUsers where u.Id == result.GitUserId select new {
u
}).First();
favoritesList.Add(user.u);
}
}
return favoritesList;
}
???????????????????????????????? ??????! ??????????????????????????????????????????
????- ????????????????
????- ????????
??????????????????????????????????????????????????????Щ???????? ???????????? GitHub ????????б?? ?? GitHub ??????????????????????
?????????????
????- ????? Git???????GitHub API???????á?
????- LINQ ??????????????Щ?????
????- Context ????????????(ORM ????????)??
????- HttpContext ?? Cookies ?? ASP.NET ??Χ????С?
????- ??в?????????????????б??
????????
????- ????????? GitHub API? ????????洢????????洢???е? GitHub ?????????
???????????
???????????????????????????????? KISS ?????; ?????????????????? ????????????????????С? ????????????????????????顣 ????????????????????????????????????????????????????????
????public IEnumerable<GitHubUser> FavoritesList()
????????????????и??????κ??????
????public IEnumerable<GitHubUser> FavouriteGitHubUsers()
?????????……???? GitHub ?????? favorites ?????????? followed users ????
????public IEnumerable<GitHubUser> FollowedGitHubUsers()
???????????????????????????????????????????????Ρ? ????????????????????”??????“??????
????“???”????????? GitHub ??????????????????????????????????????????????????????????????????????μ?????????????“????”?′?????????????????£???????????????С??????
???????????????????ú????????????Щ???????????????????????????????????????????????????????????????????????
??????ε????
???????????????в?????????????????????????????Щ??????????????Щ??????????????????????????????????й??
???????????????κβ????????????????????? ?????????????????????? ??????????????? - ??????????????????????????????????????
??????????????????????; ??????????????????????????
?????????????????????????????з???????????????????????????????????????á???????????е??????ι?????????????????? x ???Math.cos(x)?????????????????
???????? cookie ?е????????? HTTPContext ?????????????????????????????????????????????????? CookieHelper ??????????????????????? ????????????
?????? Asp.NET ?У???????????? HTTPContext?????????й??????檔??????????????????????й????????????????????? HTTPContext ????????????????????????
??????????????????????μ???????????????????????? ?????????????????????????????????????
??????????????????а??? CookieHelper ??????? myCookie.ID ??????? ????????????????????????? ID ???????????????????????????Щ?????
????public IEnumerable<GitHubUser> FollowedGitHubUsers(int cookieId)
???????????? cookieId ???????????????????????????????????????????? cookieId????????????? cookie ?С?
?????????????
public IEnumerable < GitHubUser > FollowedGitHubUsers(int userId) {
List < GitHubUser > favoritesList = new List < GitHubUser > ();
using(var db = new GitHubContext()) {
var results = (from ch in db.CookiesHistory where ch.UserId == userId select new {
GitUserId = ch.GitUserId
});
foreach(var result in results) {
var user = (from u in db.GitUsers where u.Id == result.GitUserId select new {
u
}).First();
favoritesList.Add(user.u);
}
}
return favoritesList;
}
?????????????????????????????? Cookie??
??????????????????????
?????????? DB ??????????????? Context?? ?????′???
public IEnumerable < GitHubUser > FollowedGitHubUsers(int userId) {
using(var db = new GitHubContext()) {
var followedUserIds = this.GiveMeFollowedUsersIdFor(db?? userId);
return this.FindUsers(db?? followedUsersIds);
}
}
???????????????????????????? ????????У??鸚???????????????????????????????????????????????λ??????? ?????????Щ??????????????
?????????????????????????????????????????
private IEnumerable<GitHubUser>FindUsers(GitHubContext db?? IEnumerable<int> userIds)
{
List<GitHubUser> favoritesList = new List<GitHubUser>();
foreach (var result in results)
{
var user = (from u in db.GitUsers
where u.Id == result.GitUserId
select new { u }).First();
favoritesList.Add(user.u);
}
}
return favoritesList;
}
????????????????????????????????????????????????????????????С??????????????????????????????????????y?С???????????????????????????????????
?????????????????????????????綨??Χ????????? ??????? cookie helper??????????????????? userId ????????????????????????????????????????????? ????????Ч???????е?????