Skip to content

Commit 017575c

Browse files
Fixing lint issues (#33)
* Imrove docu * Update nugets * Improve docu * Refactor licenses * Fix sonar lint issues * Add manual trigger * Fix lint issues * Create new release
1 parent 12424d4 commit 017575c

26 files changed

+198
-181
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ on:
55
branches: [ develop, main]
66
schedule:
77
- cron: '0 2 * * *' # each day at 2 AM UTC
8-
8+
workflow_dispatch: # manual trigger
9+
910
jobs:
1011
build:
1112
runs-on: ubuntu-latest

example/Example.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
<ItemGroup>
1212
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
1313
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.1" />
14+
<PackageReference Include="SonarAnalyzer.CSharp" Version="10.10.0.116381">
15+
<PrivateAssets>all</PrivateAssets>
16+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
17+
</PackageReference>
1418
</ItemGroup>
1519

1620
<ItemGroup>

release-notes/v1.0.9.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
### What's Changed
2+
3+
* Fixed code linting issues to improve code quality and maintainability.
4+
5+

src/Constants.cs

Lines changed: 36 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,58 @@
11
namespace Finance.Net;
22

3+
#pragma warning disable S1075 // URIs should not be hardcoded
34
internal static class Constants
45
{
6+
// General
57
public const string DefaultHttpRetryPolicy = "DefaultHttpRetryPolicy";
68

7-
public const string HeaderNameAccept = "Accept";
8-
public const string HeaderNameAcceptLanguage = "Accept-Language";
9-
public const string HeaderNameUserAgent = "User-Agent";
9+
// HTTP Headers
10+
public const string HeaderAccept = "Accept";
11+
public const string HeaderAcceptLanguage = "Accept-Language";
12+
public const string HeaderUserAgent = "User-Agent";
13+
public const string HeaderAcceptLanguageValue = "en-US,en;q=0.5";
1014

11-
public const string ResponseApiLimitExceeded = "higher API call volume";
15+
// Messages
16+
public const string ApiResponseLimitExceeded = "higher API call volume";
17+
public const string ValidationMessageAllFieldsEmpty = "All fields empty";
1218

13-
public const string ValidationMsgAllFieldsEmpty = "All fields empty";
14-
public const string HeaderValueAcceptLanguage = "en-US,en;q=0.5";
19+
#region Yahoo Finance
1520

16-
public const int YahooCookieExpirationTimeInHours = 6;
17-
18-
/// <summary> Base url for Yahoo UI content </summary>
19-
public const string YahooBaseUrlQuoteHtml = "https://finance.yahoo.com/quote";
20-
21-
/// <summary> Base url to get cookie for api calls </summary>
22-
public const string YahooBaseUrlAuthentication = "https://fc.yahoo.com";
23-
24-
/// <summary> Base url to get cookie for html calls </summary>
25-
public const string YahooBaseUrlConsent = "https://guce.yahoo.com/consent";
26-
27-
/// <summary> Base url to send consent cookie for html calls </summary>
28-
public const string YahooBaseUrlConsentCollect = "https://consent.yahoo.com/v2/collectConsent";
29-
30-
/// <summary> Base url for Yahoo crumb API calls </summary>
31-
public const string YahooBaseUrlCrumbApi = "https://query1.finance.yahoo.com/v1/test/getcrumb";
32-
33-
/// <summary> Base url for Yahoo quote API calls </summary>
34-
public const string YahooBaseUrlQuoteApi = "https://query1.finance.yahoo.com/v7/finance/quote";
35-
36-
/// <summary> Base url for Yahoo HTML </summary>
37-
public const string YahooBaseUrlHtml = "https://finance.yahoo.com";
38-
39-
/// <summary> Name of the Yahoo HttpClient used from HttpClientFactory </summary>
4021
public const string YahooHttpClientName = "FinanceNetYahooClient";
22+
public const int YahooCookieExpirationHours = 6;
4123

24+
public const string YahooBaseUrl = "https://finance.yahoo.com";
25+
public const string YahooQuoteHtmlUrl = $"{YahooBaseUrl}/quote";
26+
public const string YahooAuthenticationUrl = "https://fc.yahoo.com";
27+
public const string YahooConsentUrl = "https://guce.yahoo.com/consent";
28+
public const string YahooConsentCollectUrl = "https://consent.yahoo.com/v2/collectConsent";
29+
public const string YahooCrumbApiUrl = "https://query1.finance.yahoo.com/v1/test/getcrumb";
30+
public const string YahooQuoteApiUrl = "https://query1.finance.yahoo.com/v7/finance/quote";
4231

43-
public const string XetraInstrumentsUrl = "https://www.xetra.com/xetra-en/instruments/instruments";
32+
#endregion
33+
34+
#region Xetra
4435

45-
/// <summary> Name of the Xetra HttpClient used from HttpClientFactory </summary>
4636
public const string XetraHttpClientName = "FinanceNetXetraClient";
37+
public const string XetraInstrumentsUrl = "https://www.xetra.com/xetra-en/instruments/instruments";
4738

39+
#endregion
4840

49-
/// <summary> Base url for Alpha Vantage API calls </summary>
50-
public const string AlphaVantageApiUrl = "https://www.alphavantage.co";
41+
#region Alpha Vantage
5142

52-
/// <summary> Name of the AlphaVantage HttpClient used from HttpClientFactory </summary>
5343
public const string AlphaVantageHttpClientName = "FinanceNetAlphaVantageClient";
44+
public const string AlphaVantageApiBaseUrl = "https://www.alphavantage.co";
5445

46+
#endregion
5547

56-
/// <summary> Download URL of Datahub S&amp;P500 listed symbols </summary>
57-
public const string DatahubIoDownloadUrlSP500Symbols = "https://raw.githubusercontent.com/datasets/s-and-p-500-companies-financials/refs/heads/main/data/constituents-financials.csv";
58-
59-
/// <summary> Download URL of Datahub nasdaq listed symbols </summary>
60-
public const string DatahubIoDownloadUrlNasdaqListedSymbols = "https://raw.githubusercontent.com/datasets/nasdaq-listings/refs/heads/main/data/nasdaq-listed-symbols.csv";
48+
#region Datahub.io
6149

62-
/// <summary> Name of the DatahubIo HttpClient used from HttpClientFactory </summary>
6350
public const string DatahubIoHttpClientName = "DotNetFinanceDatahubIoClient";
64-
}
51+
public const string DatahubSp500SymbolsUrl =
52+
"https://raw.githubusercontent.com/datasets/s-and-p-500-companies-financials/refs/heads/main/data/constituents-financials.csv";
53+
public const string DatahubNasdaqSymbolsUrl =
54+
"https://raw.githubusercontent.com/datasets/nasdaq-listings/refs/heads/main/data/nasdaq-listed-symbols.csv";
55+
56+
#endregion
57+
}
58+
#pragma warning restore S1075 // URIs should not be hardcoded

src/Extensions/ServiceCollectionExtensions.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public static void AddFinanceNet(this IServiceCollection services, FinanceNetCon
4141
services.AddSingleton<IReadOnlyPolicyRegistry<string>, PolicyRegistry>(serviceProvider =>
4242
{
4343
var options = serviceProvider.GetRequiredService<IOptions<FinanceNetConfiguration>>();
44-
var logger = serviceProvider.GetService<ILogger<PollyPolicy>>();
44+
var logger = serviceProvider.GetRequiredService<ILogger<PolicyRegistry>>();
4545

4646
return new PolicyRegistry
4747
{
@@ -64,9 +64,9 @@ public static void AddFinanceNet(this IServiceCollection services, FinanceNetCon
6464
{
6565
var session = provider.GetRequiredService<IYahooSessionManager>();
6666
var userAgent = session.GetUserAgent();
67-
client.DefaultRequestHeaders.Add(Constants.HeaderNameUserAgent, userAgent);
68-
client.DefaultRequestHeaders.Add(Constants.HeaderNameAccept, "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
69-
client.DefaultRequestHeaders.Add(Constants.HeaderNameAcceptLanguage, Constants.HeaderValueAcceptLanguage);
67+
client.DefaultRequestHeaders.Add(Constants.HeaderUserAgent, userAgent);
68+
client.DefaultRequestHeaders.Add(Constants.HeaderAccept, "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
69+
client.DefaultRequestHeaders.Add(Constants.HeaderAcceptLanguage, Constants.HeaderAcceptLanguageValue);
7070
client.Timeout = TimeSpan.FromSeconds(cfg.HttpTimeout);
7171
})
7272
.ConfigurePrimaryHttpMessageHandler((provider) =>
@@ -83,29 +83,29 @@ public static void AddFinanceNet(this IServiceCollection services, FinanceNetCon
8383
.ConfigureHttpClient(client =>
8484
{
8585
var userAgent = Helper.CreateRandomUserAgent();
86-
client.DefaultRequestHeaders.Add(Constants.HeaderNameUserAgent, userAgent);
87-
client.DefaultRequestHeaders.Add(Constants.HeaderNameAccept, "text/html,application/xhtml+xml,application/xml,application/json;q=0.9,*/*;q=0.8");
88-
client.DefaultRequestHeaders.Add(Constants.HeaderNameAcceptLanguage, Constants.HeaderValueAcceptLanguage);
86+
client.DefaultRequestHeaders.Add(Constants.HeaderUserAgent, userAgent);
87+
client.DefaultRequestHeaders.Add(Constants.HeaderAccept, "text/html,application/xhtml+xml,application/xml,application/json;q=0.9,*/*;q=0.8");
88+
client.DefaultRequestHeaders.Add(Constants.HeaderAcceptLanguage, Constants.HeaderAcceptLanguageValue);
8989
client.Timeout = TimeSpan.FromSeconds(cfg.HttpTimeout);
9090
});
9191

9292
services.AddHttpClient(Constants.AlphaVantageHttpClientName)
9393
.ConfigureHttpClient(client =>
9494
{
9595
var userAgent = Helper.CreateRandomUserAgent();
96-
client.DefaultRequestHeaders.Add(Constants.HeaderNameUserAgent, userAgent);
97-
client.DefaultRequestHeaders.Add(Constants.HeaderNameAccept, "text/html,application/xhtml+xml,application/xml,application/json;q=0.9,*/*;q=0.8");
98-
client.DefaultRequestHeaders.Add(Constants.HeaderNameAcceptLanguage, Constants.HeaderValueAcceptLanguage);
96+
client.DefaultRequestHeaders.Add(Constants.HeaderUserAgent, userAgent);
97+
client.DefaultRequestHeaders.Add(Constants.HeaderAccept, "text/html,application/xhtml+xml,application/xml,application/json;q=0.9,*/*;q=0.8");
98+
client.DefaultRequestHeaders.Add(Constants.HeaderAcceptLanguage, Constants.HeaderAcceptLanguageValue);
9999
client.Timeout = TimeSpan.FromSeconds(cfg.HttpTimeout);
100100
});
101101

102102
services.AddHttpClient(Constants.DatahubIoHttpClientName)
103103
.ConfigureHttpClient(client =>
104104
{
105105
var userAgent = Helper.CreateRandomUserAgent();
106-
client.DefaultRequestHeaders.Add(Constants.HeaderNameUserAgent, userAgent);
107-
client.DefaultRequestHeaders.Add(Constants.HeaderNameAccept, "text/html,application/xhtml+xml,application/xml,application/json;q=0.9,*/*;q=0.8");
108-
client.DefaultRequestHeaders.Add(Constants.HeaderNameAcceptLanguage, Constants.HeaderValueAcceptLanguage);
106+
client.DefaultRequestHeaders.Add(Constants.HeaderUserAgent, userAgent);
107+
client.DefaultRequestHeaders.Add(Constants.HeaderAccept, "text/html,application/xhtml+xml,application/xml,application/json;q=0.9,*/*;q=0.8");
108+
client.DefaultRequestHeaders.Add(Constants.HeaderAcceptLanguage, Constants.HeaderAcceptLanguageValue);
109109
client.Timeout = TimeSpan.FromSeconds(cfg.HttpTimeout);
110110
});
111111
}

src/Finance.NET.csproj

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
<GenerateDocumentationFile>true</GenerateDocumentationFile>
1313
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
1414
<PackageId>Finance.NET</PackageId>
15-
<Version>1.0.8</Version>
15+
<Version>1.0.9</Version>
1616
<Authors>Thorsten Alpers</Authors>
1717
<Owners>Thorsten Alpers</Owners>
18-
<Description>Access financial data from Yahoo Finance and other sources.</Description>
18+
<Description>A .NET library for retrieving real-time and historical financial data from Yahoo Finance and other popular sources.</Description>
1919
<PackageProjectUrl>https://github.com/thorstenalpers/Finance.NET</PackageProjectUrl>
2020
<RepositoryUrl>https://github.com/thorstenalpers/Finance.NET</RepositoryUrl>
2121
<PackageTags>Finance.NET;Yahoo;Yahoo Finance;DataHub;Alpha Vantage;Nasdaq;Xetra;Finance;Trading</PackageTags>
@@ -35,6 +35,10 @@
3535
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.4" />
3636
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
3737
<PackageReference Include="Polly" Version="8.5.2" />
38+
<PackageReference Include="SonarAnalyzer.CSharp" Version="10.10.0.116381">
39+
<PrivateAssets>all</PrivateAssets>
40+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
41+
</PackageReference>
3842
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
3943
</ItemGroup>
4044

src/Mappings/NasdaqInstrumentMapping.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ namespace Finance.Net.Mappings;
66
internal class NasdaqInstrumentMapping : ClassMap<NasdaqInstrument>
77
{
88
public NasdaqInstrumentMapping()
9+
{
10+
InitializeMappings();
11+
}
12+
13+
private void InitializeMappings()
914
{
1015
Map(m => m.Symbol).Name("Symbol");
1116
Map(m => m.Name).Name("Company Name");

src/Mappings/SP500InstrumentMapping.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ namespace Finance.Net.Mappings;
66
internal class SP500InstrumentMapping : ClassMap<Sp500Instrument>
77
{
88
public SP500InstrumentMapping()
9+
{
10+
InitializeMappings();
11+
}
12+
13+
private void InitializeMappings()
914
{
1015
Map(m => m.Symbol).Name("Symbol");
1116
Map(m => m.Name).Name("Name");

src/Mappings/XetraInstrumentsMapping.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ namespace Finance.Net.Mappings;
66
internal class XetraInstrumentsMapping : ClassMap<InstrumentItem>
77
{
88
public XetraInstrumentsMapping()
9+
{
10+
InitializeMappings();
11+
}
12+
13+
private void InitializeMappings()
914
{
1015
Map(m => m.ProductStatus).Name("Product Status");
1116
Map(m => m.InstrumentStatus).Name("Instrument Status");

0 commit comments

Comments
 (0)