This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
nuget.enableUsabilla = function (obfuscatedPath) { | |
// If there is an obfuscated path, hook into the outgoing AJAX request containing the feedback and obfuscate | |
// the URL data. This approach was provided by the Usabilla technical support. | |
if (obfuscatedPath) { | |
var obfuscatedUrl = document.createElement('a'); | |
obfuscatedUrl.href = window.location.href; | |
if (obfuscatedPath.substring(0, 1) != "/") { | |
obfuscatedUrl.pathname = "/" + obfuscatedPath; | |
} else { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
There are many differences between the V2 and V3 APIs. For nuget.org, the main difference is how they are implemented. V2 API is built on top of SQL Server and the V3 API is built on top of Azure blob storage and Lucene for search. | |
As nuget.org's traffic increased exponentially, it became harder and harder to mean the traffic demands with a SQL database. As you may know, Azure SQL gets very expensive as it scales up and has a maximum size it can reach. Therefore, V3 was implemented on technologies that a small team could easily manage as traffic increased. All of the V3 endpoints used for `nuget.exe restore` are implemented on top of blob storage, which has great availability, is quite cheap, and can be further improved with a CDN in front. I am glossing over details a bit but that's the key difference when V3 split off in the way it did. | |
V2 is a much more flexible API since it is built on top of OData and therefore supports arbitrary queries beyond the ones nuget.exe performs. For example, you can sort by |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Project Sdk="Microsoft.NET.Sdk"> | |
<PropertyGroup> | |
<OutputType>Exe</OutputType> | |
<TargetFrameworks>netcoreapp2.2;net462</TargetFrameworks> | |
</PropertyGroup> | |
<ItemGroup Condition="'$(TargetFramework)' == 'net462'"> | |
<Reference Include="System.Net.Http" /> | |
</ItemGroup> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Threading.Tasks; | |
namespace ConsoleApp1 | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
Console.WriteLine("Starting"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.ComponentModel.DataAnnotations; | |
using System.Diagnostics; | |
using System.Linq; | |
using System.Threading.Tasks; | |
using Microsoft.EntityFrameworkCore; | |
using Microsoft.Extensions.Logging; | |
namespace ConsoleApp1 | |
{ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Concurrent; | |
using System.Collections.Generic; | |
using System.Data; | |
using System.Data.SqlClient; | |
using System.Data.SqlTypes; | |
using System.Linq; | |
using System.Threading; | |
using System.Threading.Tasks; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.IO; | |
using System.Net; | |
using System.Net.Http; | |
using System.Threading.Tasks; | |
using Knapcode.TorSharp; | |
namespace ConsoleApp1 | |
{ | |
class Program |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// All you need is the NuGet.Protocol package from NuGet.org. | |
using System; | |
using System.Threading; | |
using System.Threading.Tasks; | |
using NuGet.Common; | |
using NuGet.Protocol; | |
using NuGet.Protocol.Core.Types; | |
namespace ConsoleApp1 | |
{ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.IO; | |
using System.Linq; | |
using System.Security.Cryptography; | |
using System.Security.Cryptography.X509Certificates; | |
using System.Text; | |
using System.Threading; | |
using System.Threading.Tasks; | |
using FluentAssertions; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*.conf text eol=lf | |
*.config text eol=lf | |
*.sh text eol=lf |