podgrab/service/itunesService.go

62 lines
1.3 KiB
Go

package service
import (
"encoding/json"
"fmt"
"log"
"net/url"
"github.com/TheHippo/podcastindex"
"github.com/akhilrex/podgrab/model"
)
type SearchService interface {
Query(q string) []*model.CommonSearchResultModel
}
type ItunesService struct {
}
const ITUNES_BASE = "https://itunes.apple.com"
func (service ItunesService) Query(q string) []*model.CommonSearchResultModel {
url := fmt.Sprintf("%s/search?term=%s&entity=podcast", ITUNES_BASE, url.QueryEscape(q))
body, _ := makeQuery(url)
var response model.ItunesResponse
json.Unmarshal(body, &response)
var toReturn []*model.CommonSearchResultModel
for _, obj := range response.Results {
toReturn = append(toReturn, GetSearchFromItunes(obj))
}
return toReturn
}
type PodcastIndexService struct {
}
const (
PODCASTINDEX_KEY = "LNGTNUAFVL9W2AQKVZ49"
PODCASTINDEX_SECRET = "H8tq^CZWYmAywbnngTwB$rwQHwMSR8#fJb#Bhgb3"
)
func (service PodcastIndexService) Query(q string) []*model.CommonSearchResultModel {
c := podcastindex.NewClient(PODCASTINDEX_KEY, PODCASTINDEX_SECRET)
var toReturn []*model.CommonSearchResultModel
podcasts, err := c.Search(q)
if err != nil {
log.Fatal(err.Error())
return toReturn
}
for _, obj := range podcasts {
toReturn = append(toReturn, GetSearchFromPodcastIndex(obj))
}
return toReturn
}