From d6eabf5e6a639c00d18c3d075f2c680057cc0d3f Mon Sep 17 00:00:00 2001 From: Paul Dunnavant Date: Tue, 3 Sep 2019 19:06:20 -0700 Subject: [PATCH] Pass document to all scrape functions. (#2) --- config/config.go | 1 - scrape/connectionstatus.go | 9 ++------- scrape/scrape.go | 13 +++++++++++-- scrape/softwareinformation.go | 9 ++------- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/config/config.go b/config/config.go index 516b312..99734bc 100644 --- a/config/config.go +++ b/config/config.go @@ -2,7 +2,6 @@ package config // Configuration holds all configuration for modem-scraper. type Configuration struct { - ModemType string IP string PollSchedule string MQTT MQTT diff --git a/scrape/connectionstatus.go b/scrape/connectionstatus.go index 0ac406a..168fb31 100644 --- a/scrape/connectionstatus.go +++ b/scrape/connectionstatus.go @@ -1,6 +1,6 @@ package scrape -import "github.com/pdunnavant/modem-scraper/config" +import "github.com/PuerkitoBio/goquery" // ConnectionStatus holds all info from /cmconnectionstatus.html. type ConnectionStatus struct { @@ -9,12 +9,7 @@ type ConnectionStatus struct { UpstreamBondedChannels []UpstreamBondedChannel } -func scrapeConnectionStatus(config config.Configuration) (*ConnectionStatus, error) { - doc, err := getDocumentFromURL(config.IP + "/cmconnectionstatus.html") - if err != nil { - return nil, err - } - +func scrapeConnectionStatus(doc *goquery.Document) (*ConnectionStatus, error) { connectionStatus := ConnectionStatus{ StartupProcedure: scrapeStartupProcedure(doc), DownstreamBondedChannels: scrapeDownstreamBondedChannels(doc), diff --git a/scrape/scrape.go b/scrape/scrape.go index a3e46df..8045f2e 100644 --- a/scrape/scrape.go +++ b/scrape/scrape.go @@ -13,11 +13,20 @@ import ( // Scrape scrapes data from the modem. func Scrape(config config.Configuration) (*ModemInformation, error) { - connectionStatus, err := scrapeConnectionStatus(config) + doc, err := getDocumentFromURL(config.IP + "/cmconnectionstatus.html") if err != nil { return nil, err } - softwareInformation, err := scrapeSoftwareInformation(config) + connectionStatus, err := scrapeConnectionStatus(doc) + if err != nil { + return nil, err + } + + doc, err = getDocumentFromURL(config.IP + "/cmswinfo.html") + if err != nil { + return nil, err + } + softwareInformation, err := scrapeSoftwareInformation(doc) if err != nil { return nil, err } diff --git a/scrape/softwareinformation.go b/scrape/softwareinformation.go index 9fcf64a..09161a6 100644 --- a/scrape/softwareinformation.go +++ b/scrape/softwareinformation.go @@ -4,7 +4,7 @@ import ( "strconv" "strings" - "github.com/pdunnavant/modem-scraper/config" + "github.com/PuerkitoBio/goquery" ) // SoftwareInformation holds data pulled from the /cmswinfo.html page. @@ -25,12 +25,7 @@ const macAddressSelector = "#bg3 > div.container > div.content > table:nth-child const serialNumberSelector = "#bg3 > div.container > div.content > table:nth-child(2) > tbody > tr:nth-child(6) > td:nth-child(2)" const uptimeSelector = "#bg3 > div.container > div.content > table:nth-child(5) > tbody > tr:nth-child(2) > td:nth-child(2)" -func scrapeSoftwareInformation(config config.Configuration) (*SoftwareInformation, error) { - doc, err := getDocumentFromURL(config.IP + "/cmswinfo.html") - if err != nil { - return nil, err - } - +func scrapeSoftwareInformation(doc *goquery.Document) (*SoftwareInformation, error) { uptimeString := doc.Find(uptimeSelector).Text() uptimeMins := uptimeToMinutes(uptimeString) softwareInformation := SoftwareInformation{