fdy-scraping
Version:
`fdy-scraping` is a versatile HTTP client designed for making API requests with support for proxy configuration, debugging, and detailed error handling. It utilizes the [`got-scraping`](https://github.com/apify/got-scraping) library for HTTP operations.
189 lines (145 loc) • 4.68 kB
Markdown
`fdy-scraping` is a versatile HTTP client designed for making API requests with support for proxy configuration, debugging, and detailed error handling. It utilizes the [`got-scraping`](https://github.com/apify/got-scraping) library for HTTP operations.
To use `fdy-scraping`, you need to install the `got-scraping` library. Run the following command to install it via npm:
```bash
npm install fdy-scraping
```
Import `fdy-scraping` into your Node.js application:
```javascript
const fdy = require("fdy-scraping");
```
OR
```javascript
import fdy from "fdy-scraping";
```
Create a new client instance with custom options:
```typescript
create(options?: FetchClientOptions, debug?: boolean): FdyFetchClient;
```
```javascript
const client = fdy.create(
{
headers: { Authorization: "Bearer your-token" },
proxy: {
ip: "127.0.0.1",
port: 8080,
protocol: "http",
username: "username",
password: "password",
},
baseUrl: "https://api.example.com",
},
true
); // Set debug mode to true
```
You can use the client to make various types of HTTP requests:
```typescript
request(url, method, body = undefined, headers = undefined, options = undefined)
```
```javascript
client
.request("/endpoint", "POST", undefined, { Accept: "application/json" })
.then((response) => {
console.log(response.data); // Response data
})
.catch((error) => {
console.error("Error:", error.message);
});
```
```typescript
get(url, headers = {}, options = {}, enableDebug = false)
```
```javascript
client
.get("/endpoint", { Accept: "application/json" })
.then((response) => {
console.log(response.data); // Response data
})
.catch((error) => {
console.error("Error:", error.message);
});
```
```typescript
post(url, body = undefined, headers = {}, options = {}, enableDebug = false)
```
```javascript
client
.post("/endpoint", JSON.stringify({ key: "value" }), {
"Content-Type": "application/json",
})
.then((response) => {
console.log(response.data); // Response data
})
.catch((error) => {
console.error("Error:", error.message);
});
```
```typescript
put(url, body = undefined, headers = {}, options = {}, enableDebug = false)
```
```javascript
client
.put("/endpoint", JSON.stringify({ key: "new-value" }), {
"Content-Type": "application/json",
})
.then((response) => {
console.log(response.data); // Response data
})
.catch((error) => {
console.error("Error:", error.message);
});
```
```typescript
delete(url, headers = {}, options = {}, enableDebug = false)
```
```javascript
client
.delete("/endpoint", { Accept: "application/json" })
.then((response) => {
console.log(response.data); // Response data
})
.catch((error) => {
console.error("Error:", error.message);
});
```
`fdy-scraping` provides detailed error information through the `FdyFetchClientError` class. Errors include the status code, response data, and request configuration.
```javascript
client.get("/invalid-endpoint").catch((error) => {
if (error instanceof fdy.FdyFetchClientError) {
console.error("Custom Error Details:");
console.error("Status:", error.status);
console.error("Response:", error.response);
console.error("Config:", error.config);
} else {
console.error("General Error:", error.message);
}
});
```
- `headers`: Optional object containing default headers for requests.
- `proxy`: Optional object for proxy configuration.
- `ip`: IP address of the proxy server.
- `port`: Port of the proxy server.
- `protocol`: Protocol used by the proxy (`http` or `https`).
- `username`: Optional username for proxy authentication.
- `password`: Optional password for proxy authentication.
- `baseUrl`: Optional base URL for requests.
### Debug Mode
Debug mode can be enabled by passing `true` as the second argument to `FdyFetchClient.create`. When enabled, additional error information will be logged to the console.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
```
Feel free to adjust the paths, options, or methods according to your actual implementation and package setup.
```