Skip to content
Permalink
Browse files

2017 EDITION !

  • Loading branch information...
Depado committed Oct 6, 2017
1 parent 48ebcd7 commit 2ffefd70ee57fe78ec574af82977ae0c9f7e6071
Showing with 74 additions and 30 deletions.
  1. +2 −2 main.go
  2. +21 −11 templates/index.tmpl
  3. +27 −10 views/data.go
  4. +7 −1 views/index.go
  5. +17 −6 views/message.go
@@ -2,8 +2,8 @@ package main

import (
"fmt"
"log"

"github.com/Sirupsen/logrus"
"github.com/gin-gonic/gin"

"github.com/Depado/royancouragements/conf"
@@ -14,7 +14,7 @@ func main() {
var err error

if err = conf.Load("conf.yml"); err != nil {
log.Fatal(err)
logrus.WithError(err).Fatal("Couldn't load configuration files")
}

r := gin.Default()
@@ -82,7 +82,7 @@
</div>
</div>
{{ end }}
<div class="ui icon message">
<!-- <div class="ui icon message">
<i class="alarm outline icon"></i>
<div class="content">
<div class="header">
@@ -110,21 +110,23 @@
<li>8. En 27<sup>ème</sup> position, Stéph ‘Bikette’ Baltus ! 83km et 145m !</li>
<li>9. En 28<sup>ème</sup> position, Jean-‘The Director’ Louis Bergamo ! 76km et 204m !</li>
</ul>
</div>
</div> -->
<div class="ui icon message">
<i class="inbox icon"></i>
<div class="content">
<div class="header">
Toi aussi offre ton soutiens à ces braves gens !
</div>
<p>Parce que chaque jour qui passe, nous nous demandons tous : “Mais combien de kilomètres aurait fait Fanch si il avait couru 24h d'affilé ?” et qu'enfin nous allons avoir notre réponse.</p>
<p>Et parce que j'ai codé ce machin à la va vite, <a href="http://www.marchons.com/directlive/encourage.php?comp=187">clique-ici si rien ne marche.</a></p>
<p>Et le code traine <a href="https://github.com/Depado/royancouragements">quelque part par là.</a></p>
<p>
Non content de faire des posts TGC absolument épiques, Robin a décidé de retourner à Royan cette année. Il a d'ailleurs profité de l'occasion pour y traîner Kevin, M. Proctool.
D'ailleurs personne ne sait si celui-ci était consentant ou non. Et comme Robin aime bien engrainer des gens qui n'ont rien demandé, il a aussi embarqué son père que vous pouvez aussi encourager sur cette page !
</p>
<p>Cette année encore nous allons pouvoir les encourager tout au long de cette sublime course ! Pour rappel, l'an passé notre Robin national avait avalé 101km et 807m.</p>
</div>
</div>
<div class="ui segment center aligned">
<form class="ui form" action="/" method="post">
<div class="disabled field">
<div class="{{ if not .accept }}disabled{{ end }} field">
<div class="ui selection dropdown">
<input name="athlete" type="hidden">
<i class="dropdown icon"></i>
@@ -136,19 +138,20 @@
</div>
</div>
</div>
<div class="disabled field">

<div class="{{ if not .accept }}disabled{{ end }} field">
<input name="name" placeholder="Name" type="text">
</div>
<div class="disabled field">
<div class="{{ if not .accept }}disabled{{ end }} field">
<input name="mail" placeholder="Mail" type="email">
</div>
<div class="disabled field">
<div class="{{ if not .accept }}disabled{{ end }} field">
<textarea name="message" rows="2" placeholder="Message"></textarea>
</div>
<button class="ui button disabled" type="submit">Submit</button>
<button class="ui button {{ if not .accept }}disabled{{ end }}" type="submit">Envoyer !</button>
</form>
</div>
<div class="ui icon message">
<!-- <div class="ui icon message">
<i class="dollar icon"></i>
<div class="content">
<div class="header">
@@ -157,6 +160,13 @@
<p><a href="https://give.everydayhero.com/au/alison-24h" target="_blank">C'est par ici que ça se passe</a></p>
<p>‘On My Feet’ Australia, aide les SDF à se remettre sur pieds via la course à pied. N’hésite pas à contribuer à cette très belle cause !</p>
</div>
</div> -->
<div class="ui icon message">
<i class="inbox icon"></i>
<div class="content">
<p>Et parce que j'ai codé ce machin à la va vite, <a href="http://francechrono.fr/lesdirects/encourage.php?comp=Royan2017">clique-ici si rien ne marche.</a></p>
<p>Et le code traine <a href="https://github.com/Depado/royancouragements">quelque part par là.</a></p>
</div>
</div>
</div>
<script>
@@ -1,20 +1,37 @@
package views

import (
"errors"
"strconv"
)

// Athlete is a simple struct holding athlete data
type Athlete struct {
ID int
Name string
}

// NewFromID retrieves the athlete from the main slice
func NewFromID(id int) (Athlete, error) {
for _, a := range athletes {
if a.ID == id {
return a, nil
}
}
return Athlete{}, errors.New("Not found")
}

// NewFromString retrieves the athlete from the main slice
func NewFromString(id string) (Athlete, error) {
i, err := strconv.Atoi(id)
if err != nil {
return Athlete{}, err
}
return NewFromID(i)
}

var athletes = []Athlete{
{29977, "Wilfrid ‘The Warrior’ Lancelle"},
{29983, "Christophe ‘FREYBLA’ Freihuber"},
{29988, "François(e) ‘Fanch’ Donval"},
{29986, "Jean-‘The Director’ Louis Bergamo"},
{29984, "Robin ‘Not Batman’ Leboeuf"},
{29985, "Stéph ‘Bikette’ Baltus"},
{29979, "Pauline ‘Queen of the Gif’ Barnouin"},
{29982, "Pierre ‘Dark Poupou’ Houssin"},
{29872, "Christian ‘Le Fou’ Mauduit"},
{29976, "Alison ‘Pimpante Party Planner’ Eastaway"},
{14583, "Robin ‘TGC Boy’ Leboeuf"},
{14580, "Kevin ‘Priestt’ Prettre"},
{14582, "Fabrice ‘Papa de Robin’ Leboeuf"},
}
@@ -4,9 +4,15 @@ import (
"net/http"

"github.com/gin-gonic/gin"

"github.com/Depado/royancouragements/conf"
)

// Index is the main view
func Index(c *gin.Context) {
c.HTML(http.StatusOK, "index.tmpl", gin.H{"athletes": athletes, "posted": "nope"})
c.HTML(http.StatusOK, "index.tmpl", gin.H{
"athletes": athletes,
"posted": "nope",
"accept": conf.C.Accept,
})
}
@@ -5,6 +5,7 @@ import (
"net/http"
"net/url"

"github.com/Sirupsen/logrus"
"github.com/gin-gonic/gin"

"github.com/Depado/royancouragements/conf"
@@ -21,30 +22,40 @@ type SendForm struct {
// PostMessage is the handler for the form post
func PostMessage(c *gin.Context) {
var err error
var a Athlete
if !conf.C.Accept {
c.Redirect(http.StatusMovedPermanently, "/")
return
}
var form SendForm
if err = c.Bind(&form); err != nil {
c.HTML(http.StatusOK, "index.tmpl", gin.H{"athletes": athletes, "posted": "errors"})
c.HTML(http.StatusOK, "index.tmpl", gin.H{"athletes": athletes, "posted": "errors", "accept": conf.C.Accept})
return
}
if a, err = NewFromString(form.Athlete); err != nil {
c.HTML(http.StatusBadRequest, "index.tmpl", gin.H{"athletes": athletes, "posted": "errors", "accept": conf.C.Accept})
}
logrus.WithFields(logrus.Fields{
"athlete": a,
"from": fmt.Sprintf("%s <%s>", form.Name, form.Mail),
"message": form.Message,
}).Info("Got message")

var resp *http.Response
v := url.Values{}
v.Add("epr", "187")
v.Add("epr", "20")
v.Add("bib", form.Athlete)
v.Add("nam", form.Name)
v.Add("mel", form.Mail)
v.Add("msg", form.Message)
if resp, err = http.Get(fmt.Sprintf("http://www.marchons.com/directlive/doencourage.php?%v", v.Encode())); err != nil {
c.HTML(http.StatusOK, "index.tmpl", gin.H{"athletes": athletes, "posted": "remote_error"})
if resp, err = http.Get(fmt.Sprintf("http://francechrono.fr/lesdirects/doencourage.php?%v", v.Encode())); err != nil {
c.HTML(http.StatusOK, "index.tmpl", gin.H{"athletes": athletes, "posted": "remote_error", "accept": conf.C.Accept})
return
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
c.HTML(http.StatusOK, "index.tmpl", gin.H{"athletes": athletes, "posted": "remote_error"})
c.HTML(http.StatusOK, "index.tmpl", gin.H{"athletes": athletes, "posted": "remote_error", "accept": conf.C.Accept})
return
}
c.HTML(http.StatusOK, "index.tmpl", gin.H{"athletes": athletes, "posted": "success"})
c.HTML(http.StatusOK, "index.tmpl", gin.H{"athletes": athletes, "posted": "success", "accept": conf.C.Accept})
}

0 comments on commit 2ffefd7

Please sign in to comment.
You can’t perform that action at this time.