-
Notifications
You must be signed in to change notification settings - Fork 47
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #119 from palash25/analytics-switch
app command: Add anayltics switch
- Loading branch information
Showing
4 changed files
with
366 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,259 @@ | ||
package app | ||
|
||
import ( | ||
"encoding/json" | ||
"fmt" | ||
"io" | ||
"os" | ||
|
||
"github.com/appbaseio/abc/appbase/common" | ||
"github.com/olekukonko/tablewriter" | ||
) | ||
|
||
type analyticsResults struct { | ||
Count json.Number `json:"count"` | ||
Key string `json:"key"` | ||
} | ||
|
||
type analyticsVolumeResults struct { | ||
Count json.Number `json:"count"` | ||
Key json.Number `json:"key"` | ||
DateAsStr string `json:"key_as_string"` | ||
} | ||
|
||
type overviewAnalyticsBody struct { | ||
NoResultSearches []analyticsResults `json:"noResultSearches"` | ||
PopularSearches []analyticsResults `json:"popularSearches"` | ||
SearchVolume []analyticsVolumeResults `json:"searchVolume"` | ||
} | ||
|
||
//ShowOverview ....... | ||
func ShowOverview(body io.ReadCloser) error { | ||
|
||
var res overviewAnalyticsBody | ||
dec := json.NewDecoder(body) | ||
err := dec.Decode(&res) | ||
if err != nil { | ||
fmt.Println(err) | ||
return err | ||
} | ||
|
||
// Display the overview results | ||
fmt.Println("Analytics(Overview) Results:") | ||
|
||
// Display NoResultSearches results | ||
noResultTable := tablewriter.NewWriter(os.Stdout) | ||
noResultTable.SetHeader([]string{"Count", "Key"}) | ||
|
||
for _, elements := range res.NoResultSearches { | ||
noResultTable.Append([]string{common.JSONNumberToString(elements.Count), elements.Key}) | ||
} | ||
noResultTable.SetAlignment(tablewriter.ALIGN_CENTER) | ||
fmt.Println("No Result Searches") | ||
noResultTable.Render() | ||
|
||
// Display PopularSearches results | ||
popularSearchesTable := tablewriter.NewWriter(os.Stdout) | ||
popularSearchesTable.SetHeader([]string{"Count", "Key"}) | ||
|
||
for _, elements := range res.PopularSearches { | ||
popularSearchesTable.Append([]string{common.JSONNumberToString(elements.Count), elements.Key}) | ||
} | ||
popularSearchesTable.SetAlignment(tablewriter.ALIGN_CENTER) | ||
fmt.Println("No Result Searches") | ||
popularSearchesTable.Render() | ||
|
||
// Display SearcheVolume results | ||
searchVolumeTable := tablewriter.NewWriter(os.Stdout) | ||
searchVolumeTable.SetHeader([]string{"Count", "Key", "Date-As-Str"}) | ||
for _, elements := range res.SearchVolume { | ||
searchVolumeTable.Append([]string{common.JSONNumberToString(elements.Count), common.JSONNumberToString(elements.Key), elements.DateAsStr}) | ||
} | ||
searchVolumeTable.SetAlignment(tablewriter.ALIGN_CENTER) | ||
fmt.Println("Search Volume Results") | ||
searchVolumeTable.Render() | ||
|
||
return nil | ||
} | ||
|
||
type latencyResults struct { | ||
Count json.Number `json:"count"` | ||
Key json.Number `json:"key"` | ||
} | ||
|
||
type latency struct { | ||
Latency []latencyResults `json:"latency"` | ||
} | ||
|
||
//ShowLatency ....... | ||
func ShowLatency(body io.ReadCloser) error { | ||
var res latency | ||
dec := json.NewDecoder(body) | ||
err := dec.Decode(&res) | ||
|
||
if err != nil { | ||
fmt.Println(err) | ||
return err | ||
} | ||
|
||
table := tablewriter.NewWriter(os.Stdout) | ||
table.SetHeader([]string{"Count", "Key"}) | ||
|
||
for _, elements := range res.Latency { | ||
table.Append([]string{common.JSONNumberToString(elements.Count), common.JSONNumberToString(elements.Key)}) | ||
} | ||
table.SetAlignment(tablewriter.ALIGN_CENTER) | ||
fmt.Println("Analytics(Latency) Results:") | ||
table.Render() | ||
|
||
return nil | ||
} | ||
|
||
type geoIP struct { | ||
GeoIP []analyticsResults `json:"aggrByCountry"` | ||
} | ||
|
||
//ShowGeoIP ....... | ||
func ShowGeoIP(body io.ReadCloser) error { | ||
var res geoIP | ||
dec := json.NewDecoder(body) | ||
err := dec.Decode(&res) | ||
if err != nil { | ||
fmt.Println(err) | ||
return err | ||
} | ||
|
||
table := tablewriter.NewWriter(os.Stdout) | ||
table.SetHeader([]string{"Count", "Key"}) | ||
|
||
for _, elements := range res.GeoIP { | ||
table.Append([]string{common.JSONNumberToString(elements.Count), elements.Key}) | ||
} | ||
table.SetAlignment(tablewriter.ALIGN_CENTER) | ||
fmt.Println("Analytics(GeoIP) Results:") | ||
table.Render() | ||
|
||
return nil | ||
} | ||
|
||
type analyticsPopularResults struct { | ||
Count json.Number `json:"count"` | ||
Key string `json:"key"` | ||
Source string `json:"source"` | ||
} | ||
|
||
type popularResults struct { | ||
PopularResults []analyticsPopularResults `json:"popularResults"` | ||
} | ||
|
||
//ShowPopularResults ....... | ||
func ShowPopularResults(body io.ReadCloser) error { | ||
var res popularResults | ||
dec := json.NewDecoder(body) | ||
err := dec.Decode(&res) | ||
if err != nil { | ||
fmt.Println(err) | ||
return err | ||
} | ||
|
||
// TODO refine output | ||
|
||
table := tablewriter.NewWriter(os.Stdout) | ||
table.SetHeader([]string{"Count", "Key", "Source"}) | ||
|
||
for _, elements := range res.PopularResults { | ||
table.Append([]string{common.JSONNumberToString(elements.Count), elements.Key, elements.Source}) | ||
} | ||
table.SetAlignment(tablewriter.ALIGN_CENTER) | ||
fmt.Println("Analytics(Popular) Results:") | ||
table.Render() | ||
|
||
return nil | ||
} | ||
|
||
type popularSearches struct { | ||
Results []analyticsResults `json:"popularSearches"` | ||
} | ||
|
||
//ShowPopularSearches ....... | ||
func ShowPopularSearches(body io.ReadCloser) error { | ||
var res popularSearches | ||
dec := json.NewDecoder(body) | ||
err := dec.Decode(&res) | ||
if err != nil { | ||
fmt.Println(err) | ||
return err | ||
} | ||
|
||
table := tablewriter.NewWriter(os.Stdout) | ||
table.SetHeader([]string{"Count", "Key"}) | ||
|
||
for _, elements := range res.Results { | ||
table.Append([]string{common.JSONNumberToString(elements.Count), elements.Key}) | ||
} | ||
table.SetAlignment(tablewriter.ALIGN_CENTER) | ||
fmt.Println("Analytics Popular Searches:") | ||
table.Render() | ||
|
||
return nil | ||
} | ||
|
||
type noResultSearches struct { | ||
Results []analyticsResults `json:"noResultSearches"` | ||
} | ||
|
||
//ShowNoResultSearches ....... | ||
func ShowNoResultSearches(body io.ReadCloser) error { | ||
var res noResultSearches | ||
dec := json.NewDecoder(body) | ||
err := dec.Decode(&res) | ||
if err != nil { | ||
fmt.Println(err) | ||
return err | ||
} | ||
|
||
table := tablewriter.NewWriter(os.Stdout) | ||
table.SetHeader([]string{"Count", "Key"}) | ||
|
||
for _, elements := range res.Results { | ||
table.Append([]string{common.JSONNumberToString(elements.Count), elements.Key}) | ||
} | ||
table.SetAlignment(tablewriter.ALIGN_CENTER) | ||
fmt.Println("Analytics No Result Searches:") | ||
table.Render() | ||
|
||
return nil | ||
} | ||
|
||
type analyticsPopularFilters struct { | ||
Count json.Number `json:"count"` | ||
Key string `json:"key"` | ||
Value string `json:"value"` | ||
} | ||
|
||
type popularFilters struct { | ||
Results []analyticsPopularFilters `json:"popularFilters"` | ||
} | ||
|
||
//ShowPopularFilters ....... | ||
func ShowPopularFilters(body io.ReadCloser) error { | ||
var res popularFilters | ||
dec := json.NewDecoder(body) | ||
err := dec.Decode(&res) | ||
if err != nil { | ||
fmt.Println(err) | ||
return err | ||
} | ||
|
||
table := tablewriter.NewWriter(os.Stdout) | ||
table.SetHeader([]string{"Count", "Key", "Value"}) | ||
|
||
for _, elements := range res.Results { | ||
table.Append([]string{common.JSONNumberToString(elements.Count), elements.Key, elements.Value}) | ||
} | ||
table.SetAlignment(tablewriter.ALIGN_CENTER) | ||
fmt.Println("Analytics Popular Filters:") | ||
table.Render() | ||
|
||
return nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.