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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(parse): allow custom HTTP client #61

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

sarahdayan
Copy link

This introduces the ability to pass a custom HTTP client if you don't want to use Axios. This can be helpful if you're already using a client locally with features such as request deduping, caching, etc.

The second parameter can now be a function. When it is, parse recognizes you're trying to pass a custom client and not an Axios configuration object.

Here's an example using window.fetch:

import { parse } from 'rss-to-json';

const client = (url: string) => fetch(url).then((r) => r.text()).then((data) => ({ data }));

(async () => {
  const rss = await parse('https://blog.ethereum.org/feed.xml', client);

  console.log(JSON.stringify(rss, null, 3));
})();

I wanted to test the feature so I took the liberty to set up the testing environment. I'm using MSW to mock network calls, which is quite helpful as it allows to test without really making HTTP calls, but without having to mock the HTTP client itself.

I hope this feature makes it 馃檪 Let me know if anything needs to change!

closes #60

Copy link
Author

Choose a reason for hiding this comment

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

Sorry for the huge diff, it seems that the file hadn't been formatted with Prettier before so when I added the new test script it automatically did.

Most changes are in scripts and devDependencies.

@sarahdayan sarahdayan changed the title feat: allow custom HTTP client feat(parse): allow custom HTTP client Jun 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature suggestion] Ability to inject the HTTP client
1 participant