Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

root/branches/1_5/lib/soap/soap.rb

Revision 2002, 4.2 kB (checked in by nahi, 1 year ago)
  • unnecessary 's' option for CRLF trimming regexp. Thanks Nobu.
  • Property svn:eol-style set to native
  • Property svn:keywords set to author date id revision
Line 
1 # soap/soap.rb: SOAP4R - Base definitions.
2 # Copyright (C) 2000-2007  NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
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 require 'soap/nestedexception'
12
13
14 module SOAP
15
16
17 VERSION = Version = '1.5.9-SNAPSHOT'
18 PropertyName = 'soap/property'
19
20 EnvelopeNamespace = 'http://schemas.xmlsoap.org/soap/envelope/'
21 EncodingNamespace = 'http://schemas.xmlsoap.org/soap/encoding/'
22 LiteralNamespace = 'http://xml.apache.org/xml-soap/literalxml'
23
24 NextActor = 'http://schemas.xmlsoap.org/soap/actor/next'
25
26 EleEnvelope = 'Envelope'
27 EleHeader = 'Header'
28 EleBody = 'Body'
29 EleFault = 'Fault'
30 EleFaultString = 'faultstring'
31 EleFaultActor = 'faultactor'
32 EleFaultCode = 'faultcode'
33 EleFaultDetail = 'detail'
34
35 AttrMustUnderstand = 'mustUnderstand'
36 AttrEncodingStyle = 'encodingStyle'
37 AttrActor = 'actor'
38 AttrRoot = 'root'
39 AttrArrayType = 'arrayType'
40 AttrOffset = 'offset'
41 AttrPosition = 'position'
42 AttrHref = 'href'
43 AttrId = 'id'
44 ValueArray = 'Array'
45
46 EleEnvelopeName = XSD::QName.new(EnvelopeNamespace, EleEnvelope).freeze
47 EleHeaderName = XSD::QName.new(EnvelopeNamespace, EleHeader).freeze
48 EleBodyName = XSD::QName.new(EnvelopeNamespace, EleBody).freeze
49 EleFaultName = XSD::QName.new(EnvelopeNamespace, EleFault).freeze
50 EleFaultStringName = XSD::QName.new(nil, EleFaultString).freeze
51 EleFaultActorName = XSD::QName.new(nil, EleFaultActor).freeze
52 EleFaultCodeName = XSD::QName.new(nil, EleFaultCode).freeze
53 EleFaultDetailName = XSD::QName.new(nil, EleFaultDetail).freeze
54 AttrActorName = XSD::QName.new(EnvelopeNamespace, AttrActor).freeze
55 AttrMustUnderstandName = XSD::QName.new(EnvelopeNamespace, AttrMustUnderstand).freeze
56 AttrEncodingStyleName = XSD::QName.new(EnvelopeNamespace, AttrEncodingStyle).freeze
57 AttrRootName = XSD::QName.new(EncodingNamespace, AttrRoot).freeze
58 AttrArrayTypeName = XSD::QName.new(EncodingNamespace, AttrArrayType).freeze
59 AttrOffsetName = XSD::QName.new(EncodingNamespace, AttrOffset).freeze
60 AttrPositionName = XSD::QName.new(EncodingNamespace, AttrPosition).freeze
61 AttrHrefName = XSD::QName.new(nil, AttrHref).freeze
62 AttrIdName = XSD::QName.new(nil, AttrId).freeze
63 ValueArrayName = XSD::QName.new(EncodingNamespace, ValueArray).freeze
64
65 Base64Literal = 'base64'
66
67 MediaType = 'text/xml'
68
69 class Error < StandardError; include NestedException; end
70
71 class StreamError < Error; end
72 class HTTPStreamError < StreamError; end
73 class PostUnavailableError < HTTPStreamError; end
74 class MPostUnavailableError < HTTPStreamError; end
75
76 class ArrayIndexOutOfBoundsError < Error; end
77 class ArrayStoreError < Error; end
78
79 class RPCRoutingError < Error; end
80 class EmptyResponseError < Error; end
81 class ResponseFormatError < Error; end
82
83 class UnhandledMustUnderstandHeaderError < Error; end
84
85
86 module FaultCode
87   VersionMismatch = XSD::QName.new(EnvelopeNamespace, 'VersionMismatch').freeze
88   MustUnderstand = XSD::QName.new(EnvelopeNamespace, 'MustUnderstand').freeze
89   Client = XSD::QName.new(EnvelopeNamespace, 'Client').freeze
90   Server = XSD::QName.new(EnvelopeNamespace, 'Server').freeze
91 end
92
93
94 class FaultError < Error
95   attr_reader :faultcode
96   attr_reader :faultstring
97   attr_reader :faultactor
98   attr_accessor :detail
99
100   def initialize(fault)
101     @faultcode = fault.faultcode
102     @faultstring = fault.faultstring
103     @faultactor = fault.faultactor
104     @detail = fault.detail
105     super(self.to_s)
106   end
107
108   def to_s
109     str = nil
110     if @faultstring and @faultstring.respond_to?('data')
111       str = @faultstring.data
112     end
113     str || '(No faultstring)'
114   end
115 end
116
117
118 module Env
119   def self.getenv(name)
120     ENV[name.downcase] || ENV[name.upcase]
121   end
122
123   is_cgi = !getenv('request_method').nil?
124   HTTP_PROXY = is_cgi ? getenv('cgi_http_proxy') : getenv('http_proxy')
125   NO_PROXY = getenv('no_proxy')
126 end
127
128
129 end
130
131
132 unless Object.respond_to?(:instance_variable_get)
133   class Object
134     def instance_variable_get(ivarname)
135       instance_eval(ivarname)
136     end
137
138     def instance_variable_set(ivarname, value)
139       instance_eval("#{ivarname} = value")
140     end
141   end
142 end
143
144
145 unless Kernel.respond_to?(:warn)
146   module Kernel
147     def warn(msg)
148       STDERR.puts(msg + "\n") unless $VERBOSE.nil?
149     end
150   end
151 end
Note: See TracBrowser for help on using the browser.