-
Notifications
You must be signed in to change notification settings - Fork 4
/
ViaCEPController
121 lines (95 loc) · 3.37 KB
/
ViaCEPController
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
113
114
115
116
117
118
119
120
121
public class ViaCEPController {
public static String consultaJSON(String cep) {
//Não esquecer de cadastrar o viacep como site remoto
HttpRequest req = new HttpRequest();
req.setEndpoint('https://viacep.com.br/ws/' + cep + '/json/');
req.setMethod('GET');
req.setHeader('Content-Type', 'application/json');
req.setTimeout(120000);
try {
Http h = new Http();
HttpResponse res = h.send(req);
system.debug(res.getBody());
if (res.getStatusCode() == 200) {
ViaCep dados = parse(res.getBody());
if (dados.erro == true) {
return 'erro';
}
insereEndereco(
dados.logradouro,
dados.bairro,
dados.cep,
dados.localidade,
dados.complemento,
dados.uf
);
return 'sucesso';
}
} catch (Exception e) {
system.debug('erro' + e.getMessage());
return 'erro';
}
return null;
}
@Future(Callout = true)
public static void consultaXML(String cep) {
HttpRequest req = new HttpRequest();
req.setEndpoint('https://viacep.com.br/ws/' + cep + '/xml/');
req.setMethod('GET');
req.setHeader('Content-Type', 'application/xml');
req.setTimeout(120000);
try {
Http h = new Http();
HttpResponse res = h.send(req);
system.debug(res.getBody());
if (res.getStatusCode() == 200) {
String JsonConvertido = XMLParser.xmlToJson(res.getBody());
XMLCEPClass instanciaXML = new XMLCEPClass();
instanciaXML = instanciaXML.parse(JsonConvertido);
ViaCep dados = instanciaXML.xmlcep;
insereEndereco(
dados.logradouro,
dados.bairro,
dados.cep,
dados.localidade,
dados.complemento,
dados.uf
);
}
} catch (Exception e) {
system.debug('erro' + e.getMessage());
}
}
public static void insereEndereco(String logradouro, String bairro,
String cep, String localidade, String complemento, String uf) {
Endereco__c endereco = new Endereco__c();
endereco.Name = logradouro;
endereco.Bairro__c = bairro;
endereco.CEP__c = cep;
endereco.Cidade__c = localidade;
endereco.Complemento__c = complemento;
endereco.Estado__c = uf;
upsert endereco CEP__c; //upsert by External Id
}
public class XMLCEPClass {
public ViaCep xmlcep;
public XMLCEPClass parse(String json) {
return (XMLCEPClass) System.JSON.deserialize(json, XMLCEPClass.class);
}
}
public class ViaCep {
public String cep;
public String logradouro;
public String complemento;
public String bairro;
public String localidade;
public String uf;
public String unidade;
public String ibge;
public String gia;
public Boolean erro;
}
public static ViaCep parse(String json) {
return (ViaCep) System.JSON.deserialize(json, ViaCep.class);
}
}