Changeset 4 for trunk/UOdorikApi.pas
- Timestamp:
- Aug 24, 2019, 12:56:52 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:ignore
-
old new 3 3 __recovery 4 4 __history 5 OdorikApi.dproj.local
-
- Property svn:ignore
-
trunk/UOdorikApi.pas
r3 r4 4 4 5 5 uses 6 System.SysUtils, System.Types, System.Classes, IdHTTP6 System.SysUtils, System.Types, System.Classes, Generics.Collections, IdHTTP 7 7 {$IFDEF ANDROID},IdSSLOpenSSLHeaders{$endif}, IdIOHandler, IdIOHandlerSocket, 8 IdIOHandlerStack, IdSSL, IdSSLOpenSSL; 8 IdIOHandlerStack, IdSSL, IdSSLOpenSSL, System.DateUtils, System.TimeSpan, 9 System.JSON; 9 10 10 11 type 12 TCall = class 13 Oid: Integer; 14 RedirectionParentId: Integer; 15 Date: TDateTime; 16 Direction: string; 17 SourceNumber: string; 18 DestinatioNumber: string; 19 DestinationName: string; 20 Length: Integer; 21 RingingLength: Integer; 22 Status: string; 23 Price: Currency; 24 PricePerMinute: Currency; 25 BalanceAfter: Currency; 26 Line: Integer; 27 Recording: string; 28 end; 29 11 30 TOdorikApi = class(TComponent) 12 31 private … … 17 36 Password: string; 18 37 ServerUrl: string; 19 function GetCredit: Double;38 function GetCredit: Currency; 20 39 function SendGet(Path: string; Parameters: string = ''): string; 40 function GetCallHistory(TimeFrom, TimeTo: TDateTime): TList<TCall>; 21 41 constructor Create(AOwner: TComponent); override; 22 42 destructor Destroy; override; … … 53 73 end; 54 74 55 function TOdorikApi.GetCredit: Double; 75 function DateTimeToXMLTime(Value: TDateTime; ApplyLocalBias: Boolean = True): string; 76 const 77 Neg: array[Boolean] of string = ('+', '-'); 78 var 79 Bias: Integer; 80 begin 81 Result := FormatDateTime('yyyy''-''mm''-''dd''T''hh'':''nn'':''ss''.''zzz', Value); { Do not localize } 82 Bias := Trunc(TTimeZone.Local.GetUtcOffset(Value).TotalMinutes); 83 if (Bias <> 0) and ApplyLocalBias then 84 begin 85 Result := Format('%s%s%.2d:%.2d', [Result, Neg[Bias > 0], { Do not localize } 86 Abs(Bias) div MinsPerHour, 87 Abs(Bias) mod MinsPerHour]); 88 end else 89 Result := Result + 'Z'; { Do not localize } 90 end; 91 92 function TOdorikApi.GetCallHistory(TimeFrom, TimeTo: TDateTime): TList<TCall>; 93 var 94 Response: string; 95 LJsonResponse: TJSONValue; 96 jv: TJSONValue; 97 joName: TJSONObject; 98 Call: TCall; 99 begin 100 Result := TList<TCall>.Create; 101 Response := SendGet('/calls.json', 'from=' + DateTimeToXMLTime(TimeFrom) + 102 '&to=' + DateTimeToXMLTime(TimeTo)); 103 LJsonResponse := TJSONObject.ParseJSONValue(Response); 104 for jv in LJsonResponse as TJSONArray do begin 105 joName := jv as TJSONObject; 106 Call := TCall.Create; 107 Call.SourceNumber := joName.Get('source_number').JSONValue.Value; 108 Call.DestinatioNumber := joName.Get('destination_number').JSONValue.Value; 109 Result.Add(Call); 110 end; 111 end; 112 113 function TOdorikApi.GetCredit: Currency; 56 114 var 57 115 Response: string;
Note:
See TracChangeset
for help on using the changeset viewer.