DEV Community

Cover image for Converting RSS Feeds to JSON in Go: A Guide to API Integration
Sohail Pathan
Sohail Pathan

Posted on

Converting RSS Feeds to JSON in Go: A Guide to API Integration

Introduction:

RSS feeds have long been a popular means of delivering content from different sources including websites, blogs, and news sites. Integrating and consuming RSS feeds can become much easier by converting them into JSON format. You can have a look here where we discussed the crucial advantages of RSS to JSON Conversion.

Now, let's explore where the RSS to JSON conversion can be utilized. In this tutorial, we wil take you step by step for integrating the ApyHub’s RSS to JSON API using Go.

Prerequisite:

  • Standard IDE ( VSCode/Sublime)
  • Go 1.1 and Above
  • An ApyHub account

Step 1: Set up the project

First things first — We’ll start by creating a new directory and initialize it with Go modules.

> mkdir rss-json-go

> cd rss-json-go

> go mod init rss-json-go
Enter fullscreen mode Exit fullscreen mode

Note: go mod rss-json-go initializes a new Go module by creating a go.mod file in the current directory which tracks the project's dependencies.

Step 2: Create a new file main.go, and open it in your IDE or code editor:

This file will contain the logic to interact with ApyHub’s RSS to JSON API.

Step 3: Import the necessary packages:

In this step, the necessary packages are imported to make a successful API call.

package main

import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"io/ioutil"
)
Enter fullscreen mode Exit fullscreen mode
  • bytes: Required for buffering and manipulating byte slices.
  • encoding/JSON: Required for encoding and decoding JSON, the format used for the API request and response.
  • fmt: Provides I/O formatting functions.
  • net/http: Required to make HTTP requests to the API.
  • io/ioutil: Helps in reading the response body

Step 4: Define the ConvertRSSURLToJSON Function

This function takes the RSS feed URL and the API token as arguments, constructs a request with JSON data, and sends it to the API. It returns the API's response as a string and any error that might occur.

func ConvertRSSURLToJSON(rssURL, apy-token string) (string, error) {

// The API endpoint

url := "https://api.apyhub.com/convert/rss-url/json"

// Create the data for the POST request

data := map[string]string{

"url": rssURL,

}

jsonData, err := json.Marshal(data)

if err != nil {

return "", err

}

// Create a new HTTP request

req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))

if err != nil {

return "", err

}

// Add headers

req.Header.Set("Content-Type", "application/json")

req.Header.Set("apy-token", apy-token)

// Perform the request

client := &http.Client{}

resp, err := client.Do(req)

if err != nil {

return "", err

}

defer resp.Body.Close()

// Read the response body

respBody, err := ioutil.ReadAll(resp.Body)

if err != nil {

return "", err

}

return string(respBody), nil

}
Enter fullscreen mode Exit fullscreen mode

Step 5: Create the main Function:

The main function will now call ConvertRSSToJSON with the necessary parameters and handle the response.

func main() {

// Your API token

token := "PROVIDE-SECRET-TOKEN-HERE"

// The RSS feed URL to convert

rssURL := "http://rss.cnn.com/rss/cnn_topstories.rss"

// Call the function to convert the RSS URL to JSON

response, err := ConvertRSSURLToJSON(rssURL, token)

if err != nil {

fmt.Println("Error:", err)

return

}

// Print the response

fmt.Println("Response from API:", response)

}
Enter fullscreen mode Exit fullscreen mode

Step 6: Running the Program:

go run main.go
Enter fullscreen mode Exit fullscreen mode

Tip: The go run command is used in Go to compile and run a Go program in a single step. allows you to quickly execute a Go source file without explicitly building an executable binary.

Response from API: {

"version": "https://jsonfeed.org/version/1",

"title": "CNN.com - RSS Channel - HP Hero",

"description": "CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.",

"home_page_url": "https://www.cnn.com/index.html",

"date_modified": "Tue, 05 Mar 2024 14:04:19 GMT",

"date_published": "Tue, 18 Apr 2023 21:25:59 GMT",

"language": "en-US",

"icon": {

"url": "http://i2.cdn.turner.com/cnn/2015/images/09/24/cnn.digital.png",

"title": "CNN.com - RSS Channel - HP Hero"

},

"items": [

{ "id": "https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/index.html",

"title": "Some on-air claims about Dominion Voting Systems were false, Fox News acknowledges in statement after deal is announced",

"url": "https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/index.html",

"date_published": "Wed, 19 Apr 2023 12:44:51 GMT"

},
.......
Enter fullscreen mode Exit fullscreen mode

And that's it! Was easy, right?

Now you can add multiple RSS feeds which simplifies the integration of diverse content sources into your applications.

Also do not forget to handle the errors in case the URL is malformed or there is no valid RSS feed accessible through the URL - in such cases the API will return appropriate errors.

Are you a NodeJS developer? Read more of our other NodeJS tutorials here.

Are you considering stepping into AI and adding AI capabilities to your applications? We have released a bunch of APIs dealing with images and documents. Have a look here for more details.

Top comments (0)