-
Notifications
You must be signed in to change notification settings - Fork 3
/
Whatsapp.pas
136 lines (116 loc) · 3.69 KB
/
Whatsapp.pas
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
unit Whatsapp;
// BIBLIOTECA DE FUNÇÕES DESEVOLVIDA POR VALTER PATRICK SILVA FERREIRA - [email protected]
interface
uses System.StrUtils, System.SysUtils, System.NetEncoding, ShellApi;
type
TWhatsapp = class
private
FProtocolo: String;
FLinkAPI: String;
FIdioma: String;
FTelefoneComDDD: String;
FCodigoPais: Integer;
FMensagem: String;
function MontarTelefone: String;
function EncodeMensagem(Mens: String): String;
function SomenteNumeros(Num: String): String;
function GetProtocolo: String;
function GetLinkAPI: String;
function GetLinkCompleto: String;
function GetIdioma: String;
function GetTextoCodificado: String;
function GetCodigoPais: Integer;
public
property Protocolo: String read GetProtocolo write FProtocolo;
property LinkAPI: String read GetLinkAPI write FLinkAPI;
property Idioma: String read GetIdioma write FIdioma;
property TelefoneComDDD: String read FTelefoneComDDD write FTelefoneComDDD;
property CodigoPais: Integer read GetCodigoPais write FCodigoPais;
property Mensagem: String read FMensagem write FMensagem;
property TextoCodificado: String read GetTextoCodificado;
property LinkCompleto: String read GetLinkCompleto;
procedure EnviarMensagem;
end;
CONST
ProtocoloPadrao = 'https';
LinkAPIPadrao = 'api.whatsapp.com';
IdiomaPadrao = 'pt_BR';
CodigoPaisPadrao = 55;
ParametroIdiomaPadrao = 'l';
ParametroTelefonePadrao = 'phone';
ParametroMensagemPadrao = 'text';
implementation
{ TWhatsapp }
function TWhatsapp.EncodeMensagem(Mens: String): String;
begin
Result := IfThen(Mens = '', '', TNetEncoding.URL.Encode(Mens));
end;
function TWhatsapp.MontarTelefone: String;
begin
Result := '';
Result := SomenteNumeros(FTelefoneComDDD);
if Length(Result) > 0 then
Result := '+' + IntToStr(GetCodigoPais) + Result
else
Result := '';
end;
procedure TWhatsapp.EnviarMensagem;
begin
if FMensagem.Trim = '' then
raise Exception.Create('Não há mensagem para ser enviada.');
ShellExecute(0, 'open', PWideChar(GetLinkCompleto), '', '', 1)
end;
function TWhatsapp.GetCodigoPais: Integer;
begin
if FCodigoPais = 0 then
Result := CodigoPaisPadrao
else
Result := FCodigoPais;
end;
function TWhatsapp.GetIdioma: String;
begin
if FIdioma.Trim = '' then
Result := IdiomaPadrao
else
Result := FIdioma.Trim;
end;
function TWhatsapp.GetLinkAPI: String;
begin
if FLinkAPI.Trim = '' then
Result := LinkAPIPadrao
else
Result := FLinkAPI.Trim.Replace('/', '').Replace('\', '');
end;
function TWhatsapp.GetLinkCompleto: String;
var
ParTel, ParIdioma, ParMensagem: String;
begin
ParTel := MontarTelefone;
ParTel := Ifthen(ParTel = '', '', ParametroTelefonePadrao + '=' + ParTel);
ParIdioma := ParametroIdiomaPadrao + '=' + GetIdioma;
ParMensagem := ParametroMensagemPadrao + '=' + EncodeMensagem(FMensagem);
Result := GetProtocolo + '://' + GetLinkAPI + '/send?' + ParIdioma + Ifthen(ParTel = '', '', '&' + ParTel) + Ifthen(ParMensagem = '', '', '&' + ParMensagem);
end;
function TWhatsapp.GetProtocolo: String;
begin
if FProtocolo.Trim = '' then
Result := ProtocoloPadrao
else
Result := FProtocolo.Trim.Replace(':', '').Replace('/', '').Replace('\', '');
end;
function TWhatsapp.GetTextoCodificado: String;
begin
Result := EncodeMensagem(FMensagem);
end;
function TWhatsapp.SomenteNumeros(Num: String): String;
var
I: Integer;
begin
Result := '';
if Length(Num.Trim) = 0 then
Exit;
for I := 0 to Length(Num) do
if CharInSet(Num[I], ['0' .. '9']) then
Result := Result + Num[I];
end;
end.