Source/NuGetGallery.Operations/Scripts/NuGetDownloadsFuncs_UserAgent.sql (106 lines of code) (raw):
IF OBJECT_ID('[dbo].[UserAgentClient]') IS NOT NULL
DROP FUNCTION [dbo].[UserAgentClient]
GO
-- 'Nexus' refer to www.sonatype.com for details on NuGet integration
-- 'JetBrains TeamCity' refer to www.jetbrains.com for details on NuGet integration
-- 'Artifactory' refer to www.jfrog.com for details on NuGet integration
-- 'MyGet' refer to www.myget.org
CREATE FUNCTION [dbo].[UserAgentClient] (@value nvarchar(900))
RETURNS NVARCHAR(128)
AS
BEGIN
IF CHARINDEX('ReSharper Extension Manager', @value) > 0
RETURN 'ReSharper Extension Manager'
IF CHARINDEX('NuGet Add Package Dialog', @value) > 0
RETURN 'NuGet Add Package Dialog'
IF CHARINDEX('NuGet Command Line', @value) > 0
RETURN 'NuGet Command Line'
IF CHARINDEX('NuGet Package Explorer Metro', @value) > 0
RETURN 'NuGet Package Explorer Metro'
IF CHARINDEX('NuGet Package Explorer', @value) > 0
RETURN 'NuGet Package Explorer'
IF CHARINDEX('NuGet Package Manager Console', @value) > 0
RETURN 'NuGet Package Manager Console'
IF CHARINDEX('NuGet Visual Studio Extension', @value) > 0
RETURN 'NuGet Visual Studio Extension'
IF CHARINDEX('WebMatrix', @value) > 0
RETURN 'WebMatrix'
IF CHARINDEX('Package-Installer', @value) > 0
RETURN 'Package-Installer'
IF CHARINDEX('JetBrains TeamCity', @value) > 0
RETURN 'JetBrains TeamCity'
IF CHARINDEX('Nexus', @value) > 0
RETURN 'Sonatype Nexus'
IF CHARINDEX('Artifactory', @value) > 0
RETURN 'JFrog Artifactory'
IF CHARINDEX('MyGet', @value) > 0
RETURN 'MyGet'
RETURN 'Other'
END
GO
IF OBJECT_ID('[dbo].[UserAgentClientMajorVersion]') IS NOT NULL
DROP FUNCTION [dbo].[UserAgentClientMajorVersion]
GO
CREATE FUNCTION [dbo].[UserAgentClientMajorVersion] (@value NVARCHAR(900))
RETURNS INT
AS
BEGIN
IF (CHARINDEX('ReSharper Extension Manager/', @value) > 0
OR CHARINDEX('NuGet Add Package Dialog/', @value) > 0
OR CHARINDEX('NuGet Command Line/', @value) > 0
OR CHARINDEX('NuGet Package Explorer/', @value) > 0
OR CHARINDEX('NuGet Package Manager Console/', @value) > 0
OR CHARINDEX('NuGet Visual Studio Extension/', @value) > 0
OR CHARINDEX('WebMatrix', @value) > 0
OR CHARINDEX('Package-Installer/', @value) > 0)
RETURN CAST(SUBSTRING(
@value,
CHARINDEX('/', @value) + 1,
CHARINDEX('.', @value, CHARINDEX('/', @value) + 1) - (CHARINDEX('/', @value) + 1)
) AS INT)
RETURN 0
END
GO
IF OBJECT_ID('[dbo].[UserAgentClientMinorVersion]') IS NOT NULL
DROP FUNCTION [dbo].[UserAgentClientMinorVersion]
GO
CREATE FUNCTION [dbo].[UserAgentClientMinorVersion] (@value NVARCHAR(900))
RETURNS INT
AS
BEGIN
IF (CHARINDEX('ReSharper Extension Manager', @value) > 0
OR CHARINDEX('NuGet Add Package Dialog', @value) > 0
OR CHARINDEX('NuGet Command Line/', @value) > 0
OR CHARINDEX('NuGet Package Explorer/', @value) > 0
OR CHARINDEX('NuGet Package Manager Console/', @value) > 0
OR CHARINDEX('NuGet Visual Studio Extension/', @value) > 0
OR CHARINDEX('WebMatrix', @value) > 0
OR CHARINDEX('Package-Installer/', @value) > 0)
RETURN CAST(SUBSTRING(
@value,
CHARINDEX('.', @value, CHARINDEX('/', @value) + 1) + 1,
(CHARINDEX('.', CONCAT(@value, '.'), CHARINDEX('.', @value, CHARINDEX('/', @value) + 1) + 1)) - ((CHARINDEX('.', @value, CHARINDEX('/', @value) + 1)) + 1)
) AS INT)
RETURN 0
END
GO
IF OBJECT_ID('[dbo].[UserAgentClientCategory]') IS NOT NULL
DROP FUNCTION [dbo].[UserAgentClientCategory]
GO
CREATE FUNCTION [dbo].[UserAgentClientCategory] (@value NVARCHAR(900))
RETURNS VARCHAR(64)
AS
BEGIN
IF CHARINDEX('ReSharper Extension Manager', @value) > 0
RETURN 'ReSharper'
IF (CHARINDEX('NuGet Add Package Dialog', @value) > 0
OR CHARINDEX('NuGet Command Line', @value) > 0
OR CHARINDEX('NuGet Package Explorer Metro', @value) > 0
OR CHARINDEX('NuGet Package Explorer', @value) > 0
OR CHARINDEX('NuGet Package Manager Console', @value) > 0
OR CHARINDEX('NuGet Visual Studio Extension', @value) > 0
OR CHARINDEX('Package-Installer', @value) > 0)
RETURN 'NuGet'
IF CHARINDEX('WebMatrix', @value) > 0
RETURN 'WebMatrix'
IF (CHARINDEX('Mozilla', @value) > 0 or CHARINDEX('Opera', @value) > 0)
RETURN 'Browser'
RETURN ''
END
GO