mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-11-28 11:43:09 +03:00
HTTP library: updated API to support additional HTTP parameters.
NOTE: this breaks compatibility with all current binaries! git-svn-id: svn://kolibrios.org@4221 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
bc0823758d
commit
536d3c7b98
@ -61,7 +61,7 @@ download:
|
|||||||
|
|
||||||
DEBUGF 1, "Starting download\n"
|
DEBUGF 1, "Starting download\n"
|
||||||
|
|
||||||
invoke HTTP_get, params
|
invoke HTTP_get, params, 0
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz fail
|
jz fail
|
||||||
mov [identifier], eax
|
mov [identifier], eax
|
||||||
|
@ -124,11 +124,12 @@ lib_init: ;//////////////////////////////////////////////////////////////////;;
|
|||||||
|
|
||||||
|
|
||||||
;;================================================================================================;;
|
;;================================================================================================;;
|
||||||
proc HTTP_get URL ;///////////////////////////////////////////////////////////////////////////////;;
|
proc HTTP_get URL, add_header ;///////////////////////////////////////////////////////////////////;;
|
||||||
;;------------------------------------------------------------------------------------------------;;
|
;;------------------------------------------------------------------------------------------------;;
|
||||||
;? Initiates a HTTP connection, using 'GET' method. ;;
|
;? Initiates a HTTP connection, using 'GET' method. ;;
|
||||||
;;------------------------------------------------------------------------------------------------;;
|
;;------------------------------------------------------------------------------------------------;;
|
||||||
;> URL = pointer to ASCIIZ URL ;;
|
;> URL = pointer to ASCIIZ URL ;;
|
||||||
|
;> add_header = pointer to additional header parameters (ASCIIZ), or null for none. ;;
|
||||||
;;------------------------------------------------------------------------------------------------;;
|
;;------------------------------------------------------------------------------------------------;;
|
||||||
;< eax = 0 (error) / buffer ptr ;;
|
;< eax = 0 (error) / buffer ptr ;;
|
||||||
;;================================================================================================;;
|
;;================================================================================================;;
|
||||||
@ -149,6 +150,7 @@ endl
|
|||||||
jz .error
|
jz .error
|
||||||
mov [hostname], eax
|
mov [hostname], eax
|
||||||
mov [pageaddr], ebx
|
mov [pageaddr], ebx
|
||||||
|
mov [port], ecx
|
||||||
|
|
||||||
; Do we need to use a proxy?
|
; Do we need to use a proxy?
|
||||||
cmp [proxyAddr], 0
|
cmp [proxyAddr], 0
|
||||||
@ -157,7 +159,6 @@ endl
|
|||||||
.proxy_done:
|
.proxy_done:
|
||||||
|
|
||||||
;;;;
|
;;;;
|
||||||
mov [port], 80 ;;;; FIXME
|
|
||||||
|
|
||||||
; Connect to the other side.
|
; Connect to the other side.
|
||||||
stdcall open_connection, [hostname], [port]
|
stdcall open_connection, [hostname], [port]
|
||||||
@ -186,6 +187,12 @@ endl
|
|||||||
mov esi, [hostname]
|
mov esi, [hostname]
|
||||||
copy_till_zero
|
copy_till_zero
|
||||||
|
|
||||||
|
mov esi, [add_header]
|
||||||
|
test esi, esi
|
||||||
|
jz @f
|
||||||
|
copy_till_zero
|
||||||
|
@@:
|
||||||
|
|
||||||
mov esi, str_close
|
mov esi, str_close
|
||||||
mov ecx, str_close.length
|
mov ecx, str_close.length
|
||||||
rep movsb
|
rep movsb
|
||||||
@ -220,11 +227,12 @@ endp
|
|||||||
|
|
||||||
|
|
||||||
;;================================================================================================;;
|
;;================================================================================================;;
|
||||||
proc HTTP_head URL ;//////////////////////////////////////////////////////////////////////////////;;
|
proc HTTP_head URL, add_header ;//////////////////////////////////////////////////////////////////;;
|
||||||
;;------------------------------------------------------------------------------------------------;;
|
;;------------------------------------------------------------------------------------------------;;
|
||||||
;? Initiates a HTTP connection, using 'HEAD' method. ;;
|
;? Initiates a HTTP connection, using 'HEAD' method. ;;
|
||||||
;;------------------------------------------------------------------------------------------------;;
|
;;------------------------------------------------------------------------------------------------;;
|
||||||
;> URL = pointer to ASCIIZ URL ;;
|
;> URL = pointer to ASCIIZ URL ;;
|
||||||
|
;> add_header = pointer to additional header parameters (ASCIIZ), or null for none. ;;
|
||||||
;;------------------------------------------------------------------------------------------------;;
|
;;------------------------------------------------------------------------------------------------;;
|
||||||
;< eax = 0 (error) / buffer ptr ;;
|
;< eax = 0 (error) / buffer ptr ;;
|
||||||
;;================================================================================================;;
|
;;================================================================================================;;
|
||||||
@ -244,6 +252,7 @@ endl
|
|||||||
jz .error
|
jz .error
|
||||||
mov [hostname], eax
|
mov [hostname], eax
|
||||||
mov [pageaddr], ebx
|
mov [pageaddr], ebx
|
||||||
|
mov [port], ecx
|
||||||
|
|
||||||
; Do we need to use a proxy?
|
; Do we need to use a proxy?
|
||||||
cmp [proxyAddr], 0
|
cmp [proxyAddr], 0
|
||||||
@ -253,7 +262,6 @@ endl
|
|||||||
.proxy_done:
|
.proxy_done:
|
||||||
|
|
||||||
;;;;
|
;;;;
|
||||||
mov [port], 80 ;;;; FIXME
|
|
||||||
|
|
||||||
; Connect to the other side.
|
; Connect to the other side.
|
||||||
stdcall open_connection, [hostname], [port]
|
stdcall open_connection, [hostname], [port]
|
||||||
@ -282,6 +290,12 @@ endl
|
|||||||
mov esi, [hostname]
|
mov esi, [hostname]
|
||||||
copy_till_zero
|
copy_till_zero
|
||||||
|
|
||||||
|
mov esi, [add_header]
|
||||||
|
test esi, esi
|
||||||
|
jz @f
|
||||||
|
copy_till_zero
|
||||||
|
@@:
|
||||||
|
|
||||||
mov esi, str_close
|
mov esi, str_close
|
||||||
mov ecx, str_close.length
|
mov ecx, str_close.length
|
||||||
rep movsb
|
rep movsb
|
||||||
@ -315,11 +329,12 @@ endp
|
|||||||
|
|
||||||
|
|
||||||
;;================================================================================================;;
|
;;================================================================================================;;
|
||||||
proc HTTP_post URL, content_type, content_length ;////////////////////////////////////////////////;;
|
proc HTTP_post URL, add_header, content_type, content_length ;////////////////////////////////////;;
|
||||||
;;------------------------------------------------------------------------------------------------;;
|
;;------------------------------------------------------------------------------------------------;;
|
||||||
;? Initiates a HTTP connection, using 'GET' method. ;;
|
;? Initiates a HTTP connection, using 'GET' method. ;;
|
||||||
;;------------------------------------------------------------------------------------------------;;
|
;;------------------------------------------------------------------------------------------------;;
|
||||||
;> URL = pointer to ASCIIZ URL ;;
|
;> URL = pointer to ASCIIZ URL ;;
|
||||||
|
;> add_header = pointer to additional header parameters (ASCIIZ), or null for none. ;;
|
||||||
;> content_type = pointer to ASCIIZ string containing content type ;;
|
;> content_type = pointer to ASCIIZ string containing content type ;;
|
||||||
;> content_length = length of content (in bytes) ;;
|
;> content_length = length of content (in bytes) ;;
|
||||||
;;------------------------------------------------------------------------------------------------;;
|
;;------------------------------------------------------------------------------------------------;;
|
||||||
@ -341,6 +356,7 @@ endl
|
|||||||
jz .error
|
jz .error
|
||||||
mov [hostname], eax
|
mov [hostname], eax
|
||||||
mov [pageaddr], ebx
|
mov [pageaddr], ebx
|
||||||
|
mov [port], ecx
|
||||||
|
|
||||||
; Do we need to use a proxy?
|
; Do we need to use a proxy?
|
||||||
cmp [proxyAddr], 0
|
cmp [proxyAddr], 0
|
||||||
@ -350,7 +366,6 @@ endl
|
|||||||
.proxy_done:
|
.proxy_done:
|
||||||
|
|
||||||
;;;;
|
;;;;
|
||||||
mov [port], 80 ;;;; FIXME
|
|
||||||
|
|
||||||
; Connect to the other side.
|
; Connect to the other side.
|
||||||
stdcall open_connection, [hostname], [port]
|
stdcall open_connection, [hostname], [port]
|
||||||
@ -391,7 +406,13 @@ endl
|
|||||||
rep movsb
|
rep movsb
|
||||||
|
|
||||||
mov esi, [content_type]
|
mov esi, [content_type]
|
||||||
rep movsb
|
copy_till_zero
|
||||||
|
|
||||||
|
mov esi, [add_header]
|
||||||
|
test esi, esi
|
||||||
|
jz @f
|
||||||
|
copy_till_zero
|
||||||
|
@@:
|
||||||
|
|
||||||
mov esi, str_close
|
mov esi, str_close
|
||||||
mov ecx, str_close.length
|
mov ecx, str_close.length
|
||||||
@ -1264,9 +1285,11 @@ endl
|
|||||||
|
|
||||||
mov eax, [hostname]
|
mov eax, [hostname]
|
||||||
mov ebx, [pageaddr]
|
mov ebx, [pageaddr]
|
||||||
|
mov ecx, 80 ;;;; FIXME
|
||||||
|
|
||||||
DEBUGF 1, "hostname: %s\n", eax
|
DEBUGF 1, "hostname: %s\n", eax
|
||||||
DEBUGF 1, "pageaddr: %s\n", ebx
|
DEBUGF 1, "pageaddr: %s\n", ebx
|
||||||
|
DEBUGF 1, "port: %u\n", ecx
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
@ -1,16 +1,19 @@
|
|||||||
|
|
||||||
get(*url);
|
get(*url, *add_header);
|
||||||
*url = pointer to ASCIIZ URL
|
*url = pointer to ASCIIZ URL
|
||||||
|
*add_header = pointer to ASCIIZ additional header parameters, or null for none.
|
||||||
Initiates a HTTP connection, using 'GET' method.
|
Initiates a HTTP connection, using 'GET' method.
|
||||||
- returns 0 on error, identifier otherwise.
|
- returns 0 on error, identifier otherwise.
|
||||||
|
|
||||||
head(*url);
|
head(*url, *add_header);
|
||||||
*url = pointer to ASCIIZ URL
|
*url = pointer to ASCIIZ URL
|
||||||
|
*add_header = pointer to ASCIIZ additional header parameters, or null for none.
|
||||||
Initiate a HTTP connection, using 'HEAD' method.
|
Initiate a HTTP connection, using 'HEAD' method.
|
||||||
- returns 0 on error, identifier otherwise
|
- returns 0 on error, identifier otherwise
|
||||||
|
|
||||||
post(*url, *content-type, content-length);
|
post(*url, *add_header, *content-type, content-length);
|
||||||
*url = pointer to ASCIIZ URL
|
*url = pointer to ASCIIZ URL
|
||||||
|
*add_header = pointer to ASCIIZ additional header parameters, or null for none.
|
||||||
*content-type = pointer to ASCIIZ string containing content type.
|
*content-type = pointer to ASCIIZ string containing content type.
|
||||||
content-length = length of the content (in bytes).
|
content-length = length of the content (in bytes).
|
||||||
Initiate a HTTP connection, using 'POST' method.
|
Initiate a HTTP connection, using 'POST' method.
|
||||||
|
Loading…
Reference in New Issue
Block a user