Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor Web Crawler example - use constructor DI instead of Service.… #11

Merged
merged 1 commit into from
Sep 22, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@ public class WebCrawlerService
private readonly HttpClient httpClient;
private readonly IPageUrlRetriever urlRetriever;
private readonly IEventLogService eventLogService;
private readonly IAppSettingsService appSettingsService;

public WebCrawlerService(HttpClient httpClient, IPageUrlRetriever urlRetriever, IEventLogService eventLogService)
public WebCrawlerService(HttpClient httpClient, IPageUrlRetriever urlRetriever, IEventLogService eventLogService, IAppSettingsService appSettingsService)
{
this.appSettingsService = appSettingsService;
this.httpClient = httpClient;
// configure the client inside constructor if needed (add custom headers etc.)
this.httpClient.DefaultRequestHeaders.Add(HeaderNames.UserAgent, "SearchCrawler");
// get crawler base url from settings or site configuration, make sure that WebCrawlerBaseUrl is correct
string baseUrl = ValidationHelper.GetString(Service.Resolve<IAppSettingsService>()["WebCrawlerBaseUrl"], DocumentURLProvider.GetDomainUrl("DancingGoatCore"));
string baseUrl = ValidationHelper.GetString(appSettingsService["WebCrawlerBaseUrl"], DocumentURLProvider.GetDomainUrl("DancingGoatCore"));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now I'm wondering if we should make a new "section" in appsettings.json for Lucene - we do that with other integrations.

Example:

{
   // other settings ...

  "xperience.lucene": {
      "WebCrawlerBaseUrl": "..."
   }
}

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It depends, it is just usage example with configuration, not configuration of the integration module itself.
I would keep it as simple as possible.

Should I create the new configuration section?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point! This isn't something we "ship" with the package.

However, this is an example we are providing to developers and from my experience, developers will copy examples assuming they are being given best practice guidance.

So I think we should set developers up for success and do what we would in a real project - at least for this part - in part because we might have appsettings.json configuration that does ship with the package in the future and these settings should be in the same place.

this.httpClient.BaseAddress = new Uri(baseUrl);

this.urlRetriever = urlRetriever;
Expand Down
Loading