Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 3 additions & 6 deletions src/TibiaCharactersCharacterV3.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ type Characters struct {

//
// The base includes two levels, Characters and Information
type JSONData struct {
type CharacterResponse struct {
Characters Characters `json:"characters"`
Information Information `json:"information"`
}
Expand Down Expand Up @@ -153,7 +153,7 @@ var (
)

// TibiaCharactersCharacterV3 func
func TibiaCharactersCharacterV3Impl(BoxContentHTML string) JSONData {
func TibiaCharactersCharacterV3Impl(BoxContentHTML string) CharacterResponse {

var (
// local strings used in this function
Expand Down Expand Up @@ -479,7 +479,7 @@ func TibiaCharactersCharacterV3Impl(BoxContentHTML string) JSONData {

//
// Build the data-blob
jsonData := JSONData{
return CharacterResponse{
Characters{
CharacterInformationData,
AccountBadgesData,
Expand All @@ -493,13 +493,10 @@ func TibiaCharactersCharacterV3Impl(BoxContentHTML string) JSONData {
Timestamp: TibiadataDatetimeV3(""),
},
}

return jsonData
}

// TibiaDataParseKiller func - insert a html string and get the killers back
func TibiaDataParseKiller(data string) (string, bool, bool, string) {

var (
// local strings used in this function
localTradedString = " (traded)"
Expand Down
105 changes: 54 additions & 51 deletions src/TibiaFansitesV3.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,52 @@ import (
"github.com/gin-gonic/gin"
)

// Child of Fansite
type ContentType struct {
Statistics bool `json:"statistics"`
Texts bool `json:"texts"`
Tools bool `json:"tools"`
Wiki bool `json:"wiki"`
}

// Child of Fansite
type SocialMedia struct {
Discord bool `json:"discord"`
Facebook bool `json:"facebook"`
Instagram bool `json:"instagram"`
Reddit bool `json:"reddit"`
Twitch bool `json:"twitch"`
Twitter bool `json:"twitter"`
Youtube bool `json:"youtube"`
}

// Child of Fansites
type Fansite struct {
Name string `json:"name"`
LogoURL string `json:"logo_url"`
Homepage string `json:"homepage"`
Contact string `json:"contact"`
ContentType ContentType `json:"content_type"`
SocialMedia SocialMedia `json:"social_media"`
Languages []string `json:"languages"`
Specials []string `json:"specials"`
FansiteItem bool `json:"fansite_item"`
FansiteItemURL string `json:"fansite_item_url"`
}

// Child of JSONData
type Fansites struct {
PromotedFansites []Fansite `json:"promoted"`
SupportedFansites []Fansite `json:"supported"`
}

//
// The base includes two levels: Fansites and Information
type FansitesResponse struct {
Fansites Fansites `json:"fansites"`
Information Information `json:"information"`
}

var (
FansiteInformationRegex = regexp.MustCompile(`<td><a href="(.*)" target.*img .*src="(.*)" alt="(.*)"\/><\/a>.*<a href=".*">(.*)<\/a><\/td><td.*top;">(.*)<\/td><td.*top;">(.*)<\/td><td.*top;">(.*)<\/td><td.*<ul><li>(.*)<\/li><\/ul><\/td><td.*top;">(.*)<\/td>`)
FansiteImgTagRegex = regexp.MustCompile(`<img[^>]+\bsrc="([^"]+)"`)
Expand All @@ -19,52 +65,6 @@ var (

// TibiaFansitesV3 func
func TibiaFansitesV3(c *gin.Context) {

// Child of Fansite
type ContentType struct {
Statistics bool `json:"statistics"`
Texts bool `json:"texts"`
Tools bool `json:"tools"`
Wiki bool `json:"wiki"`
}
// Child of Fansite
type SocialMedia struct {
Discord bool `json:"discord"`
Facebook bool `json:"facebook"`
Instagram bool `json:"instagram"`
Reddit bool `json:"reddit"`
Twitch bool `json:"twitch"`
Twitter bool `json:"twitter"`
Youtube bool `json:"youtube"`
}

// Child of Fansites
type Fansite struct {
Name string `json:"name"`
LogoURL string `json:"logo_url"`
Homepage string `json:"homepage"`
Contact string `json:"contact"`
ContentType ContentType `json:"content_type"`
SocialMedia SocialMedia `json:"social_media"`
Languages []string `json:"languages"`
Specials []string `json:"specials"`
FansiteItem bool `json:"fansite_item"`
FansiteItemURL string `json:"fansite_item_url"`
}

// Child of JSONData
type Fansites struct {
PromotedFansites []Fansite `json:"promoted"`
SupportedFansites []Fansite `json:"supported"`
}

//
// The base includes two levels: Fansites and Information
type JSONData struct {
Fansites Fansites `json:"fansites"`
Information Information `json:"information"`
}

// Getting data with TibiadataHTMLDataCollectorV3
TibiadataRequest.URL = "https://www.tibia.com/community/?subtopic=fansites"
BoxContentHTML, err := TibiadataHTMLDataCollectorV3(TibiadataRequest)
Expand All @@ -75,6 +75,13 @@ func TibiaFansitesV3(c *gin.Context) {
return
}

jsonData := TibiaFansitesV3Impl(BoxContentHTML)

// return jsonData
TibiaDataAPIHandleSuccessResponse(c, "TibiaFansitesV3", jsonData)
}

func TibiaFansitesV3Impl(BoxContentHTML string) FansitesResponse {
// Loading HTML data into ReaderHTML for goquery with NewReader
ReaderHTML, err := goquery.NewDocumentFromReader(strings.NewReader(BoxContentHTML))
if err != nil {
Expand Down Expand Up @@ -207,9 +214,8 @@ func TibiaFansitesV3(c *gin.Context) {

}

//
// Build the data-blob
jsonData := JSONData{
return FansitesResponse{
Fansites{
PromotedFansites: PromotedFansitesData,
SupportedFansites: SupportedFansitesData,
Expand All @@ -219,7 +225,4 @@ func TibiaFansitesV3(c *gin.Context) {
Timestamp: TibiadataDatetimeV3(""),
},
}

// return jsonData
TibiaDataAPIHandleSuccessResponse(c, "TibiaFansitesV3", jsonData)
}
79 changes: 79 additions & 0 deletions src/TibiaFansitesV3_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package main

import (
"io/ioutil"
"testing"

"github.com/stretchr/testify/assert"
)

func TestFansites(t *testing.T) {
data, err := ioutil.ReadFile("../testdata/fansites/all.html")
if err != nil {
t.Errorf("File reading error: %s", err)
return
}

fansitesJson := TibiaFansitesV3Impl(string(data))
assert := assert.New(t)

assert.Equal(17, len(fansitesJson.Fansites.PromotedFansites))

assert.Equal(22, len(fansitesJson.Fansites.SupportedFansites))

tibiaDataFansite := fansitesJson.Fansites.SupportedFansites[6]
assert.Equal("TibiaData.com", tibiaDataFansite.Name)
assert.Equal("https://static.tibia.com/images/community/fansitelogos/TibiaData.com.gif", tibiaDataFansite.LogoURL)
assert.Equal("https://tibiadata.com", tibiaDataFansite.Homepage)
assert.Equal("Trollefar", tibiaDataFansite.Contact)
assert.False(tibiaDataFansite.ContentType.Statistics)
assert.False(tibiaDataFansite.ContentType.Texts)
assert.True(tibiaDataFansite.ContentType.Tools)
assert.False(tibiaDataFansite.ContentType.Wiki)
assert.False(tibiaDataFansite.SocialMedia.Discord)
assert.False(tibiaDataFansite.SocialMedia.Facebook)
assert.False(tibiaDataFansite.SocialMedia.Instagram)
assert.False(tibiaDataFansite.SocialMedia.Reddit)
assert.False(tibiaDataFansite.SocialMedia.Twitch)
assert.False(tibiaDataFansite.SocialMedia.Twitter)
assert.False(tibiaDataFansite.SocialMedia.Youtube)
assert.Equal(1, len(tibiaDataFansite.Languages))
assert.Equal("us", tibiaDataFansite.Languages[0])
assert.Equal(3, len(tibiaDataFansite.Specials))
assert.Equal("API for Tibia data in JSON.", tibiaDataFansite.Specials[0])
assert.Equal("Discord server.", tibiaDataFansite.Specials[1])
assert.Equal("GitHub participant.", tibiaDataFansite.Specials[2])
assert.False(tibiaDataFansite.FansiteItem)
assert.Equal("", tibiaDataFansite.FansiteItemURL)

tibiaGalleryFansite := fansitesJson.Fansites.SupportedFansites[9]
assert.Equal("TibiaGallery.com", tibiaGalleryFansite.Name)
assert.Equal("https://static.tibia.com/images/community/fansitelogos/TibiaGallery.com.gif", tibiaGalleryFansite.LogoURL)
assert.Equal("https://tibiagallery.com/", tibiaGalleryFansite.Homepage)
assert.Equal("Ewrr", tibiaGalleryFansite.Contact)
assert.False(tibiaGalleryFansite.ContentType.Statistics)
assert.False(tibiaGalleryFansite.ContentType.Texts)
assert.True(tibiaGalleryFansite.ContentType.Tools)
assert.False(tibiaGalleryFansite.ContentType.Wiki)
assert.False(tibiaGalleryFansite.SocialMedia.Discord)
assert.False(tibiaGalleryFansite.SocialMedia.Facebook)
assert.True(tibiaGalleryFansite.SocialMedia.Instagram)
assert.False(tibiaGalleryFansite.SocialMedia.Reddit)
assert.False(tibiaGalleryFansite.SocialMedia.Twitch)
assert.False(tibiaGalleryFansite.SocialMedia.Twitter)
assert.False(tibiaGalleryFansite.SocialMedia.Youtube)
assert.Equal(9, len(tibiaGalleryFansite.Languages))
assert.Equal("br", tibiaGalleryFansite.Languages[0])
assert.Equal("pl", tibiaGalleryFansite.Languages[1])
assert.Equal("mx", tibiaGalleryFansite.Languages[2])
assert.Equal("us", tibiaGalleryFansite.Languages[3])
assert.Equal("se", tibiaGalleryFansite.Languages[4])
assert.Equal("de", tibiaGalleryFansite.Languages[5])
assert.Equal("fi", tibiaGalleryFansite.Languages[6])
assert.Equal("fr", tibiaGalleryFansite.Languages[7])
assert.Equal("tr", tibiaGalleryFansite.Languages[8])
assert.Equal(1, len(tibiaGalleryFansite.Specials))
assert.Equal("Upload, browse, like and share pictures.", tibiaGalleryFansite.Specials[0])
assert.True(tibiaGalleryFansite.FansiteItem)
assert.Equal("https://static.tibia.com/images/community/fansiteitems/TibiaGallery.com.gif", tibiaGalleryFansite.FansiteItemURL)
}
Loading