-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
112 lines (99 loc) · 4.48 KB
/
main.go
File metadata and controls
112 lines (99 loc) · 4.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package main
import (
"log"
"net/http"
"os"
"github.com/mailup/content-provider-go/model"
"gopkg.in/gin-gonic/gin.v1"
)
var version = "1.0"
func main() {
port := os.Getenv("PORT")
if port == "" {
log.Fatal("$PORT must be set")
}
router := gin.Default()
router.GET("/", Home)
router.GET("content/products/:email", ListRecommendedProducts)
// MAPI test webhook
group := router.Group("mapi")
group.GET("healthcheck", MapiHealthcheck)
group.POST("messages", MapiWebhook)
router.Run(":" + port)
}
// Home provides a initial text
func Home(ctx *gin.Context) {
ctx.String(http.StatusOK, "Content Provider Version "+version)
}
// ListRecommendedProducts return a list of recommended products
func ListRecommendedProducts(ctx *gin.Context) {
email := ctx.Param("email")
content := &model.ExternalContent{User: GetUserProfile(email), Flow: GetFlow(),
RecommendedProducts: make([]model.Product, 3)}
content.RecommendedProducts[0] = model.Product{
Name: "Simon Rattle Edition: The Second Viennese School",
Currency: "$",
Price: "10",
Brand: "Calssic Music",
ContentLink: "https://www.amazon.it/Simon-Rattle-Second-Viennese-School/dp/B008PCHYFO/ref=sr_1_5?s=music&ie=UTF8&qid=1496754624&sr=1-5&keywords=classica",
ImageLink: "https://images-eu.ssl-images-amazon.com/images/I/51FhD2kajxL._SS500.jpg",
Discount: "0",
ProductID: "1",
ProductLink: "https://www.amazon.it/Simon-Rattle-Second-Viennese-School/dp/B008PCHYFO/ref=sr_1_5?s=music&ie=UTF8&qid=1496754624&sr=1-5&keywords=classica",
Text: "The Second Viennese School of Simon Rattle edited by Warner Classics",
Title: "Simon Rattle",
SubTitle: "The Second Viennese School",
Categories: []model.Category{model.Category{CategoryID: "1", CategoryName: "Classica", CategoryLink: "https://www.amazon.it/s/ref=nb_sb_noss_2?__mk_it_IT=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Dpopular&field-keywords=classica"}},
}
content.RecommendedProducts[1] = model.Product{
Name: "I Magnifici Della Musica Classica",
Currency: "$",
Price: "12",
Brand: "Calssic Music",
ContentLink: "https://www.amazon.it/I-Magnifici-Della-Musica-Classica/dp/B016NGIGNC/ref=sr_1_3?s=music&ie=UTF8&qid=1496754624&sr=1-3&keywords=classica",
ImageLink: "https://images-eu.ssl-images-amazon.com/images/I/610pGjbgbgL._AC_US327_FMwebp_QL65_.jpg",
Discount: "0",
ProductID: "2",
ProductLink: "https://www.amazon.it/I-Magnifici-Della-Musica-Classica/dp/B016NGIGNC/ref=sr_1_3?s=music&ie=UTF8&qid=1496754624&sr=1-3&keywords=classica",
Text: "I Magnifici Della Musica Classica edited by The Saifam Group",
Title: "I Magnifici Della Musica Classica",
SubTitle: "Mozart, Verdi, Beethoven, Rossini, Vivaldi",
Categories: []model.Category{model.Category{CategoryID: "1", CategoryName: "Classica", CategoryLink: "https://www.amazon.it/s/ref=nb_sb_noss_2?__mk_it_IT=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Dpopular&field-keywords=classica"}},
}
content.RecommendedProducts[2] = model.Product{
Name: "Tchaikovsky Edition",
Currency: "$",
Price: "14",
Brand: "Calssic Music",
ContentLink: "https://www.amazon.it/Tchaikovsky-Various-Artists/dp/B00YO3Z2MA/ref=sr_1_9?s=music&ie=UTF8&qid=1496754624&sr=1-9&keywords=classica",
ImageLink: "https://images-eu.ssl-images-amazon.com/images/I/518N66tnMGL._AC_US327_FMwebp_QL65_.jpg",
Discount: "10%",
ProductID: "3",
ProductLink: "https://www.amazon.it/Tchaikovsky-Various-Artists/dp/B00YO3Z2MA/ref=sr_1_9?s=music&ie=UTF8&qid=1496754624&sr=1-9&keywords=classica",
Text: "Deutsche Grammophon,Box Classica,Romantico,",
Title: "Tchaikovsky Edition",
SubTitle: "Masterworks Edition",
Categories: []model.Category{model.Category{CategoryID: "1", CategoryName: "Classica", CategoryLink: "https://www.amazon.it/s/ref=nb_sb_noss_2?__mk_it_IT=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Dpopular&field-keywords=classica"}},
}
ctx.JSON(http.StatusOK, content)
}
// GetUserProfile returns the profile of the user
func GetUserProfile(email string) *model.UserProfile {
return &model.UserProfile{
Email: email,
Address: "Via Roma",
City: "Milan",
Company: "MailUp",
DeliveryAddress: "Via Palermo",
DeliveryCity: "Cremona",
FirstName: "Mario",
LastName: "Rossi",
ZipCode: "26100",
}
}
// GetFlow always allows sending
func GetFlow() *model.FlowControl {
return &model.FlowControl{
DoNotSend: false,
}
}