@@ -6,6 +6,7 @@ mod tests;
6
6
use auth:: username_token:: UsernameToken ;
7
7
use schema:: soap_envelope;
8
8
use xmltree:: { Element , Namespace , XMLNode } ;
9
+ use url:: Url ;
9
10
10
11
const SOAP_URI : & str = "http://www.w3.org/2003/05/soap-envelope" ;
11
12
@@ -24,11 +25,12 @@ pub struct Response {
24
25
pub response : Option < String > ,
25
26
}
26
27
27
- pub fn soap ( xml : & str , username_token : & Option < UsernameToken > ) -> Result < String , Error > {
28
+ pub fn soap ( xml : & str , username_token : & Option < UsernameToken > , uri : & Url ) -> Result < String , Error > {
28
29
let app_data = parse ( xml) ?;
29
30
30
31
let mut namespaces = app_data. namespaces . clone ( ) . unwrap_or_else ( Namespace :: empty) ;
31
32
namespaces. put ( "s" , SOAP_URI ) ;
33
+ namespaces. put ( "a" , "http://www.w3.org/2005/08/addressing" ) ;
32
34
33
35
let mut body = Element :: new ( "Body" ) ;
34
36
body. prefix = Some ( "s" . to_string ( ) ) ;
@@ -44,6 +46,10 @@ pub fn soap(xml: &str, username_token: &Option<UsernameToken>) -> Result<String,
44
46
header
45
47
. children
46
48
. push ( XMLNode :: Element ( parse ( & username_token. to_xml ( ) ) ?) ) ;
49
+ let mut to_el = Element :: new ( "To" ) ;
50
+ to_el. prefix = Some ( "a" . to_string ( ) ) ;
51
+ to_el. children . push ( XMLNode :: Text ( uri. as_str ( ) . to_owned ( ) ) ) ;
52
+ header. children . push ( XMLNode :: Element ( to_el) ) ;
47
53
envelope. children . push ( XMLNode :: Element ( header) ) ;
48
54
}
49
55
0 commit comments