1 | # soap/soap.rb: SOAP4R - Base definitions.
|
---|
2 | # Copyright (C) 2000-2004 NAKAMURA, Hiroshi <[email protected]>.
|
---|
3 |
|
---|
4 | # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
|
---|
5 | # redistribute it and/or modify it under the same terms of Ruby's license;
|
---|
6 | # either the dual license version in 2003, or any later version.
|
---|
7 |
|
---|
8 |
|
---|
9 | require 'xsd/qname'
|
---|
10 | require 'xsd/charset'
|
---|
11 |
|
---|
12 |
|
---|
13 | module SOAP
|
---|
14 |
|
---|
15 |
|
---|
16 | VERSION = Version = '1.5.5'
|
---|
17 | PropertyName = 'soap/property'
|
---|
18 |
|
---|
19 | EnvelopeNamespace = 'http://schemas.xmlsoap.org/soap/envelope/'
|
---|
20 | EncodingNamespace = 'http://schemas.xmlsoap.org/soap/encoding/'
|
---|
21 | LiteralNamespace = 'http://xml.apache.org/xml-soap/literalxml'
|
---|
22 |
|
---|
23 | NextActor = 'http://schemas.xmlsoap.org/soap/actor/next'
|
---|
24 |
|
---|
25 | EleEnvelope = 'Envelope'
|
---|
26 | EleHeader = 'Header'
|
---|
27 | EleBody = 'Body'
|
---|
28 | EleFault = 'Fault'
|
---|
29 | EleFaultString = 'faultstring'
|
---|
30 | EleFaultActor = 'faultactor'
|
---|
31 | EleFaultCode = 'faultcode'
|
---|
32 | EleFaultDetail = 'detail'
|
---|
33 |
|
---|
34 | AttrMustUnderstand = 'mustUnderstand'
|
---|
35 | AttrEncodingStyle = 'encodingStyle'
|
---|
36 | AttrActor = 'actor'
|
---|
37 | AttrRoot = 'root'
|
---|
38 | AttrArrayType = 'arrayType'
|
---|
39 | AttrOffset = 'offset'
|
---|
40 | AttrPosition = 'position'
|
---|
41 | ValueArray = 'Array'
|
---|
42 |
|
---|
43 | EleEnvelopeName = XSD::QName.new(EnvelopeNamespace, EleEnvelope).freeze
|
---|
44 | EleHeaderName = XSD::QName.new(EnvelopeNamespace, EleHeader).freeze
|
---|
45 | EleBodyName = XSD::QName.new(EnvelopeNamespace, EleBody).freeze
|
---|
46 | EleFaultName = XSD::QName.new(EnvelopeNamespace, EleFault).freeze
|
---|
47 | EleFaultStringName = XSD::QName.new(nil, EleFaultString).freeze
|
---|
48 | EleFaultActorName = XSD::QName.new(nil, EleFaultActor).freeze
|
---|
49 | EleFaultCodeName = XSD::QName.new(nil, EleFaultCode).freeze
|
---|
50 | EleFaultDetailName = XSD::QName.new(nil, EleFaultDetail).freeze
|
---|
51 | AttrMustUnderstandName = XSD::QName.new(EnvelopeNamespace, AttrMustUnderstand).freeze
|
---|
52 | AttrEncodingStyleName = XSD::QName.new(EnvelopeNamespace, AttrEncodingStyle).freeze
|
---|
53 | AttrRootName = XSD::QName.new(EncodingNamespace, AttrRoot).freeze
|
---|
54 | AttrArrayTypeName = XSD::QName.new(EncodingNamespace, AttrArrayType).freeze
|
---|
55 | AttrOffsetName = XSD::QName.new(EncodingNamespace, AttrOffset).freeze
|
---|
56 | AttrPositionName = XSD::QName.new(EncodingNamespace, AttrPosition).freeze
|
---|
57 | ValueArrayName = XSD::QName.new(EncodingNamespace, ValueArray).freeze
|
---|
58 |
|
---|
59 | Base64Literal = 'base64'
|
---|
60 |
|
---|
61 | SOAPNamespaceTag = 'env'
|
---|
62 | XSDNamespaceTag = 'xsd'
|
---|
63 | XSINamespaceTag = 'xsi'
|
---|
64 |
|
---|
65 | MediaType = 'text/xml'
|
---|
66 |
|
---|
67 | class Error < StandardError; end
|
---|
68 |
|
---|
69 | class StreamError < Error; end
|
---|
70 | class HTTPStreamError < StreamError; end
|
---|
71 | class PostUnavailableError < HTTPStreamError; end
|
---|
72 | class MPostUnavailableError < HTTPStreamError; end
|
---|
73 |
|
---|
74 | class ArrayIndexOutOfBoundsError < Error; end
|
---|
75 | class ArrayStoreError < Error; end
|
---|
76 |
|
---|
77 | class RPCRoutingError < Error; end
|
---|
78 | class EmptyResponseError < Error; end
|
---|
79 | class ResponseFormatError < Error; end
|
---|
80 |
|
---|
81 | class UnhandledMustUnderstandHeaderError < Error; end
|
---|
82 |
|
---|
83 | class FaultError < Error
|
---|
84 | attr_reader :faultcode
|
---|
85 | attr_reader :faultstring
|
---|
86 | attr_reader :faultactor
|
---|
87 | attr_accessor :detail
|
---|
88 |
|
---|
89 | def initialize(fault)
|
---|
90 | @faultcode = fault.faultcode
|
---|
91 | @faultstring = fault.faultstring
|
---|
92 | @faultactor = fault.faultactor
|
---|
93 | @detail = fault.detail
|
---|
94 | super(self.to_s)
|
---|
95 | end
|
---|
96 |
|
---|
97 | def to_s
|
---|
98 | str = nil
|
---|
99 | if @faultstring and @faultstring.respond_to?('data')
|
---|
100 | str = @faultstring.data
|
---|
101 | end
|
---|
102 | str || '(No faultstring)'
|
---|
103 | end
|
---|
104 | end
|
---|
105 |
|
---|
106 |
|
---|
107 | module Env
|
---|
108 | def self.getenv(name)
|
---|
109 | ENV[name.downcase] || ENV[name.upcase]
|
---|
110 | end
|
---|
111 |
|
---|
112 | use_proxy = getenv('soap_use_proxy') == 'on'
|
---|
113 | HTTP_PROXY = use_proxy ? getenv('http_proxy') : nil
|
---|
114 | NO_PROXY = use_proxy ? getenv('no_proxy') : nil
|
---|
115 | end
|
---|
116 |
|
---|
117 |
|
---|
118 | end
|
---|
119 |
|
---|
120 |
|
---|
121 | unless Object.respond_to?(:instance_variable_get)
|
---|
122 | class Object
|
---|
123 | def instance_variable_get(ivarname)
|
---|
124 | instance_eval(ivarname)
|
---|
125 | end
|
---|
126 |
|
---|
127 | def instance_variable_set(ivarname, value)
|
---|
128 | instance_eval("#{ivarname} = value")
|
---|
129 | end
|
---|
130 | end
|
---|
131 | end
|
---|
132 |
|
---|
133 |
|
---|
134 | unless Kernel.respond_to?(:warn)
|
---|
135 | module Kernel
|
---|
136 | def warn(msg)
|
---|
137 | STDERR.puts(msg + "\n") unless $VERBOSE.nil?
|
---|
138 | end
|
---|
139 | end
|
---|
140 | end
|
---|