-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathverifyAuthenticity.go
52 lines (45 loc) · 1.16 KB
/
verifyAuthenticity.go
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
package main
import (
"errors"
"github.com/PuerkitoBio/goquery"
"net/http"
"net/url"
"strings"
)
func verifyAuthenticity(safeUrl url.URL) (*PPSPayload, error) {
response, err := http.DefaultClient.Get(safeUrl.String())
if err != nil {
return nil, err
}
if response.StatusCode != 200 {
return nil, errors.New("could not fetch data")
}
doc, err := goquery.NewDocumentFromReader(response.Body)
if err != nil {
return nil, err
}
payload := &PPSPayload{}
doc.Find("dl > div").Each(func(i int, s *goquery.Selection) {
title := s.Find("dt").Text()
value := s.Find("dd").Text()
switch strings.TrimSpace(title) {
case "Nom":
split := strings.Split(value, " ")
payload.FirstName = strings.TrimSpace(split[0])
payload.LastName = strings.TrimSpace(split[1])
case "Date de naissance":
payload.BirthDate = strings.TrimSpace(value)
case "Sexe":
if strings.TrimSpace(value) == "Masculin" {
payload.Gender = "MALE"
} else {
payload.Gender = "FEMALE"
}
case "Numéro d'attestation":
payload.Identifier = strings.TrimSpace(value)
case "Valable jusqu'au":
payload.ExpiryDate = strings.TrimSpace(value)
}
})
return payload, nil
}