Skip to content

Commit

Permalink
✍️ Removed hardcoded baseUrl from the journey report
Browse files Browse the repository at this point in the history
  • Loading branch information
Roman Glushko committed Aug 27, 2019
1 parent 3fb05e7 commit eba28ae
Show file tree
Hide file tree
Showing 8 changed files with 841 additions and 21 deletions.
2 changes: 1 addition & 1 deletion .tango.yaml.sample
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
- "1.2.3.0/20"

# url of the project. Used to find external referers
"base-url": "https://www.example.com/"
"base-url": "https://www.example.com"

# remove records with URLs that match the following rules
"uri-filter":
Expand Down
2 changes: 1 addition & 1 deletion internal/cli/command/journey-report-command.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ func JourneyReportCommand(cliContext *cli.Context) error {
processorConfig := di.InitProcessorConfig(cliContext)
readAccessLogUsecase := di.InitReadAccessLogUsecase(processorConfig, filterConfig)

journeyReportUsecase := di.InitJourneyReportUsecase()
journeyReportUsecase := di.InitJourneyReportUsecase(generalConfig)

fmt.Println("💃 Tango is on the scene!")
fmt.Println("💃 started to generate a visitor's journey report...")
Expand Down
2 changes: 2 additions & 0 deletions internal/cli/factory/general-config-factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ func NewGeneralConfig(cliContext *cli.Context) config.GeneralConfig {
logFile := cliContext.GlobalString("log-file")
reportFile := cliContext.GlobalString("report-file")
configFile := cliContext.GlobalString("config-file")
baseURL := cliContext.GlobalString("base-url")

return config.NewGeneralConfig(
logFile,
reportFile,
configFile,
baseURL,
)
}
4 changes: 2 additions & 2 deletions internal/di/containers.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,10 @@ func InitRequestReportUsecase() *report.RequestReportUsecase {
}

// InitJourneyReportUsecase inits a usecase
func InitJourneyReportUsecase() *report.JourneyReportUsecase {
func InitJourneyReportUsecase(generalConfig config.GeneralConfig) *report.JourneyReportUsecase {
journeyReportWriter := writer.NewJourneyReportHtmlWriter()

return report.NewJourneyReportUsecase(journeyReportWriter)
return report.NewJourneyReportUsecase(generalConfig, journeyReportWriter)
}

// InitCustomReportUsecase inits a usecase
Expand Down
46 changes: 32 additions & 14 deletions internal/infrastructure/writer/journey-report-html-writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import (
"text/template"
)

//
// JourneyReportHtmlWriter
type JourneyReportHtmlWriter struct {
}

//
// JourneyPlaceHtmlReport
type JourneyPlaceHtmlReport struct {
ID string
Label string
Expand All @@ -24,15 +24,16 @@ type JourneyRoadHtmlReport struct {
To string
}

// JourneyHtmlReport
type JourneyHtmlReport struct {
ID string
IP string
Places []JourneyPlaceHtmlReport
Roads []JourneyRoadHtmlReport
}

// NewJourneyReportHtmlWriter inits a new html report writer
func NewJourneyReportHtmlWriter() *JourneyReportHtmlWriter {
// NewJourneyReportHTMLWriter inits a new html report writer
func NewJourneyReportHTMLWriter() *JourneyReportHtmlWriter {
return &JourneyReportHtmlWriter{}
}

Expand Down Expand Up @@ -82,16 +83,7 @@ func (w *JourneyReportHtmlWriter) getJourneyPlaceHTMLData(journeyPlaces []*entit
journeyPlaceHtmlReport := make([]JourneyPlaceHtmlReport, 0)

for index, journeyPlace := range journeyPlaces {
color := "#3498db"

if !journeyPlace.WasLogged {
color = "#95a5a6"
}

// begining of the network will be highlighted by another color
if index == 0 {
color = "#1abc9c"
}
color := w.getPlaceColor(index, journeyPlace)

journeyPlaceHtmlReport = append(journeyPlaceHtmlReport, JourneyPlaceHtmlReport{
ID: journeyPlace.ID,
Expand All @@ -118,3 +110,29 @@ func (w *JourneyReportHtmlWriter) getJourneyRoadHTMLData(journeyPlaces []*entity

return journeyRoadHtmlReport
}

// getPlaceColor retrieves color of journey place color
func (w *JourneyReportHtmlWriter) getPlaceColor(index int, journeyPlace *entity.JourneyPlace) string {
color := "#3498db" // blue color

if !journeyPlace.WasLogged {
color = "#95a5a6" // gray color
}

responseCode := journeyPlace.Data.ResponseCode

if responseCode >= 400 && responseCode < 500 {
color = "#f1c40f" // yellow color
}

if responseCode >= 500 {
color = "#e74c3c" // red color
}

// begining of the network will be highlighted by another color
if index == 0 {
color = "#1abc9c" // green color
}

return color
}
5 changes: 4 additions & 1 deletion internal/usecase/config/general-config.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,20 @@ type GeneralConfig struct {
LogFile string
ReportFile string
ConfigFile string
BaseURL string
}

//
// NewGeneralConfig inits a config provider
func NewGeneralConfig(
logFile string,
reportFile string,
configFile string,
baseURL string,
) GeneralConfig {
return GeneralConfig{
LogFile: logFile,
ReportFile: reportFile,
ConfigFile: configFile,
BaseURL: baseURL,
}
}
5 changes: 3 additions & 2 deletions internal/usecase/report/journey-report-usecase.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"log"
"strings"
"tango/internal/domain/entity"
"tango/internal/usecase/config"
)

// JourneyReportWriter knows how to save journey report
Expand All @@ -20,9 +21,9 @@ type JourneyReportUsecase struct {
}

// NewJourneyReportUsecase creates a new instance of the usecase
func NewJourneyReportUsecase(journeyReportWriter JourneyReportWriter) *JourneyReportUsecase {
func NewJourneyReportUsecase(generalConfig config.GeneralConfig, journeyReportWriter JourneyReportWriter) *JourneyReportUsecase {
return &JourneyReportUsecase{
baseURL: "https://www.example.com",
baseURL: generalConfig.BaseURL,
journeyReportWriter: journeyReportWriter,
}
}
Expand Down
Loading

0 comments on commit eba28ae

Please sign in to comment.