unit xMethodsMain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, ExtCtrls, Spin, uROClient, uROSOAPMessage, uROXMLSerializer, uROPoweredByRemObjectsButton, uROWinInetHttpChannel; type TBabelOption = record ShowLabel, Code: string; end; const BabelOptions: array[0..9] of TBabelOption = ( (ShowLabel: 'English -> French'; Code: 'en_fr'), (ShowLabel: 'English -> German'; Code: 'en_de'), (ShowLabel: 'English -> Italian'; Code: 'en_it'), (ShowLabel: 'English -> Portugese'; Code: 'en_pt'), (ShowLabel: 'English -> Spanish'; Code: 'en_es'), (ShowLabel: 'French -> English'; Code: 'fr_en'), (ShowLabel: 'German -> English'; Code: 'de_en'), (ShowLabel: 'Italian -> English'; Code: 'it_en'), (ShowLabel: 'Portugese -> English'; Code: 'pt_en'), (ShowLabel: 'Spanish -> English'; Code: 'es_en')); type TxMethodsMainForm = class(TForm) SOAPMessage: TROSOAPMessage; Panel1: TPanel; pc_Pages: TPageControl; ts_Home: TTabSheet; RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton; ScrollBox1: TScrollBox; Label34: TLabel; Label33: TLabel; Label32: TLabel; Label35: TLabel; Label36: TLabel; Label37: TLabel; Label38: TLabel; tsQueryService: TTabSheet; Label4: TLabel; Label22: TLabel; Label23: TLabel; eQueryService: TEdit; QueryServiceMemo: TMemo; GetAllServiceNamesButton: TButton; GetServiceSummariesByPublisherButton: TButton; ePublisher: TEdit; GetServiceDetailButton: TButton; eServiceID: TEdit; tsFedexTracker: TTabSheet; Label6: TLabel; Label20: TLabel; Label21: TLabel; eFedex: TEdit; FedexMemo: TMemo; eTrackingID: TEdit; GetTrackingStatusButton: TButton; tsEbay: TTabSheet; Label7: TLabel; eeBay: TEdit; GetCurrentPriceButton: TButton; eAuctionValue: TEdit; ts_DomainChecker: TTabSheet; Label8: TLabel; Label15: TLabel; eDomainChecker: TEdit; eDomain: TEdit; CheckDomainButton: TButton; tsExchange: TTabSheet; Label9: TLabel; eExchange: TEdit; cbFrom: TComboBox; cbTo: TComboBox; GetRateButton: TButton; tsTraffic: TTabSheet; Label10: TLabel; eTraffic: TEdit; TrafficMemo: TMemo; eHighway: TEdit; GetTrafficButton: TButton; tsBarnsAndNoblePrice: TTabSheet; Label11: TLabel; eBarns: TEdit; eISBN: TEdit; GetPriceButton: TButton; ePrice: TEdit; tsBabelFish: TTabSheet; Label1: TLabel; TranslateButton: TButton; eInput: TEdit; eOutput: TEdit; rbBabelTransMode: TRadioGroup; eBabelFish: TEdit; Label31: TLabel; Label39: TLabel; Label40: TLabel; eDomainAvailability: TEdit; Label41: TLabel; HttpChannel: TROWinInetHTTPChannel; Label14: TLabel; Label42: TLabel; Label16: TLabel; eAuctionID: TEdit; Label17: TLabel; Bevel2: TBevel; Label43: TLabel; Label44: TLabel; Bevel3: TBevel; Label45: TLabel; Label46: TLabel; Label47: TLabel; Label48: TLabel; Label49: TLabel; Label2: TLabel; Label3: TLabel; Label50: TLabel; Label51: TLabel; Label52: TLabel; Label53: TLabel; Label54: TLabel; Label55: TLabel; Label56: TLabel; Label57: TLabel; Label58: TLabel; Label59: TLabel; Label61: TLabel; Label13: TLabel; Label30: TLabel; Label18: TLabel; Label19: TLabel; Label60: TLabel; Label62: TLabel; Label64: TLabel; Label65: TLabel; Label66: TLabel; Label67: TLabel; Label69: TLabel; Bevel1: TBevel; Bevel7: TBevel; Bevel6: TBevel; Bevel8: TBevel; Bevel4: TBevel; eRate: TMemo; procedure TranslateButtonClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure eBabelFishDblClick(Sender: TObject); procedure GetPriceButtonClick(Sender: TObject); procedure GetRateButtonClick(Sender: TObject); procedure CheckDomainButtonClick(Sender: TObject); procedure GetCurrentPriceButtonClick(Sender: TObject); procedure GetTrafficButtonClick(Sender: TObject); procedure GetTrackingStatusButtonClick(Sender: TObject); procedure GetAllServiceNamesButtonClick(Sender: TObject); procedure Label38Click(Sender: TObject); private procedure SetProxy; { Private declarations } public { Public declarations } end; var xMethodsMainForm: TxMethodsMainForm; implementation uses BabelFish_Intf, BarnsAndNoblePrice_Intf, CurrencyExchange_Intf, DomainChecker_Intf, eBayPriceWatcher_Intf, FedExTracker_Intf, CaliforniaTrafic_Intf, xMethodsQueryService_Intf, ShellAPI; {$R *.DFM} procedure TxMethodsMainForm.FormCreate(Sender: TObject); var i: integer; begin pc_Pages.ActivePageIndex := 0; for i := 0 to High(BabelOptions) do rbBabelTransMode.Items.Add(BabelOptions[i].ShowLabel); rbBabelTransMode.ItemIndex := 0; cbFrom.ItemIndex := 151; cbTo.ItemIndex := 49; end; procedure TxMethodsMainForm.SetProxy; begin { Important! Since we are using the same component for all web services we want to make the TargetURL default to the one in the original WSDL. This property is set before each request (see xxx_Intf.pas units. By erasing the value we ensure the right EndpointURI is used. } HttpChannel.TargetURL := ''; {if CheckBox1.Checked then begin HttpChannel.IndyClient.Request.ProxyServer := Edit3.Text; HttpChannel.IndyClient.Request.ProxyPort := SpinEdit1.Value; end else begin HttpChannel.IndyClient.Request.ProxyServer := ''; HttpChannel.IndyClient.Request.ProxyPort := 0; end;} end; procedure TxMethodsMainForm.eBabelFishDblClick(Sender: TObject); begin ShellExecute(0, 'open', PChar(TEdit(Sender).Text), nil, nil, SW_NORMAL); end; procedure TxMethodsMainForm.TranslateButtonClick(Sender: TObject); var svc: IBabelFishService; begin Screen.Cursor := crHourGlass; try SetProxy; eOutput.Text := ''; eOutput.Repaint(); svc := CoBabelFishService.Create(SOAPMessage, HttpChannel); eOutput.Text := svc.BabelFish(BabelOptions[rbBabelTransMode.ItemIndex].Code, eInput.Text); finally Screen.Cursor := crDefault; end; end; procedure TxMethodsMainForm.GetPriceButtonClick(Sender: TObject); var svc: IBNQuoteService; begin Screen.Cursor := crHourGlass; try SetProxy; ePrice.Text := ''; ePrice.Repaint(); svc := CoBNQuoteService.Create(SOAPMessage, HttpChannel); ePrice.Text := FloatToStr(svc.getPrice(eISBN.Text)); finally Screen.Cursor := crDefault; end; end; procedure TxMethodsMainForm.GetRateButtonClick(Sender: TObject); var svc: ICurrencyExchangeService; begin Screen.Cursor := crHourGlass; try SetProxy; svc := CoCurrencyExchangeService.Create(SOAPMessage, HttpChannel); eRate.Lines.Add('Exchange Rate from ' + cbFrom.Text + ' to ' + cbTo.Text + ' = ' + FloatToStr(svc.getRate(cbFrom.Text, cbTo.Text))); finally Screen.Cursor := crDefault; end; end; procedure TxMethodsMainForm.CheckDomainButtonClick(Sender: TObject); var svc: Inet_xmethods_services_domainchecker_DomainCheckerService; begin Screen.Cursor := crHourGlass; try SetProxy(); eDomainAvailability.Text := ''; eDomainAvailability.Repaint(); svc := Conet_xmethods_services_domainchecker_DomainCheckerService.Create(SOAPMessage, HttpChannel); eDomainAvailability.Text := svc.checkDomain(eDomain.Text); finally Screen.Cursor := crDefault; end; end; procedure TxMethodsMainForm.GetCurrentPriceButtonClick(Sender: TObject); var svc: IeBayWatcherService; Res: double; begin Screen.Cursor := crHourGlass; try SetProxy(); eAuctionValue.Text := ''; eAuctionValue.Repaint(); // ToDo: faile swith WinInetHttpChannel. why? svc := CoeBayWatcherService.Create(SOAPMessage, HttpChannel); Res := svc.getCurrentPrice(eAuctionID.Text); eAuctionValue.Text := FloatToStr(Res); finally Screen.Cursor := crDefault; end; end; procedure TxMethodsMainForm.GetTrafficButtonClick(Sender: TObject); var svc: ICATrafficService; so: TXMLSerializationOptions; begin Screen.Cursor := crHourGlass; try SetProxy(); svc := CoCATrafficService.Create(SOAPMessage, HttpChannel); TrafficMemo.Lines.Text := svc.getTraffic(eHighway.Text); SOAPMessage.SerializationOptions := so; finally Screen.Cursor := crDefault; end; end; procedure TxMethodsMainForm.GetTrackingStatusButtonClick(Sender: TObject); var svc: IFedExTrackerService; begin Screen.Cursor := crHourGlass; try SetProxy; svc := CoFedExTrackerService.Create(SOAPMessage, HttpChannel); FedexMemo.Lines.Text := svc.getStatus(eTrackingID.Text); finally Screen.Cursor := crDefault; end; end; procedure TxMethodsMainForm.GetAllServiceNamesButtonClick(Sender: TObject); var svc: IXMethodsQuery; aoss: ArrayOfServiceSummary; i: integer; sd: ServiceDetail; begin Screen.Cursor := crHourGlass; try svc := CoXMethodsQuery.Create(SOAPMessage, HttpChannel); QueryServiceMemo.Lines.Add('------------------ ' + TButton(Sender).Caption + ' ------------------'); if (Sender = getAllServiceNamesButton) or (Sender = GetServiceSummariesByPublisherButton) then begin if (Sender = GetServiceSummariesByPublisherButton) and (ePublisher.Text <> '') then aoss := svc.getServiceSummariesByPublisher(ePublisher.Text) else aoss := svc.getAllServiceSummaries; try if aoss <> nil then for i := 0 to (aoss.Count - 1) do with aoss[i] do QueryServiceMemo.Lines.Add(Format('%s : %s, %s', [id, name, shortDescription])); finally aoss.Free; end end else if (Sender = GetServiceDetailButton) then begin sd := svc.getServiceDetail(eServiceID.Text); try if sd <> nil then QueryServiceMemo.Lines.Add(sd.name + sLineBreak + sd.id + sLineBreak + sd.shortDescription + sLineBreak + sd.description + sLineBreak + sd.implementationID + sLineBreak + sd.email + sLineBreak + sd.wsdlURL + sLineBreak + sd.infoURL + sLineBreak + sd.publisherID); finally sd.Free; end; end; finally Screen.Cursor := crDefault; end; end; procedure TxMethodsMainForm.Label38Click(Sender: TObject); begin ShellExecute(Handle, 'open', pChar((Sender as TLabel).Caption), nil, nil, SW_SHOWNORMAL); end; end.