CodeConnect/SourceBrowser — pull request #30 by AmadeusW (2014-11-20 19:20:29+00:00)
Title: GitHub data

** Back-end changes **
User and repo data is served from the drive, so that it doesn't need to be always recomputed

...\SB_Files\CodeConnect\user.data
...\SB_Files\CodeConnect\SourceBrowser\repo.data

The files are serialized instances of **SourceBrowser.Site.Models.GithubUserStructure** and **SourceBrowser.Site.Models.GithubRepoStructure**.

If the .data file is found to be over 2 hours old, its contents are still used to serve the current request, but in the background, the file is updated to serve the most fresh content.
The .data files contain information obtained from GitHub through the public api (so no authorization is needed)
This is done in **SourceBrowser.SolutionRetriever.GitHubInformationRetriever**. Unfortunately I'm passing raw data via reference, but I don't want to create hard dependencies nor create a circular dependencies.

**Graphical changes:**

Pick a user screen:
![Pick a user](https://cloud.githubusercontent.com/assets/1673956/5131306/7e421e24-70bf-11e4-8b80-f31c3f0c4c80.png)

Pick a repo screen:
![Pick a repo](https://cloud.githubusercontent.com/assets/1673956/5131297/6f006e52-70bf-11e4-8f0a-56a51ed36693.png)

If a repo has more than one solution, user is offered to pick one. If there is only one, user is taken directly to the code browser.

** Misc **
The repo structure no longer contains user structure. Instead, it just contains the user name, since that was the only piece of data used (for building links). We may need to also add the Full Name, if a link would require providing user's full name (not just the username)