OK - found my old code.
It's a complete mess!! I'm posting it because it was requested and it does cover how the eBay API works. Please don't complain about formatting, comments, etc. This code should execute fine but the eBay API code needs updating. eBay API documentation is available at:
. Any questions, just ask!
Code: Select all
;- Enumeration
Enumeration
;- Main window enum
#winMAIN
#MAIN_GRID
#MAIN_menu
#MAIN_menu_exit
#MAIN_menu_help
#MAIN_menu_about
#MAIN_menu_update
#MAIN_menu_prefs
#MAIN_btn_new
#MAIN_btn_edit
#MAIN_btn_delete
;- About window
#winABOUT
#ABOUT_btn_ok
;- Auction window
#winAUCTION
#AUCTION_btn_save
#AUCTION_btn_cancel
#AUCTION_btn_cat1
#AUCTION_btn_cat2
#AUCTION_panel
#AUCTION_images
#AUCTION_btn_addimage
#AUCTION_btn_deleteimage
#AUCTION_item_title
#AUCTION_item_subtitle
#AUCTION_item_qty
#AUCTION_item_reserve
#AUCTION_item_price
#AUCTION_item_buyitnow
#AUCTION_item_cat1
#AUCTION_item_cat2
#AUCTION_check_bold
#AUCTION_check_border
#AUCTION_check_highlight
#AUCTION_check_paypal
#AUCTION_item_paypalemail
#AUCTION_check_check
#AUCTION_check_mo
#AUCTION_check_other
#AUCTION_item_description
#AUCTION_shipping
#AUCTION_shippingtype
;- Preferences window enum
#winPREFS
#PREFS_btn_save
#PREFS_btn_cancel
#PREFS_panel
#PREFS_check_update
#PREFS_check_imageother
#PREFS_check_imagegoop
#PREFS_goop_username
#PREFS_goop_password
#PREFS_btn_goopsignup
#PREFS_edit_disclaimer
#PREFS_edit_shipping
#PREFS_edit_return
#PREFS_btn_upgrades
#PREFS_btn_payments
#PREFS_btn_shipping
;- Category window
#winCATEGORY
#CATEGORY_btn_ok
#CATEGORY_btn_cancel
#CATEGORY_tree
#CATEGORY_database
;- Add image window
#winIMAGEURL
#IMAGEURL_address
#IMAGEURL_btn_add
#IMAGEURL_btn_cancel
;- Downloading window enum
#winDOWNLOADING
#DOWNLOADING_cancel
#DOWNLOADING_list
#DATABASE
#DATA_GADGET
#CONFIGFILE
#CALLS_time
#CALLS_additem
#CATFILE
#XML
EndEnumeration
;- Global variables
; Your credentials go here
Global EbayDevName$ = ""
Global EbayAppName$ = ""
Global EbayCertName$ = ""
Global EbayAPIVersion$ = "533"
Global EbayAuthToken$ = ""
Global catid$
Global catlevel$
Global processcategories = #False
Global newitem
Global prefs_update$
Global prefs_disclaimer$
Global prefs_shipping$
Global prefs_return$
Global prefs_host$
Global prefs_user$
Global prefs_pass$
Global auction_title$
Global auction_subtitle$
Global auction_qty$
Global auction_price$
Global auction_reserve$
Global auction_buynow$
Global auction_cat1$
Global auction_cat2$
Global auction_bold$
Global auction_border$
Global auction_highlight$
Global auction_paypaladdress$
Global auction_usepaypal$
Global auction_check$
Global auction_mo$
Global auction_other$
Global auction_shipping$
Global auction_images$
Global auction_description$
Global close_winDOWNLOADING = #False
Global addnewtodownloadlist = #False
Global currentbytesdownloaded = 0
Global selectedforedit
Global whichcat
;- Declarations
Declare open_winMAIN()
Declare open_winABOUT()
Declare open_winAUCTION()
Declare open_winPREFS()
Declare open_winUPDATE()
Declare open_winDEFAULTS()
Declare open_winCATEGORY()
Declare open_winIMAGEURL()
Declare open_winDOWNLOADING()
Declare ListInventory()
Declare SaveInventory()
Declare SavePrefs()
Declare GetPrefs()
Declare LoadAuctionData()
Declare ClearAuctionData()
Declare.s GetXMLData(XMLTag$, String$)
Declare.s GetXMLData2(XMLTag$, String$)
Declare ProcessCategories(*CurrentNode, Position)
Declare.s ConnectToEbay(Call$)
Declare.s EbayHeaders(CallToEbay$)
Declare.s EbayOfficialTime()
Declare.s AddItem()
Declare.s DownloadCategories()
;- Main loop
GetPrefs() ; Load preferences
open_winMAIN() ; Display main window
ListInventory() ; List inventory in window
If prefs_update$ = "1" ; Check if update is set in preferences
DisableWindow(#winMAIN, #True) ;
open_winDOWNLOADING() ;
EndIf ;
Repeat
event = WindowEvent()
If event = #PB_Event_CloseWindow
quit = 1
ElseIf event = #PB_Event_Menu
Select EventMenu()
Case #MAIN_menu_exit: quit = 1
Case #MAIN_menu_about
DisableWindow(#winMAIN, #True)
open_winABOUT()
Case #MAIN_menu_prefs
GetPrefs()
DisableWindow(#winMAIN, #True)
open_winPREFS()
Case #MAIN_menu_update
DisableWindow(#winMAIN, #True)
open_winDOWNLOADING()
Case #CALLS_time: ConnectToEbay("GeteBayOfficialTime")
Case #CALLS_additem: ConnectToEbay("AddItem")
EndSelect
ElseIf event = #PB_Event_Gadget
Select EventGadget()
;- Main window
Case #MAIN_btn_new
newitem = 1
ClearAuctionData()
DisableWindow(#winMAIN, #True)
open_winAUCTION()
Case #MAIN_btn_edit
If GetGadgetState(#MAIN_GRID) > -1
selectedforedit = GetGadgetState(#MAIN_GRID)
newitem = 0
LoadAuctionData()
DisableWindow(#winMAIN, #True)
open_winAUCTION()
EndIf
Case #MAIN_btn_delete
If GetGadgetState(#MAIN_GRID) = -1
Else
selected = GetGadgetState(#MAIN_GRID)
confirm = MessageRequester("Confirm delete", "Delete item " + Chr(34) + GetGadgetItemText(#MAIN_GRID, selected, 0) + Chr(34) + "?", #PB_MessageRequester_YesNo)
If confirm = #PB_MessageRequester_Yes
RemoveGadgetItem(#MAIN_GRID, selected)
RemoveGadgetItem(#DATA_GADGET, selected)
SaveInventory()
EndIf
EndIf
;- About window
Case #ABOUT_btn_ok
DisableWindow(#winMAIN, #False)
CloseWindow(#winABOUT)
Case #AUCTION_btn_save
numimages = CountGadgetItems(#AUCTION_images)
Images$ = ""
If numimages <> 0
For num = 1 To numimages
Images$ + GetGadgetItemText(#AUCTION_images, num-1)
If num <> numimages
Images$ + Chr(167)
EndIf
Next
EndIf
If newitem <> 1
RemoveGadgetItem(#MAIN_GRID, selectedforedit)
RemoveGadgetItem(#DATA_GADGET, selectedforedit)
Else
selectedforedit = 0
EndIf
AddGadgetItem(#DATA_GADGET, selectedforedit, GetGadgetText(#AUCTION_item_title) + Chr(10) + GetGadgetText(#AUCTION_item_subtitle) + Chr(10) + GetGadgetText(#AUCTION_item_qty) + Chr(10) + GetGadgetText(#AUCTION_item_price) + Chr(10) + GetGadgetText(#AUCTION_item_reserve) + Chr(10) + GetGadgetText(#AUCTION_item_buyitnow) + Chr(10) + GetGadgetText(#AUCTION_item_cat1) + Chr(10) + GetGadgetText(#AUCTION_item_cat2) + Chr(10) + Str(GetGadgetState(#AUCTION_check_bold)) + Chr(10) + Str(GetGadgetState(#AUCTION_check_border)) + Chr(10) + Str(GetGadgetState(#AUCTION_check_highlight)) + Chr(10) + GetGadgetText(#AUCTION_item_paypalemail) + Chr(10) + Str(GetGadgetState(#AUCTION_check_paypal)) + Chr(10) + Str(GetGadgetState(#AUCTION_check_check)) + Chr(10) + Str(GetGadgetState(#AUCTION_check_mo)) + Chr(10) + Str(GetGadgetState(#AUCTION_check_other)) + Chr(10) + GetGadgetText(#AUCTION_shipping) + Chr(10) + Images$ + Chr(10) + ReplaceString(GetGadgetText(#AUCTION_item_description), #CRLF$, Chr(167)))
AddGadgetItem(#MAIN_GRID, selectedforedit, GetGadgetText(#AUCTION_item_title) + Chr(10) + GetGadgetText(#AUCTION_item_price) + Chr(10) + GetGadgetText(#AUCTION_item_reserve) + Chr(10) + GetGadgetText(#AUCTION_item_title))
SaveInventory()
DisableWindow(#winMAIN, #False)
CloseWindow(#winAUCTION)
Case #AUCTION_btn_cancel
DisableWindow(#winMAIN, #False)
CloseWindow(#winAUCTION)
Case #AUCTION_btn_cat1
whichcat = 1
DisableWindow(#winAUCTION, #True)
If IsWindow(#winCATEGORY)
HideWindow(#winCATEGORY, #False)
Else
open_winCATEGORY()
EndIf
Case #AUCTION_btn_cat2
whichcat = 2
If IsWindow(#winCATEGORY)
HideWindow(#winCATEGORY, #False)
Else
open_winCATEGORY()
EndIf
Case #AUCTION_btn_addimage
DisableWindow(#winAUCTION, #True)
open_winIMAGEURL()
;- Category window
Case #CATEGORY_btn_ok
If whichcat = 1
selectedcat$ = GetGadgetItemText(#CATEGORY_database, GetGadgetState(#CATEGORY_tree), 3)
If selectedcat$ = "true"
SetGadgetText(#AUCTION_item_cat1, GetGadgetItemText(#CATEGORY_database, GetGadgetState(#CATEGORY_tree), 1))
DisableWindow(#winAUCTION, #False)
CloseWindow(#winCATEGORY)
EndIf
Else
selectedcat$ = GetGadgetItemText(#CATEGORY_database, GetGadgetState(#CATEGORY_tree), 3)
If selectedcat$ = "true"
SetGadgetText(#AUCTION_item_cat2, GetGadgetItemText(#CATEGORY_database, GetGadgetState(#CATEGORY_tree), 1))
DisableWindow(#winAUCTION, #False)
CloseWindow(#winCATEGORY)
EndIf
EndIf
Case #CATEGORY_btn_cancel
DisableWindow(#winAUCTION, #False)
HideWindow(#winCATEGORY, #True)
;- Preferences window
Case #PREFS_btn_cancel
DisableWindow(#winMAIN, #False)
CloseWindow(#winPREFS)
Case #PREFS_btn_save
SavePrefs()
DisableWindow(#winMAIN, #False)
CloseWindow(#winPREFS)
Case #PREFS_check_imageother
DisableGadget(#PREFS_goop_password, #True)
DisableGadget(#PREFS_goop_username, #True)
Case #PREFS_check_imagegoop
DisableGadget(#PREFS_goop_password, #False)
DisableGadget(#PREFS_goop_username, #False)
;- Add image window
Case #IMAGEURL_btn_cancel
DisableWindow(#winAUCTION, #False)
CloseWindow(#winIMAGEURL)
Case #IMAGEURL_btn_add
If GetGadgetText(#IMAGEURL_address) = "http://"
ElseIf GetGadgetText(#IMAGEURL_address) = ""
Else
AddGadgetItem(#AUCTION_images, -1, GetGadgetText(#IMAGEURL_address))
EndIf
DisableWindow(#winAUCTION, #False)
CloseWindow(#winIMAGEURL)
Case #DOWNLOADING_cancel
If GetGadgetText(#DOWNLOADING_cancel) = "Close"
DisableWindow(#winMAIN, #False)
CloseWindow(#winDOWNLOADING)
Else
SetGadgetText(#DOWNLOADING_cancel, "Close")
AddGadgetItem(#DOWNLOADING_list, -1, "Download canceled")
EndIf
close_winDOWNLOADING = 3
addnewtodownloadlist = #False
createdownloadthread = #False
If IsThread(thread)
KillThread(thread)
EndIf
EndSelect
ElseIf close_winDOWNLOADING = #True
;CloseWindow(#winDOWNLOADING)
close_winDOWNLOADING = #False
AddGadgetItem(#DOWNLOADING_list, 2, "Finished")
SetGadgetText(#DOWNLOADING_cancel, "Close")
ElseIf close_winDOWNLOADING <> #True
If addnewtodownloadlist = #True
RemoveGadgetItem(#DOWNLOADING_list, 1)
AddGadgetItem(#DOWNLOADING_list, -1, "Downloading: " + Str(currentbytesdownloaded/1024) + "Kb")
addnewtodownloadlist = #False
EndIf
EndIf
If processcategories = #True
AddGadgetItem(#DOWNLOADING_list, -1, "Processing categories...")
LoadXML(#XML, "categories.tmp")
*MainNode = MainXMLNode(#XML)
ProcessCategories(*MainNode, 0)
processcategories = #False
EndIf
Until quit = 1
End
;- Main window procedure
Procedure open_winMAIN()
OpenWindow(#winMAIN, 0, 0, 650, 420, "AuctionGoop", #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget )
CreateMenu(#MAIN_menu, WindowID(#winMAIN))
MenuTitle("File")
MenuItem(#MAIN_menu_exit, "Exit")
MenuTitle("Tools")
MenuItem(#MAIN_menu_prefs, "Preferences")
MenuBar()
MenuItem(#MAIN_menu_update, "Update categories")
MenuTitle("Help")
MenuItem(#MAIN_menu_help, "Help Guide")
MenuItem(#MAIN_menu_about, "About...")
MenuTitle("Calls")
MenuItem(#CALLS_time, "GetEbayOfficialTime")
MenuItem(#CALLS_additem, "AddItem")
ResizeWindow(#winMAIN, #PB_Ignore, #PB_Ignore, #PB_Ignore, WindowHeight(#winMAIN)+MenuHeight())
CreateGadgetList(WindowID(#winMAIN))
ButtonGadget(#MAIN_btn_new, 10, 385, 100, 25, "New")
ButtonGadget(#MAIN_btn_edit, 120, 385, 100, 25, "Edit")
ButtonGadget(#MAIN_btn_delete, 230, 385, 100, 25, "Delete")
ListIconGadget(#DATA_GADGET, 0, 0, 0, 0, "", 100)
AddGadgetColumn(#DATA_GADGET, 1, "Subtitle", 0)
AddGadgetColumn(#DATA_GADGET, 2, "QTY", 0)
AddGadgetColumn(#DATA_GADGET, 3, "Price", 0)
AddGadgetColumn(#DATA_GADGET, 4, "Reserve", 0)
AddGadgetColumn(#DATA_GADGET, 5, "Buy", 0)
AddGadgetColumn(#DATA_GADGET, 6, "CAT1", 0)
AddGadgetColumn(#DATA_GADGET, 7, "CAT2", 0)
AddGadgetColumn(#DATA_GADGET, 8, "BOLD", 0)
AddGadgetColumn(#DATA_GADGET, 9, "BORDER", 0)
AddGadgetColumn(#DATA_GADGET, 10, "HIGHLIGHT", 0)
AddGadgetColumn(#DATA_GADGET, 11, "PAYPAL", 0)
AddGadgetColumn(#DATA_GADGET, 12, "PAY EMAIL", 0)
AddGadgetColumn(#DATA_GADGET, 13, "CHECK", 0)
AddGadgetColumn(#DATA_GADGET, 14, "MO", 0)
AddGadgetColumn(#DATA_GADGET, 15, "OTHER", 0)
AddGadgetColumn(#DATA_GADGET, 16, "SHIPPING", 0)
AddGadgetColumn(#DATA_GADGET, 17, "IMAGES", 0)
AddGadgetColumn(#DATA_GADGET, 18, "DESCRIPTION", 0)
HideGadget(#DATA_GADGET, #True)
ListIconGadget(#MAIN_GRID, 0, 0, 650, 375, "Item Title", 250, #PB_ListIcon_GridLines | #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_FullRowSelect)
AddGadgetColumn(#MAIN_GRID, 3, "Price", 75)
AddGadgetColumn(#MAIN_GRID, 4, "Reserve", 75)
EndProcedure
;- About window procedure
Procedure open_winABOUT()
OpenWindow(#winABOUT, 0, 0, 300, 200, "About", #PB_Window_WindowCentered, WindowID(#winMAIN))
CreateGadgetList(WindowID(#winABOUT))
TextGadget(#PB_Any, 10, 10, 250, 20, "AuctionGoop")
TextGadget(#PB_Any, 10, 30, 250, 20, "version 0.1b")
TextGadget(#PB_Any, 10, 70, 250, 20, "www.auctiongoop.com")
ButtonGadget(#ABOUT_btn_ok, 240, 165, 50, 25, "OK")
EndProcedure
;- List inventory procedure
Procedure ListInventory()
x = 0
If ReadFile(#DATABASE, "db")
While Eof(#DATABASE) = #False
a$ = ReadString(#DATABASE)
; add database to the #DATA_GADGET
AddGadgetItem(#DATA_GADGET, -1, StringField(a$, 1, Chr(160)) + Chr(10) + StringField(a$, 2, Chr(160)) + Chr(10) + StringField(a$, 3, Chr(160)) + Chr(10) + StringField(a$, 4, Chr(160)) + Chr(10) + StringField(a$, 5, Chr(160)) + Chr(10) + StringField(a$, 6, Chr(160)) + Chr(10) + StringField(a$, 7, Chr(160)) + Chr(10) + StringField(a$, 8, Chr(160)) + Chr(10) + StringField(a$, 9, Chr(160)) + Chr(10) + StringField(a$, 10, Chr(160)) + Chr(10) + StringField(a$, 11, Chr(160)) + Chr(10) + StringField(a$, 12, Chr(160)) + Chr(10) + StringField(a$, 13, Chr(160)) + Chr(10) + StringField(a$, 14, Chr(160)) + Chr(10) + StringField(a$, 15, Chr(160)) + Chr(10) + StringField(a$, 16, Chr(160)) + Chr(10) + StringField(a$, 17, Chr(160)) + Chr(10) + StringField(a$, 18, Chr(160)) + Chr(10) + StringField(a$, 19, Chr(160)))
; display on screen
AddGadgetItem(#MAIN_GRID, -1, StringField(a$, 1, Chr(160)) + Chr(10) + StringField(a$, 4, Chr(160)) + Chr(10) + StringField(a$, 5, Chr(160)))
Wend
CloseFile(#DATABASE)
Else
EndIf
EndProcedure
;- Save inventory procedure
Procedure SaveInventory()
If CreateFile(#DATABASE, "db")
i = CountGadgetItems(#MAIN_GRID)
For a = 1 To i
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 0) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 1) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 2) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 3) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 4) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 5) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 6) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 7) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 8) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 9) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 10) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 11) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 12) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 13) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 14) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 15) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 16) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 17) + Chr(160))
WriteString(#DATABASE, GetGadgetItemText(#DATA_GADGET, a-1, 18))
If a < i
WriteString(#DATABASE, #CRLF$)
EndIf
Next
CloseFile(#DATABASE)
EndIf
EndProcedure
Procedure.s GetXMLData(XMLTag$, String$)
XMLTag_Open$ = "<" + XMLTag$ + ">"
XMLTag_Close$ = "</" + XMLTag$ + ">"
XMLTag_StartPosition = FindString(String$, XMLTag_Open$, 1)
XMLTag_Open_Length = Len(XMLTag_Open$)
XMLTag_Open_EndPoint = XMLTag_StartPosition + XMLTag_Open_Length
XMLTag_Close_StartPosition = FindString(String$, XMLTag_Close$, XMLTag_StartPosition)
ReturnData_Length = XMLTag_Close_StartPosition - XMLTag_Open_EndPoint
ReturnData$ = Mid(String$, XMLTag_Open_EndPoint, ReturnData_Length)
ProcedureReturn ReturnData$
EndProcedure
Procedure.s GetXMLData2(XMLTag$, String$)
XMLTag_Open$ = "<" + XMLTag$ + Chr(160) + ">"
XMLTag_Close$ = "</" + XMLTag$ + Chr(160) + ">"
XMLTag_StartPosition = FindString(String$, XMLTag_Open$, 1)
XMLTag_Open_Length = Len(XMLTag_Open$)
XMLTag_Open_EndPoint = XMLTag_StartPosition + XMLTag_Open_Length
XMLTag_Close_StartPosition = FindString(String$, XMLTag_Close$, XMLTag_StartPosition)
ReturnData_Length = XMLTag_Close_StartPosition - XMLTag_Open_EndPoint
ReturnData$ = Mid(String$, XMLTag_Open_EndPoint, ReturnData_Length)
ProcedureReturn ReturnData$
EndProcedure
;- Auction window procedure
Procedure open_winAUCTION()
If newitem = 1
wintitle$ = "New Item"
Else
wintitle$ = "Edit Item"
EndIf
OpenWindow(#winAUCTION, 0, 0, 714, 477, wintitle$, #PB_Window_WindowCentered, WindowID(#winMAIN))
CreateGadgetList(WindowID(#winAUCTION))
ButtonGadget(#AUCTION_btn_save, 600, 440, 100, 25, "Save", #PB_Button_Default)
ButtonGadget(#AUCTION_btn_cancel, 490, 440, 100, 25, "Cancel")
StringGadget(#AUCTION_item_title, 80, 30, 280, 20, "")
SetGadgetText(#AUCTION_item_title, auction_title$)
TextGadget(#PB_Any, 20, 33, 50, 20, "Item Title:")
StringGadget(#AUCTION_item_subtitle, 80, 60, 280, 20, "")
SetGadgetText(#AUCTION_item_subtitle, auction_subtitle$)
TextGadget(#PB_Any, 20, 63, 50, 20, "Subtitle:")
StringGadget(#AUCTION_item_qty, 310, 90, 50, 20, "")
SetGadgetText(#AUCTION_item_qty, auction_qty$)
TextGadget(#PB_Any, 270, 93, 30, 20, "Qty:")
Frame3DGadget(#PB_Any, 10, 10, 360, 110, "Item Information")
TextGadget(#PB_Any, 20, 153, 30, 20, "Start:")
StringGadget(#AUCTION_item_reserve, 170, 150, 60, 20, "")
SetGadgetText(#AUCTION_item_reserve, auction_reserve$)
TextGadget(#PB_Any, 120, 153, 50, 20, "Reserve:")
StringGadget(#AUCTION_item_price, 50, 150, 60, 20, "")
SetGadgetText(#AUCTION_item_price, auction_price$)
TextGadget(#PB_Any, 240, 153, 60, 20, "Buy It Now:")
StringGadget(#AUCTION_item_buyitnow, 300, 150, 60, 20, "")
SetGadgetText(#AUCTION_item_buyitnow, auction_buynow$)
Frame3DGadget(#PB_Any, 10, 130, 360, 50, "Pricing")
StringGadget(#AUCTION_item_cat1, 50, 210, 90, 20, "")
SetGadgetText(#AUCTION_item_cat1, auction_cat1$)
StringGadget(#AUCTION_item_cat2, 230, 210, 90, 20, "")
SetGadgetText(#AUCTION_item_cat2, auction_cat2$)
Frame3DGadget(#PB_Any, 10, 190, 360, 50, "Category")
TextGadget(#PB_Any, 20, 213, 30, 20, "1st:")
TextGadget(#PB_Any, 200, 213, 30, 20, "2nd:")
ButtonGadget(#AUCTION_btn_cat1, 150, 210, 30, 20, "...")
ButtonGadget(#AUCTION_btn_cat2, 330, 210, 30, 20, "...")
PanelGadget(#AUCTION_panel, 380, 10, 320, 230)
AddGadgetItem(#AUCTION_panel, -1, "Pictures")
ListViewGadget(#AUCTION_images, 8, 8, 300, 150)
ButtonGadget(#AUCTION_btn_addimage, 228, 168, 80, 25, "Add")
ButtonGadget(#AUCTION_btn_deleteimage, 138, 168, 80, 25, "Remove")
AddGadgetItem(#AUCTION_panel, -1, "Upgrades")
CheckBoxGadget(#AUCTION_check_bold, 58, 48, 100, 20, "Bold")
If auction_bold$ = "1" : SetGadgetState(#AUCTION_check_bold, #True) : EndIf
CheckBoxGadget(#AUCTION_check_border, 58, 68, 100, 20, "Border")
If auction_border$ = "1" : SetGadgetState(#AUCTION_check_border, #True) : EndIf
CheckBoxGadget(#AUCTION_check_highlight, 58, 88, 100, 20, "Highlight")
If auction_highlight$ = "1" : SetGadgetState(#AUCTION_check_highlight, #True) : EndIf
AddGadgetItem(#AUCTION_panel, -1, "Payment")
CheckBoxGadget(#AUCTION_check_paypal, 58, 38, 100, 20, "PayPal")
If auction_usepaypal$ = "1" : SetGadgetState(#AUCTION_check_paypal, #True) : EndIf
StringGadget(#AUCTION_item_paypalemail, 58, 58, 170, 20, "")
SetGadgetText(#AUCTION_item_paypalemail, auction_paypaladdress$)
CheckBoxGadget(#AUCTION_check_check, 58, 98, 160, 20, "Personal check")
If auction_check$ = "1" : SetGadgetState(#AUCTION_check_check, #True) : EndIf
CheckBoxGadget(#AUCTION_check_mo, 58, 118, 160, 20, "Money order/cashier's check")
If auction_mo$ = "1" : SetGadgetState(#AUCTION_check_mo, #True) : EndIf
CheckBoxGadget(#AUCTION_check_other, 58, 138, 160, 20, "Other, see item description")
If auction_other$ = "1" : SetGadgetState(#AUCTION_check_other, #True) : EndIf
AddGadgetItem(#AUCTION_panel, -1, "Shipping")
ComboBoxGadget(#AUCTION_shippingtype, 58, 40, 150, 20)
AddGadgetItem(#AUCTION_shippingtype, 0, "Flat rate")
SetGadgetText(#AUCTION_shippingtype, "Flat rate")
StringGadget(#AUCTION_shipping, 108, 70, 100, 20, "")
TextGadget(#PB_Any, 58, 73, 50, 20, "Amount:")
SetGadgetText(#AUCTION_shipping, auction_shipping$)
;AddGadgetItem(#AUCTION_panel, -1, "Template")
CloseGadgetList()
Frame3DGadget(#PB_Any, 10, 250, 690, 180, "Description:")
EditorGadget(#AUCTION_item_description, 20, 270, 670, 150)
SetGadgetText(#AUCTION_item_description, ReplaceString(auction_description$, Chr(167), #CRLF$))
If auction_images$ <> ""
countimages = CountString(auction_images$, Chr(167))
For a = 1 To countimages + 1
AddGadgetItem(#AUCTION_images, -1, StringField(auction_images$, a, Chr(167)))
Next
EndIf
EndProcedure
;- Preferences window procedure
Procedure open_winPREFS()
OpenWindow(#winPREFS, 0, 0, 450, 300, "Preferences", #PB_Window_WindowCentered, WindowID(#winMAIN))
CreateGadgetList(WindowID(#winPREFS))
ButtonGadget(#PREFS_btn_save, 340, 265, 100, 25, "Save", #PB_Button_Default)
ButtonGadget(#PREFS_btn_cancel, 230, 265, 100, 25, "Cancel")
PanelGadget(#PREFS_panel, 10, 10, 430, 245)
AddGadgetItem(#PREFS_panel, 1, "Application")
CheckBoxGadget(#PREFS_check_update, 50, 50, 250, 20, "Update categories on startup")
If prefs_update$ = "1"
SetGadgetState(#PREFS_check_update, #True)
EndIf
AddGadgetItem(#PREFS_panel, 2, "Image Hosting")
OptionGadget(#PREFS_check_imageother, 50, 30, 200, 20, "Use other image hosting")
OptionGadget(#PREFS_check_imagegoop, 50, 60, 200, 20, "Use AuctionGoop picture service")
StringGadget(#PREFS_goop_username, 160, 100, 100, 20, "")
SetGadgetText(#PREFS_goop_username, prefs_user$)
TextGadget(#PB_Any, 100, 103, 50, 20, "Username:")
StringGadget(#PREFS_goop_password, 160, 130, 100, 20, "", #PB_String_Password)
SetGadgetText(#PREFS_goop_password, prefs_pass$)
TextGadget(#PB_Any, 100, 133, 50, 20, "Password:")
If prefs_host$ = "1"
SetGadgetState(#PREFS_check_imagegoop, #True)
Else
SetGadgetState(#PREFS_check_imageother, #True)
DisableGadget(#PREFS_goop_password, #True)
DisableGadget(#PREFS_goop_username, #True)
EndIf
ButtonGadget(#PREFS_btn_goopsignup, 250, 60, 100, 20, "Sign Up")
AddGadgetItem(#PREFS_panel, 3, "Disclaimer")
EditorGadget(#PREFS_edit_disclaimer, 10, 10, 405, 200)
SetGadgetText(#PREFS_edit_disclaimer, prefs_disclaimer$)
AddGadgetItem(#PREFS_panel, 4, "Shipping Policy")
EditorGadget(#PREFS_edit_shipping, 10, 10, 405, 200)
SetGadgetText(#PREFS_edit_shipping, prefs_shipping$)
AddGadgetItem(#PREFS_panel, 5, "Return Policy")
EditorGadget(#PREFS_edit_return, 10, 10, 405, 200)
SetGadgetText(#PREFS_edit_return, prefs_return$)
CloseGadgetList()
EndProcedure
Procedure SavePrefs()
If GetGadgetState(#PREFS_check_update) = #False
update = #False
Else
update = #True
EndIf
If GetGadgetState(#PREFS_check_imagegoop) = #False
host = #False
Else
host = #True
EndIf
save$ = "##### CONFIG #####" + #CRLF$
save$ + "<update" + Chr(160) + ">" + Str(update) + "</update" + Chr(160) + ">" + #CRLF$
save$ + "<host" + Chr(160) + ">" + Str(host) + "</host" + Chr(160) + ">" + #CRLF$
save$ + "<user" + Chr(160) + ">" + GetGadgetText(#PREFS_goop_username) + "</user" + Chr(160) + ">" + #CRLF$
save$ + "<pass" + Chr(160) + ">" + GetGadgetText(#PREFS_goop_password) + "</pass" + Chr(160) + ">" + #CRLF$
save$ + "<disclaimer" + Chr(160) + ">" + GetGadgetText(#PREFS_edit_disclaimer) + "</disclaimer" + Chr(160) + ">" + #CRLF$
save$ + "<shipping" + Chr(160) + ">" + GetGadgetText(#PREFS_edit_shipping) + "</shipping" + Chr(160) + ">" + #CRLF$
save$ + "<return" + Chr(160) + ">" + GetGadgetText(#PREFS_edit_return) + "</return" + Chr(160) + ">" + #CRLF$
save$ + "##### CONFIG #####"
CreateFile(200, "config.xml")
WriteStringN(200, save$)
CloseFile(200)
EndProcedure
Procedure GetPrefs()
configfile = ReadFile(#CONFIGFILE, "config.xml")
If configfile
While Eof(#CONFIGFILE) = 0
ConfigData$ + ReadString(#CONFIGFILE) + #CRLF$
Wend
CloseFile(#CONFIGFILE)
EndIf
ConfigData$ = ReplaceString(ConfigData$, Chr(1), #CRLF$)
prefs_update$ = GetXMLData2("update", ConfigData$)
prefs_disclaimer$ = GetXMLData2("disclaimer", ConfigData$)
prefs_shipping$ = GetXMLData2("shipping", ConfigData$)
prefs_return$ = GetXMLData2("return", ConfigData$)
prefs_host$ = GetXMLData2("host", ConfigData$)
prefs_user$ = GetXMLData2("user", ConfigData$)
prefs_pass$ = GetXMLData2("pass", ConfigData$)
EndProcedure
;- Load auction data from #DATA_GADGET into variables
Procedure LoadAuctionData()
auction_title$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 0)
auction_subtitle$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 1)
auction_qty$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 2)
auction_price$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 3)
auction_reserve$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 4)
auction_buynow$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 5)
auction_cat1$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 6)
auction_cat2$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 7)
auction_bold$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 8)
auction_border$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 9)
auction_highlight$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 10)
auction_paypaladdress$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 11)
auction_usepaypal$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 12)
auction_check$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 13)
auction_mo$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 14)
auction_other$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 15)
auction_shipping$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 16)
auction_images$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 17)
auction_description$ = GetGadgetItemText(#DATA_GADGET, GetGadgetState(#MAIN_GRID), 18)
EndProcedure
;- Clear auction data variables
Procedure ClearAuctionData()
auction_title$ = ""
auction_subtitle$ = ""
auction_qty$ = ""
auction_price$ = ""
auction_reserve$ = ""
auction_buynow$ = ""
auction_cat1$ = ""
auction_cat2$ = ""
auction_bold$ = ""
auction_border$ = ""
auction_highlight$ = ""
auction_paypaladdress$ = ""
auction_usepaypal$ = ""
auction_check$ = ""
auction_mo$ = ""
auction_other$ = ""
auction_shipping$ = ""
auction_images$ = ""
auction_description$ = ""
EndProcedure
;- Category window procedure
Procedure open_winCATEGORY()
OpenWindow(#winCATEGORY, 0, 0, 500, 400, "Select category", #PB_Window_WindowCentered, WindowID(#winAUCTION))
CreateGadgetList(WindowID(#winCATEGORY))
ButtonGadget(#CATEGORY_btn_ok, 390, 365, 100, 25, "OK", #PB_Button_Default)
ButtonGadget(#CATEGORY_btn_cancel, 280, 365, 100, 25, "Cancel")
TreeGadget(#CATEGORY_tree, 10, 10, 480, 345)
ListIconGadget(#CATEGORY_database, 0, 0, 0, 0, "", 0) ; category name
AddGadgetColumn(#CATEGORY_database, 1, "", 0) ; category id
AddGadgetColumn(#CATEGORY_database, 2, "", 0) ; parent id
AddGadgetColumn(#CATEGORY_database, 3, "", 0) ; leaf category (true of false)
HideGadget(#CATEGORY_database, #True)
catfile = ReadFile(#CATFILE, "categories.db")
catdata$ = ""
If catfile
While Eof(#CATFILE) = 0
catdata$ = ReadString(#CATFILE)
catname$ = StringField(catdata$, 3, Chr(167))
catid$ = StringField(catdata$, 1, Chr(167))
catlevel$ = StringField(catdata$, 2, Chr(167))
catleaf$ = StringField(catdata$, 4, Chr(167))
AddGadgetItem(#CATEGORY_tree, -1, catname$, 0, Val(catlevel$)-1)
AddGadgetItem(#CATEGORY_database, -1, catname$ + Chr(10) + catid$ + Chr(10) + catlevel$ + Chr(10) + catleaf$)
Wend
CloseFile(#CATFILE)
EndIf
EndProcedure
Procedure open_winIMAGEURL()
OpenWindow(#winIMAGEURL, 0, 0, 270, 75, "Add image URL", #PB_Window_WindowCentered, WindowID(#winAUCTION))
CreateGadgetList(WindowID(#winIMAGEURL))
StringGadget(#IMAGEURL_address, 10, 10, 250, 20, "http://")
ButtonGadget(#IMAGEURL_btn_add, 210, 40, 50, 25, "Add", #PB_Button_Default)
ButtonGadget(#IMAGEURL_btn_cancel, 150, 40, 50, 25, "Cancel")
EndProcedure
;- Downloading window
Procedure open_winDOWNLOADING()
OpenWindow(#winDOWNLOADING, 0, 0, 300, 200, "Downloading categories...", #PB_Window_WindowCentered, WindowID(#winMAIN))
CreateGadgetList(WindowID(#winDOWNLOADING))
ListViewGadget(#DOWNLOADING_list, 10, 10, 280, 145)
AddGadgetItem(#DOWNLOADING_list, -1, "Connecting...")
ButtonGadget(#DOWNLOADING_cancel, 190, 165, 100, 25, "Cancel")
If IsThread(thread) <> #True
thread = CreateThread(@DownloadCategories(), 0)
EndIf
EndProcedure
Procedure.s EbayHeaders(CallToEbay$)
EbayHeaders$ = "X-EBAY-API-COMPATIBILITY-LEVEL: " + EbayAPIVersion$ + #CRLF$
EbayHeaders$ + "X-EBAY-API-DEV-NAME: " + EbayDevName$ + #CRLF$
EbayHeaders$ + "X-EBAY-API-APP-NAME: " + EbayAppName$ + #CRLF$
EbayHeaders$ + "X-EBAY-API-CERT-NAME: " + EbayCertName$ + #CRLF$
EbayHeaders$ + "X-EBAY-API-CALL-NAME: " + CallToEbay$ + #CRLF$
EbayHeaders$ + "X-EBAY-API-SITEID: 0" + #CRLF$ + "Content-Type: text/xml"
ProcedureReturn EbayHeaders$
EndProcedure
Procedure.s EbayOfficialTime()
EbayCall_Data$ = "<?xml version=" + Chr(34) + "1.0" + Chr(34) + "encoding=" + Chr(34) + "utf-8" + Chr(34) + "?>" + #CRLF$
EbayCall_Data$ + "<GeteBayOfficialTimeRequest xmlns=" + Chr(34) + "urn:ebay:apis:eBLBaseComponents" + Chr(34) + ">" + #CRLF$
EbayCall_Data$ + "<RequesterCredentials>" + #CRLF$
EbayCall_Data$ + "<eBayAuthToken>" + EbayAuthToken$ + "</eBayAuthToken>" + #CRLF$
EbayCall_Data$ + "</RequesterCredentials>" + #CRLF$
EbayCall_Data$ + "</GeteBayOfficialTimeRequest>" + CRLF$
ProcedureReturn EbayCall_Data$
EndProcedure
Procedure.s ConnectToEbay(Call$)
If CreateFile(999, "ebay.txt")
CloseFile(999)
EndIf
headers.s = EbayHeaders(Call$)
If Call$ = "GeteBayOfficialTime"
post_data.s = EbayOfficialTime()
ElseIf Call$ = "AddItem"
post_data.s = AddItem()
EndIf
host.s = "api.sandbox.ebay.com"
get_url.s = "/ws/api.dll"
result.s = ""
open_handle = InternetOpen_("None",1,"","",0)
connect_handle = InternetConnect_(open_handle,host,443,"","",3,0,0)
request_handle = HttpOpenRequest_(connect_handle,"POST",get_url,"","",0,$800000,0)
HttpAddRequestHeaders_(request_handle,headers,Len(headers), $80000000 | $20000000)
post_data_len = Len(post_data)
send_handle = HttpSendRequest_(request_handle,"",0,post_data,post_data_len)
Buffer.s = Space(1024)
bytes_read.l
total_read.l
total_read = 0
Repeat
InternetReadFile_(request_handle,@Buffer,1024,@bytes_read)
result = Left(Buffer,bytes_read)
Buffer = Space(1024)
If OpenFile(999, "ebay.txt")
FileSeek(999, Lof(999))
WriteStringN(999, result)
CloseFile(999)
Delay(100)
EndIf
Until bytes_read=0
ProcedureReturn result
EndProcedure
;- Item submission procedure
Procedure.s AddItem()
LoadAuctionData()
auction_description$ = ReplaceString(auction_description$, Chr(167), "<br>")
If auction_images$ <> ""
countimages = CountString(auction_images$, Chr(167))
For a = 1 To countimages + 1
auction_description$ + "<br><br>"
auction_description$ + "<img src=" + Chr(34) + StringField(auction_images$, a, Chr(167)) + Chr(34) + ">"
Next
EndIf
auction_description$ + "<br><br><br><br><br><center><font style=" + Chr(34) + "font-family: Verdana; font-size: 10px;" + Chr(34) + ">This auction designed by XXXXXX</font></center>" + #CRLF$
EbayCall_Data$ = "<?xml version=" + Chr(34) + "1.0" + Chr(34) + "encoding=" + Chr(34) + "utf-8" + Chr(34) + "?>" + #CRLF$
EbayCall_Data$ + "<AddItemRequest xmlns=" + Chr(34) + "urn:ebay:apis:eBLBaseComponents" + Chr(34) + ">" + #CRLF$
EbayCall_Data$ + "<RequesterCredentials>" + #CRLF$
EbayCall_Data$ + "<eBayAuthToken>" + EbayAuthToken$ + "</eBayAuthToken>" + #CRLF$
EbayCall_Data$ + "</RequesterCredentials>" + #CRLF$
EbayCall_Data$ + "<WarningLevel>High</WarningLevel>" + #CRLF$
EbayCall_Data$ + "<Item>" + #CRLF$
EbayCall_Data$ + "<CategoryMappingAllowed>true</CategoryMappingAllowed>" + #CRLF$
EbayCall_Data$ + "<Country>US</Country>" + #CRLF$
EbayCall_Data$ + "<Currency>USD</Currency>" + #CRLF$
EbayCall_Data$ + "<Description><![CDATA[" + auction_description$ + "]]></Description>" + #CRLF$
EbayCall_Data$ + "<ListingDuration>Days_7</ListingDuration>" + #CRLF$
EbayCall_Data$ + "<ListingType>Chinese</ListingType>" + #CRLF$
EbayCall_Data$ + "<Location>San Jose, CA</Location>" + #CRLF$
EbayCall_Data$ + "<PaymentMethods>PayPal</PaymentMethods>" + #CRLF$
EbayCall_Data$ + "<PayPalEmailAddress>test@ebay.com</PayPalEmailAddress>" + #CRLF$
EbayCall_Data$ + "<PrimaryCategory>" + #CRLF$
EbayCall_Data$ + "<CategoryID>" + auction_cat1$ + "</CategoryID>" + #CRLF$
EbayCall_Data$ + "</PrimaryCategory>" + #CRLF$
EbayCall_Data$ + "<Quantity>" + auction_qty$ + "</Quantity>" + #CRLF$
EbayCall_Data$ + "<Site>US</Site>" + #CRLF$
EbayCall_Data$ + "<StartPrice currencyID=" + Chr(34) + "USD" + Chr(34) + ">" + auction_price$ + "</StartPrice>" + #CRLF$
EbayCall_Data$ + "<Title>" + auction_title$ + "</Title>" + #CRLF$
If auction_bold$ = "1" : EbayCall_Data$ + "<ListingEnhancement>BoldTitle</ListingEnhancement>" + #CRLF$ : EndIf
If auction_border$ = "1" : EbayCall_Data$ + "<ListingEnhancement>Border</ListingEnhancement>" + #CRLF$ : EndIf
If auction_highlight$ = "1" : EbayCall_Data$ + "<ListingEnhancement>Highlight</ListingEnhancement>" + #CRLF$ : EndIf
If auction_subtitle$ <> "" : EbayCall_Data$ + "<SubTitle>" + auction_subtitle$ + "</SubTitle>" + #CRLF$ : EndIf
If auction_reserve$ <> "" : EbayCall_Data$ + "<ReservePrice>" + auction_reserve$ + "</ReservePrice>" + #CRLF$ : EndIf
If auction_buynow$ <> "" : EbayCall_Data$ + "<BuyItNowPrice>" + auction_buynow$ + "</BuyItNowPrice>" + #CRLF$ : EndIf
If auction_check$ = "1" : EbayCall_Data$ + "<PaymentMethods>PersonalCheck</PaymentMethods>" + #CRLF$ : EndIf
If auction_mo$ = "1" : EbayCall_Data$ + "<PaymentMethods>MOCC</PaymentMethods>" + #CRLF$ : EndIf
If auction_other$ = "1" : EbayCall_Data$ + "<PaymentMethods>PaymentSeeDescription</PaymentMethods>" + #CRLF$ : EndIf
If auction_usepaypal$ = "1"
EbayCall_Data$ + "<PaymentMethods>PayPal</PaymentMethods>" + #CRLF$
EbayCall_Data$ + "<PayPalEmailAddress>" + auction_paypaladdress$ + "</PayPalEmailAddress>" + #CRLF$
EndIf
EbayCall_Data$ + "</Item>" + #CRLF$
EbayCall_Data$ + "</AddItemRequest>" + #CRLF$
ProcedureReturn EbayCall_Data$
EndProcedure
;- Download categories procedure
Procedure.s DownloadCategories()
If CreateFile(#CATFILE, "categories.tmp")
CloseFile(#CATFILE)
EndIf
headers.s = EbayHeaders("GetCategories")
post_data.s = "<?xml version=" + Chr(34) + "1.0" + Chr(34) + "encoding=" + Chr(34) + "utf-8" + Chr(34) + "?>" + #CRLF$
post_data.s + "<GetCategoriesRequest xmlns=" + Chr(34) + "urn:ebay:apis:eBLBaseComponents" + Chr(34) + ">" + #CRLF$
post_data.s + "<RequesterCredentials>" + #CRLF$
post_data.s + "<eBayAuthToken>" + EbayAuthToken$ + "</eBayAuthToken>" + #CRLF$
post_data.s + "</RequesterCredentials>" + #CRLF$
post_data.s + "<DetailLevel>ReturnAll</DetailLevel>" + #CRLF$
post_data.s + "<LevelLimit>2</LevelLimit>" + #CRLF$
post_data.s + "</GetCategoriesRequest>"
host.s = "api.sandbox.ebay.com"
get_url.s = "/ws/api.dll"
result.s = ""
open_handle = InternetOpen_("None",1,"","",0)
connect_handle = InternetConnect_(open_handle,host,443,"","",3,0,0)
request_handle = HttpOpenRequest_(connect_handle,"POST",get_url,"","",0,$800000,0)
HttpAddRequestHeaders_(request_handle,headers,Len(headers), $80000000 | $20000000)
post_data_len = Len(post_data)
send_handle = HttpSendRequest_(request_handle,"",0,post_data,post_data_len)
Buffer.s = Space(1024)
bytes_read.l
total_read.l
total_read = 0
Repeat
InternetReadFile_(request_handle,@Buffer,1024,@bytes_read)
result = Left(Buffer,bytes_read)
Buffer = Space(1024)
addnewtodownloadlist = #True
currentbytesdownloaded + 1024
If OpenFile(#CATFILE, "categories.tmp")
FileSeek(#CATFILE, Lof(#CATFILE))
WriteString(#CATFILE, result)
CloseFile(#CATFILE)
EndIf
Until bytes_read=0
processcategories = #True
close_winDOWNLOADING = #True
addnewtodownloadlist = #False
currentbytesdownloaded = 0
createdownloadthread = #False
result = ""
EndProcedure
Procedure ProcessCategories(*CurrentNode, CurrentSublevel)
If XMLNodeType(*CurrentNode) = #PB_XML_Normal
*ChildNode = ChildXMLNode(*CurrentNode)
While *ChildNode <> 0
nodename$ = GetXMLNodeName(*ChildNode)
nodetext$ = GetXMLNodeText(*ChildNode)
If nodename$ = "CategoryID"
text$ + nodetext$ + Chr(167)
EndIf
If nodename$ = "CategoryLevel"
text$ + nodetext$ + Chr(167)
EndIf
If nodename$ = "CategoryName"
text$ + nodetext$ + Chr(167)
EndIf
If nodename$ = "LeafCategory"
text$ + nodetext$ + #CRLF$
currentcat + 1
;SetGadgetText(9, Str(currentcat))
count + 1
;If count = 5
OpenFile(999, "categories.db")
FileSeek(999, Lof(999))
;MessageRequester("FDDS", text$)
WriteString(999, text$)
CloseFile(999)
count = 0
text$ = ""
;EndIf
EndIf
ProcessCategories(*ChildNode, CurrentSublevel + 1)
*ChildNode = NextXMLNode(*ChildNode)
Wend
EndIf
EndProcedure