WIP
This commit is contained in:
parent
78859c7c08
commit
c6f2327d2a
5 changed files with 37240 additions and 0 deletions
3
go.mod
Normal file
3
go.mod
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
module insee_number_translator
|
||||||
|
|
||||||
|
go 1.16
|
36759
insee_number_translator/data/cities.go
Normal file
36759
insee_number_translator/data/cities.go
Normal file
File diff suppressed because it is too large
Load diff
275
insee_number_translator/data/countries.go
Normal file
275
insee_number_translator/data/countries.go
Normal file
|
@ -0,0 +1,275 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
var CONTINENTS = map[string]string{
|
||||||
|
"1": "Europe",
|
||||||
|
"2": "Asie",
|
||||||
|
"3": "Afrique",
|
||||||
|
"4": "Amérique",
|
||||||
|
"5": "Océanie",
|
||||||
|
}
|
||||||
|
|
||||||
|
var COUNTRIES = map[string][]string{
|
||||||
|
"99125": {"ALBANIE"},
|
||||||
|
"99109": {"ALLEMAGNE"},
|
||||||
|
"99130": {"ANDORRE"},
|
||||||
|
"99110": {"AUTRICHE"},
|
||||||
|
"99131": {"BELGIQUE"},
|
||||||
|
"99148": {"BIELORUSSIE"},
|
||||||
|
"99118": {"BOSNIE-HERZEGOVINE"},
|
||||||
|
"99111": {"BULGARIE"},
|
||||||
|
"99119": {"CROATIE"},
|
||||||
|
"99101": {"DANEMARK", "FEROE (ILES)"},
|
||||||
|
"99134": {"ESPAGNE"},
|
||||||
|
"99106": {"ESTONIE"},
|
||||||
|
"99156": {"EX-REPUBLIQUE YOUGOSLAVE DE MACEDOINE"},
|
||||||
|
"99105": {"FINLANDE"},
|
||||||
|
"99133": {"GIBRALTAR"},
|
||||||
|
"99126": {"GRECE"},
|
||||||
|
"99132": {"ROYAUME-UNI", "GUERNESEY", "JERSEY", "MAN (ILE)"},
|
||||||
|
"99112": {"HONGRIE"},
|
||||||
|
"99136": {"IRLANDE, ou EIRE"},
|
||||||
|
"99102": {"ISLANDE"},
|
||||||
|
"99127": {"ITALIE"},
|
||||||
|
"99157": {"KOSOVO"},
|
||||||
|
"99107": {"LETTONIE"},
|
||||||
|
"99113": {"LIECHTENSTEIN"},
|
||||||
|
"99108": {"LITUANIE"},
|
||||||
|
"99137": {"LUXEMBOURG"},
|
||||||
|
"99144": {"MALTE"},
|
||||||
|
"99151": {"MOLDAVIE"},
|
||||||
|
"99138": {"MONACO"},
|
||||||
|
"99120": {"MONTENEGRO"},
|
||||||
|
"99103": {"NORVEGE", "BOUVET (ILE)", "SVALBARD et ILE JAN MAYEN"},
|
||||||
|
"99135": {"PAYS-BAS", "ARUBA"},
|
||||||
|
"99122": {"POLOGNE"},
|
||||||
|
"99139": {"PORTUGAL"},
|
||||||
|
"99141": {"REPUBLIQUE DEMOCRATIQUE ALLEMANDE"},
|
||||||
|
"99142": {"REPUBLIQUE FEDERALE D'ALLEMAGNE"},
|
||||||
|
"99114": {"ROUMANIE"},
|
||||||
|
"99123": {"RUSSIE"},
|
||||||
|
"99128": {"SAINT-MARIN"},
|
||||||
|
"99121": {"SERBIE"},
|
||||||
|
"99117": {"SLOVAQUIE"},
|
||||||
|
"99145": {"SLOVENIE"},
|
||||||
|
"99104": {"SUEDE"},
|
||||||
|
"99140": {"SUISSE"},
|
||||||
|
"99115": {"TCHECOSLOVAQUIE"},
|
||||||
|
"99116": {"TCHEQUE (REPUBLIQUE)"},
|
||||||
|
"99124": {"TURQUIE D'EUROPE"},
|
||||||
|
"99155": {"UKRAINE"},
|
||||||
|
"99129": {"VATICAN, ou SAINT-SIEGE"},
|
||||||
|
"99212": {"AFGHANISTAN"},
|
||||||
|
"99201": {"ARABIE SAOUDITE"},
|
||||||
|
"99252": {"ARMENIE"},
|
||||||
|
"99253": {"AZERBAIDJAN"},
|
||||||
|
"99249": {"BAHREIN"},
|
||||||
|
"99246": {"BANGLADESH"},
|
||||||
|
"99214": {"BHOUTAN"},
|
||||||
|
"99224": {"BIRMANIE"},
|
||||||
|
"99225": {"BRUNEI"},
|
||||||
|
"99234": {"CAMBODGE"},
|
||||||
|
"99216": {"CHINE"},
|
||||||
|
"99254": {"CHYPRE"},
|
||||||
|
"99237": {"COREE"},
|
||||||
|
"99239": {"COREE (REPUBLIQUE DE)"},
|
||||||
|
"99238": {"COREE (REPUBLIQUE POPULAIRE DEMOCRATIQUE DE)"},
|
||||||
|
"99247": {"EMIRATS ARABES UNIS"},
|
||||||
|
"99228": {"ETATS MALAIS NON FEDERES"},
|
||||||
|
"99255": {"GEORGIE"},
|
||||||
|
"99230": {"HONG-KONG"},
|
||||||
|
"99223": {"INDE", "GOA"},
|
||||||
|
"99231": {"INDONESIE"},
|
||||||
|
"99204": {"IRAN"},
|
||||||
|
"99203": {"IRAQ"},
|
||||||
|
"99207": {"ISRAEL"},
|
||||||
|
"99217": {"JAPON"},
|
||||||
|
"99222": {"JORDANIE"},
|
||||||
|
"99211": {"KAMTCHATKA"},
|
||||||
|
"99256": {"KAZAKHSTAN"},
|
||||||
|
"99257": {"KIRGHIZISTAN"},
|
||||||
|
"99240": {"KOWEIT"},
|
||||||
|
"99241": {"LAOS"},
|
||||||
|
"99205": {"LIBAN"},
|
||||||
|
"99232": {"MACAO"},
|
||||||
|
"99227": {"MALAISIE"},
|
||||||
|
"99229": {"MALDIVES"},
|
||||||
|
"99218": {"MANDCHOURIE"},
|
||||||
|
"99242": {"MONGOLIE"},
|
||||||
|
"99215": {"NEPAL"},
|
||||||
|
"99250": {"OMAN"},
|
||||||
|
"99258": {"OUZBEKISTAN"},
|
||||||
|
"99213": {"PAKISTAN"},
|
||||||
|
"99261": {"PALESTINE (Etat de)"},
|
||||||
|
"99220": {"PHILIPPINES"},
|
||||||
|
"99221": {"POSSESSIONS BRITANNIQUES AU PROCHE-ORIENT"},
|
||||||
|
"99248": {"QATAR"},
|
||||||
|
"99209": {"SIBERIE"},
|
||||||
|
"99226": {"SINGAPOUR"},
|
||||||
|
"99235": {"SRI LANKA"},
|
||||||
|
"99206": {"SYRIE"},
|
||||||
|
"99259": {"TADJIKISTAN"},
|
||||||
|
"99236": {"TAIWAN"},
|
||||||
|
"99219": {"THAILANDE"},
|
||||||
|
"99262": {"TIMOR ORIENTAL"},
|
||||||
|
"99210": {"TURKESTAN RUSSE"},
|
||||||
|
"99260": {"TURKMENISTAN"},
|
||||||
|
"99208": {"TURQUIE"},
|
||||||
|
"99243": {"VIET NAM"},
|
||||||
|
"99244": {"VIET NAM DU NORD"},
|
||||||
|
"99245": {"VIET NAM DU SUD"},
|
||||||
|
"99251": {"YEMEN"},
|
||||||
|
"99233": {"YEMEN DEMOCRATIQUE"},
|
||||||
|
"99202": {"YEMEN (REPUBLIQUE ARABE DU)"},
|
||||||
|
"99319": {"ACORES, MADERE"},
|
||||||
|
"99303": {"AFRIQUE DU SUD"},
|
||||||
|
"99352": {"ALGERIE"},
|
||||||
|
"99395": {"ANGOLA"},
|
||||||
|
"99327": {"BENIN"},
|
||||||
|
"99347": {"BOTSWANA"},
|
||||||
|
"99331": {"BURKINA"},
|
||||||
|
"99321": {"BURUNDI"},
|
||||||
|
"99322": {"CAMEROUN"},
|
||||||
|
"99305": {"CAMEROUN ET TOGO"},
|
||||||
|
"99396": {"CAP-VERT"},
|
||||||
|
"99323": {"CENTRAFRICAINE (REPUBLIQUE)"},
|
||||||
|
"99397": {"COMORES"},
|
||||||
|
"99324": {"CONGO"},
|
||||||
|
"99312": {"CONGO (REPUBLIQUE DEMOCRATIQUE)"},
|
||||||
|
"99326": {"COTE D'IVOIRE"},
|
||||||
|
"99399": {"DJIBOUTI"},
|
||||||
|
"99301": {"EGYPTE"},
|
||||||
|
"99317": {"ERYTHREE"},
|
||||||
|
"99391": {"ESWATINI"},
|
||||||
|
"99315": {"ETHIOPIE"},
|
||||||
|
"99328": {"GABON"},
|
||||||
|
"99304": {"GAMBIE"},
|
||||||
|
"99329": {"GHANA"},
|
||||||
|
"99330": {"GUINEE"},
|
||||||
|
"99314": {"GUINEE EQUATORIALE"},
|
||||||
|
"99392": {"GUINEE-BISSAU"},
|
||||||
|
"99320": {"ILES PORTUGAISES DE L'OCEAN INDIEN"},
|
||||||
|
"99332": {"KENYA"},
|
||||||
|
"99348": {"LESOTHO"},
|
||||||
|
"99302": {"LIBERIA"},
|
||||||
|
"99316": {"LIBYE"},
|
||||||
|
"99333": {"MADAGASCAR"},
|
||||||
|
"99334": {"MALAWI"},
|
||||||
|
"99335": {"MALI"},
|
||||||
|
"99350": {"MAROC"},
|
||||||
|
"99390": {"MAURICE"},
|
||||||
|
"99336": {"MAURITANIE"},
|
||||||
|
"99393": {"MOZAMBIQUE"},
|
||||||
|
"99311": {"NAMIBIE"},
|
||||||
|
"99337": {"NIGER"},
|
||||||
|
"99338": {"NIGERIA"},
|
||||||
|
"99339": {"OUGANDA"},
|
||||||
|
"99313": {"PROVINCES ESPAGNOLES D'AFRIQUE", "PRESIDES", "CANARIES (ILES)"},
|
||||||
|
"99340": {"RWANDA"},
|
||||||
|
"99389": {"SAHARA OCCIDENTAL"},
|
||||||
|
"99306": {"SAINTE HELENE, ASCENSION ET TRISTAN DA CUNHA"},
|
||||||
|
"99394": {"SAO TOME-ET-PRINCIPE"},
|
||||||
|
"99341": {"SENEGAL"},
|
||||||
|
"99398": {"SEYCHELLES"},
|
||||||
|
"99342": {"SIERRA LEONE"},
|
||||||
|
"99318": {"SOMALIE"},
|
||||||
|
"99343": {"SOUDAN"},
|
||||||
|
"99307": {"SOUDAN ANGLO-EGYPTIEN, KENYA, OUGANDA"},
|
||||||
|
"99349": {"SOUDAN DU SUD"},
|
||||||
|
"99325": {"TANGER"},
|
||||||
|
"99309": {"TANZANIE"},
|
||||||
|
"99344": {"TCHAD"},
|
||||||
|
"99345": {"TOGO"},
|
||||||
|
"99351": {"TUNISIE"},
|
||||||
|
"99346": {"ZAMBIE"},
|
||||||
|
"99308": {"ZANZIBAR", "OCEAN INDIEN (TERRITOIRE BRITANNIQUE DE L')"},
|
||||||
|
"99310": {"ZIMBABWE"},
|
||||||
|
"99441": {"ANTIGUA-ET-BARBUDA"},
|
||||||
|
"99431": {"ANTILLES NEERLANDAISES"},
|
||||||
|
"99415": {"ARGENTINE"},
|
||||||
|
"99436": {"BAHAMAS"},
|
||||||
|
"99434": {"BARBADE"},
|
||||||
|
"99429": {"BELIZE"},
|
||||||
|
"99425": {
|
||||||
|
"BERMUDES",
|
||||||
|
"ANGUILLA",
|
||||||
|
"CAIMANES (ILES)",
|
||||||
|
"MONTSERRAT",
|
||||||
|
"TURKS ET CAIQUES (ILES)",
|
||||||
|
"VIERGES BRITANNIQUES (ILES)",
|
||||||
|
"TERRITOIRES DU ROYAUME-UNI AUX ANTILLES",
|
||||||
|
},
|
||||||
|
"99418": {"BOLIVIE"},
|
||||||
|
"99443": {"BONAIRE, SAINT EUSTACHE ET SABA"},
|
||||||
|
"99416": {"BRESIL"},
|
||||||
|
"99401": {"CANADA"},
|
||||||
|
"99417": {"CHILI"},
|
||||||
|
"99419": {"COLOMBIE"},
|
||||||
|
"99406": {"COSTA RICA"},
|
||||||
|
"99407": {"CUBA"},
|
||||||
|
"99444": {"CURAÇAO"},
|
||||||
|
"99408": {"DOMINICAINE (REPUBLIQUE)"},
|
||||||
|
"99438": {"DOMINIQUE"},
|
||||||
|
"99414": {"EL SALVADOR"},
|
||||||
|
"99420": {"EQUATEUR"},
|
||||||
|
"99404": {"ETATS-UNIS", "ALASKA"},
|
||||||
|
"99435": {"GRENADE"},
|
||||||
|
"99430": {"GROENLAND"},
|
||||||
|
"99409": {"GUATEMALA"},
|
||||||
|
"99428": {"GUYANA"},
|
||||||
|
"99410": {"HAITI"},
|
||||||
|
"99411": {"HONDURAS"},
|
||||||
|
"99426": {"JAMAIQUE"},
|
||||||
|
"99403": {"LABRADOR"},
|
||||||
|
"99427": {
|
||||||
|
"MALOUINES, OU FALKLAND (ILES)",
|
||||||
|
"GEORGIE DU SUD ET LES ILES SANDWICH DU SUD",
|
||||||
|
"TERR. DU ROYAUME-UNI DANS L'ATLANTIQUE SUD",
|
||||||
|
},
|
||||||
|
"99405": {"MEXIQUE"},
|
||||||
|
"99412": {"NICARAGUA"},
|
||||||
|
"99413": {"PANAMA"},
|
||||||
|
"99421": {"PARAGUAY"},
|
||||||
|
"99422": {"PEROU"},
|
||||||
|
"99432": {
|
||||||
|
"PORTO RICO",
|
||||||
|
"VIERGES DES ETATS-UNIS (ILES)",
|
||||||
|
"TERR. DES ETATS-UNIS D'AMERIQUE EN AMERIQUE",
|
||||||
|
},
|
||||||
|
"99442": {"SAINT-CHRISTOPHE-ET-NIEVES"},
|
||||||
|
"99439": {"SAINTE-LUCIE"},
|
||||||
|
"99445": {"SAINT-MARTIN (PARTIE NEERLANDAISE)"},
|
||||||
|
"99440": {"SAINT-VINCENT-ET-LES GRENADINES"},
|
||||||
|
"99437": {"SURINAME"},
|
||||||
|
"99402": {"TERRE-NEUVE"},
|
||||||
|
"99433": {"TRINITE-ET-TOBAGO"},
|
||||||
|
"99423": {"URUGUAY"},
|
||||||
|
"99424": {"VENEZUELA"},
|
||||||
|
"99501": {
|
||||||
|
"AUSTRALIE",
|
||||||
|
"CHRISTMAS (ILE)",
|
||||||
|
"COCOS ou KEELING (ILES)",
|
||||||
|
"HEARD ET MACDONALD (ILES)",
|
||||||
|
"NORFOLK (ILE)",
|
||||||
|
},
|
||||||
|
"99508": {"FIDJI"},
|
||||||
|
"99504": {"HAWAII (ILES)"},
|
||||||
|
"99513": {"KIRIBATI"},
|
||||||
|
"99515": {"MARSHALL (ILES)"},
|
||||||
|
"99516": {"MICRONESIE (ETATS FEDERES DE)"},
|
||||||
|
"99507": {"NAURU"},
|
||||||
|
"99502": {"NOUVELLE-ZELANDE", "COOK (ILES)", "NIUE", "TOKELAU"},
|
||||||
|
"99517": {"PALAOS (ILES)"},
|
||||||
|
"99510": {"PAPOUASIE-NOUVELLE-GUINEE"},
|
||||||
|
"99503": {"PITCAIRN (ILE)"},
|
||||||
|
"99512": {"SALOMON (ILES)"},
|
||||||
|
"99506": {"SAMOA OCCIDENTALES"},
|
||||||
|
"99505": {
|
||||||
|
"GUAM",
|
||||||
|
"SAMOA AMERICAINES",
|
||||||
|
"MARIANNES DU NORD (ILES)",
|
||||||
|
"TERR. DES ETATS-UNIS D'AMERIQUE EN OCEANIE",
|
||||||
|
},
|
||||||
|
"99509": {"TONGA"},
|
||||||
|
"99511": {"TUVALU"},
|
||||||
|
"99514": {"VANUATU"},
|
||||||
|
}
|
113
insee_number_translator/data/departments.go
Normal file
113
insee_number_translator/data/departments.go
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
var DEPARTMENTS = map[string]string{
|
||||||
|
"01": "Ain",
|
||||||
|
"02": "Aisne",
|
||||||
|
"03": "Allier",
|
||||||
|
"04": "Alpes-de-Haute-Provence",
|
||||||
|
"05": "Hautes-Alpes",
|
||||||
|
"06": "Alpes-Maritimes",
|
||||||
|
"07": "Ardèche",
|
||||||
|
"08": "Ardennes",
|
||||||
|
"09": "Ariège",
|
||||||
|
"10": "Aube",
|
||||||
|
"11": "Aude",
|
||||||
|
"12": "Aveyron",
|
||||||
|
"13": "Bouches-du-Rhône",
|
||||||
|
"14": "Calvados",
|
||||||
|
"15": "Cantal",
|
||||||
|
"16": "Charente",
|
||||||
|
"17": "Charente-Maritime",
|
||||||
|
"18": "Cher",
|
||||||
|
"19": "Corrèze",
|
||||||
|
"2A": "Corse-du-Sud",
|
||||||
|
"2B": "Haute-Corse",
|
||||||
|
"21": "Côte-d'Or",
|
||||||
|
"22": "Côtes-d'Armor",
|
||||||
|
"23": "Creuse",
|
||||||
|
"24": "Dordogne",
|
||||||
|
"25": "Doubs",
|
||||||
|
"26": "Drôme",
|
||||||
|
"27": "Eure",
|
||||||
|
"28": "Eure-et-Loir",
|
||||||
|
"29": "Finistère",
|
||||||
|
"30": "Gard",
|
||||||
|
"31": "Haute-Garonne",
|
||||||
|
"32": "Gers",
|
||||||
|
"33": "Gironde",
|
||||||
|
"34": "Hérault",
|
||||||
|
"35": "Ille-et-Vilaine",
|
||||||
|
"36": "Indre",
|
||||||
|
"37": "Indre-et-Loire",
|
||||||
|
"38": "Isère",
|
||||||
|
"39": "Jura",
|
||||||
|
"40": "Landes",
|
||||||
|
"41": "Loir-et-Cher",
|
||||||
|
"42": "Loire",
|
||||||
|
"43": "Haute-Loire",
|
||||||
|
"44": "Loire-Atlantique",
|
||||||
|
"45": "Loiret",
|
||||||
|
"46": "Lot",
|
||||||
|
"47": "Lot-et-Garonne",
|
||||||
|
"48": "Lozère",
|
||||||
|
"49": "Maine-et-Loire",
|
||||||
|
"50": "Manche",
|
||||||
|
"51": "Marne",
|
||||||
|
"52": "Haute-Marne",
|
||||||
|
"53": "Mayenne",
|
||||||
|
"54": "Meurthe-et-Moselle",
|
||||||
|
"55": "Meuse",
|
||||||
|
"56": "Morbihan",
|
||||||
|
"57": "Moselle",
|
||||||
|
"58": "Nièvre",
|
||||||
|
"59": "Nord",
|
||||||
|
"60": "Oise",
|
||||||
|
"61": "Orne",
|
||||||
|
"62": "Pas-de-Calais",
|
||||||
|
"63": "Puy-de-Dôme",
|
||||||
|
"64": "Pyrénées-Atlantiques",
|
||||||
|
"65": "Hautes-Pyrénées",
|
||||||
|
"66": "Pyrénées-Orientales",
|
||||||
|
"67": "Bas-Rhin",
|
||||||
|
"68": "Haut-Rhin",
|
||||||
|
"69": "Rhône",
|
||||||
|
"70": "Haute-Saône",
|
||||||
|
"71": "Saône-et-Loire",
|
||||||
|
"72": "Sarthe",
|
||||||
|
"73": "Savoie",
|
||||||
|
"74": "Haute-Savoie",
|
||||||
|
"75": "Paris",
|
||||||
|
"76": "Seine-Maritime",
|
||||||
|
"77": "Seine-et-Marne",
|
||||||
|
"78": "Yvelines",
|
||||||
|
"79": "Deux-Sèvres",
|
||||||
|
"80": "Somme",
|
||||||
|
"81": "Tarn",
|
||||||
|
"82": "Tarn-et-Garonne",
|
||||||
|
"83": "Var",
|
||||||
|
"84": "Vaucluse",
|
||||||
|
"85": "Vendée",
|
||||||
|
"86": "Vienne",
|
||||||
|
"87": "Haute-Vienne",
|
||||||
|
"88": "Vosges",
|
||||||
|
"89": "Yonne",
|
||||||
|
"90": "Territoire de Belfort",
|
||||||
|
"91": "Essonne",
|
||||||
|
"92": "Hauts-de-Seine",
|
||||||
|
"93": "Seine-Saint-Denis",
|
||||||
|
"94": "Val-de-Marne",
|
||||||
|
"95": "Val-d'Oise",
|
||||||
|
"971": "Guadeloupe",
|
||||||
|
"972": "Martinique",
|
||||||
|
"973": "Guyane",
|
||||||
|
"974": "La Réunion",
|
||||||
|
"975": "Saint-Pierre-et-Miquelon",
|
||||||
|
"976": "Mayotte",
|
||||||
|
"977": "Saint-Barthélemy",
|
||||||
|
"978": "Saint-Martin",
|
||||||
|
"984": "Terres australes et antarctiques françaises",
|
||||||
|
"986": "Wallis et Futuna",
|
||||||
|
"987": "Polynésie française",
|
||||||
|
"988": "Nouvelle-Calédonie",
|
||||||
|
"989": "Île de Clipperton",
|
||||||
|
}
|
90
insee_number_translator/main.go
Normal file
90
insee_number_translator/main.go
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type InseeData struct {
|
||||||
|
inseeNumber string
|
||||||
|
gender string
|
||||||
|
year int
|
||||||
|
month int
|
||||||
|
department string
|
||||||
|
city string
|
||||||
|
foreign bool
|
||||||
|
country string
|
||||||
|
orderOfBirth int
|
||||||
|
controlKey int
|
||||||
|
}
|
||||||
|
|
||||||
|
func newInseeData(inseeNumber string) (*InseeData, error) {
|
||||||
|
num := inseeNumber
|
||||||
|
department := num[5:7]
|
||||||
|
city := num[7:10]
|
||||||
|
if department == "97" || department == "98" {
|
||||||
|
department = num[5:8]
|
||||||
|
city = num[8:10]
|
||||||
|
}
|
||||||
|
dep, err := strconv.Atoi(department)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
foreign := false
|
||||||
|
country := ""
|
||||||
|
if (dep >= 91 && dep <= 96) || dep == 99 {
|
||||||
|
foreign = true
|
||||||
|
country = city
|
||||||
|
city = ""
|
||||||
|
}
|
||||||
|
order, err := strconv.Atoi(num[10:13])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
controlKey, err := strconv.Atoi(num[13:])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
month, err := strconv.Atoi(num[3:5])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
year, err := strconv.Atoi(num[1:3])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
year += 2000
|
||||||
|
now := time.Now()
|
||||||
|
birthday := time.Date(year, time.Month(month), 1, 0, 0, 0, 0, nil)
|
||||||
|
if birthday.After(now) {
|
||||||
|
year -= 100
|
||||||
|
}
|
||||||
|
return &InseeData{
|
||||||
|
inseeNumber: num,
|
||||||
|
gender: num[0:1],
|
||||||
|
year: year,
|
||||||
|
month: month,
|
||||||
|
department: department,
|
||||||
|
city: city,
|
||||||
|
foreign: foreign,
|
||||||
|
country: country,
|
||||||
|
orderOfBirth: order,
|
||||||
|
controlKey: controlKey,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (insee InseeData) isValid() (bool, error) {
|
||||||
|
num := strings.Replace(insee.inseeNumber, "2A", "19", 1)
|
||||||
|
num = strings.Replace(num, "2B", "18", 1)[:len(num)-2]
|
||||||
|
numInt, err := strconv.Atoi(num)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
code := 97 - (numInt % 97)
|
||||||
|
return code == insee.controlKey, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue