Skip to content

Refactoring usages of http.client #454

Description

@Alex-CD

Hey :)

So a few places depend on Go's built-in http.client directly, or indirectly (through httpclient.go).
My thought was that it could be an improvement to work towards injecting http.client as a dependency - this would decouple several functions away from it, improving their testability.

As an initial first step, I could make a change that:

  • Refactors httpclient.SendRequest to accept a *http.client parameter.
  • In usages of httpclient.SendRequest, have them construct a *http.client to inject using httpClient.GetHttpClient
  • Create some unit tests for httpclient.SendRequest.

Of course, usages http.SendRequest would still depend indirectly on http.client ( via httpClient.GetHttpClient), but this would get us a foot in the door regarding doing more dependency injection elsewhere.
I've seen some other issues that discuss how heavily coupled some functions are, and I believe dependency injection could help us improve some of those tight coupling problems

This would be my first open source contribution in a while, and my first Go work in a few years, so your thoughts are especially welcome here :)

My team have also been making heavy use of this tool for a while and it's been really helpful, so thank you! ❤️

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions