soap

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 10, 2021 License: MPL-2.0 Imports: 17 Imported by: 211

Documentation

Index

Constants

View Source
const (
	// Predefined WSS namespaces to be used in
	WssNsWSSE string = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
	WssNsWSU  string = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
	WssNsType string = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"

	XmlNsSoapEnv string = "http://schemas.xmlsoap.org/soap/envelope/"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Binary added in v0.4.0

type Binary struct {
	// contains filtered or unexported fields
}

Binary enables binary data to be enchanged in MTOM mode with XOP encoding When MTOM is not used, the field is encoded in Base64

func NewBinary added in v0.4.0

func NewBinary(v []byte) *Binary

NewBinary allocate a new Binary backed by the given byte slice, an auto-generated packageID and no MTOM-usage

func (*Binary) Bytes added in v0.4.0

func (b *Binary) Bytes() []byte

Bytes returns a slice backed by the content of the field

func (*Binary) ContentType added in v0.4.0

func (b *Binary) ContentType() string

ContentType returns the content type

func (*Binary) MarshalXML added in v0.4.0

func (b *Binary) MarshalXML(enc *xml.Encoder, start xml.StartElement) error

MarshalXML implements the xml.Marshaler interface to encode a Binary to XML

func (*Binary) SetContentType added in v0.4.0

func (b *Binary) SetContentType(contentType string) *Binary

SetContentType sets the content type the content will be transmitted as multipart

func (*Binary) SetPackageID added in v0.5.0

func (b *Binary) SetPackageID(packageID string) *Binary

SetPackageID sets and overrides the default auto-generated package ID to be used for the multipart binary

func (*Binary) SetUseMTOM added in v0.5.0

func (b *Binary) SetUseMTOM(useMTOM bool) *Binary

SetUseMTOM activates the XOP transformation of binaries in MTOM requests

func (*Binary) UnmarshalXML added in v0.4.0

func (b *Binary) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML implements the xml.Unmarshaler interface to decode a Binary form XML

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is soap client

func NewClient

func NewClient(url string, opt ...Option) *Client

NewClient creates new SOAP client instance

func (*Client) AddHeader

func (s *Client) AddHeader(header interface{})

AddHeader adds envelope header For correct behavior, every header must contain a `XMLName` field. Refer to #121 for details

func (*Client) AddMIMEMultipartAttachment added in v0.5.0

func (s *Client) AddMIMEMultipartAttachment(attachment MIMEMultipartAttachment)

AddMIMEMultipartAttachment adds an attachment to the client that will be sent only if the WithMIMEMultipartAttachments option is used

func (*Client) Call

func (s *Client) Call(soapAction string, request, response interface{}) error

Call performs HTTP POST request. Note that if the server returns a status code >= 400, a HTTPError will be returned

func (*Client) CallContext added in v0.4.0

func (s *Client) CallContext(ctx context.Context, soapAction string, request, response interface{}) error

CallContext performs HTTP POST request with a context

func (*Client) CallContextWithAttachmentsAndFaultDetail added in v0.5.0

func (s *Client) CallContextWithAttachmentsAndFaultDetail(ctx context.Context, soapAction string, request,
	response interface{}, faultDetail FaultError, attachments *[]MIMEMultipartAttachment) error

CallContextWithAttachmentsAndFaultDetail performs HTTP POST request. Note that if SOAP fault is returned, it will be stored in the error. On top the attachments array will be filled with attachments returned from the SOAP request.

func (*Client) CallContextWithFaultDetail added in v0.5.0

func (s *Client) CallContextWithFaultDetail(ctx context.Context, soapAction string, request, response interface{}, faultDetail FaultError) error

CallContextWithFault performs HTTP POST request. Note that if SOAP fault is returned, it will be stored in the error.

func (*Client) CallWithFaultDetail added in v0.5.0

func (s *Client) CallWithFaultDetail(soapAction string, request, response interface{}, faultDetail FaultError) error

CallWithFaultDetail performs HTTP POST request. Note that if SOAP fault is returned, it will be stored in the error. the passed in fault detail is expected to implement FaultError interface, which allows to condense the detail into a short error message.

func (*Client) SetHeaders added in v0.5.0

func (s *Client) SetHeaders(headers ...interface{})

SetHeaders sets envelope headers, overwriting any existing headers. For correct behavior, every header must contain a `XMLName` field. Refer to #121 for details

type DetailContainer added in v0.5.0

type DetailContainer struct {
	Detail interface{}
}

type FaultError added in v0.5.0

type FaultError interface {
	// ErrorString should return a short version of the detail as a string,
	// which will be used in place of <faultstring> for the error message.
	// Set "HasData()" to always return false if <faultstring> error
	// message is preferred.
	ErrorString() string
	// HasData indicates whether the composite fault contains any data.
	HasData() bool
}

type HTTPClient added in v0.4.0

type HTTPClient interface {
	Do(req *http.Request) (*http.Response, error)
}

HTTPClient is a client which can make HTTP requests An example implementation is net/http.Client

type HTTPError added in v0.5.0

type HTTPError struct {
	//StatusCode is the status code returned in the HTTP response
	StatusCode int
	//ResponseBody contains the body returned in the HTTP response
	ResponseBody []byte
}

HTTPError is returned whenever the HTTP request to the server fails

func (*HTTPError) Error added in v0.5.0

func (e *HTTPError) Error() string

type MIMEMultipartAttachment added in v0.5.0

type MIMEMultipartAttachment struct {
	Name string
	Data []byte
}

type Option

type Option func(*options)

A Option sets options such as credentials, tls, etc.

func WithBasicAuth

func WithBasicAuth(login, password string) Option

WithBasicAuth is an Option to set BasicAuth

func WithHTTPClient added in v0.4.0

func WithHTTPClient(c HTTPClient) Option

WithHTTPClient is an Option to set the HTTP client to use This cannot be used with WithTLSHandshakeTimeout, WithTLS, WithTimeout options

func WithHTTPHeaders

func WithHTTPHeaders(headers map[string]string) Option

WithHTTPHeaders is an Option to set global HTTP headers for all requests

func WithMIMEMultipartAttachments added in v0.5.0

func WithMIMEMultipartAttachments() Option

WithMIMEMultipartAttachments is an Option to set SOAP MIME Multipart attachment support. Use Client.AddMIMEMultipartAttachment to add attachments of type MIMEMultipartAttachment to your SOAP request.

func WithMTOM added in v0.4.0

func WithMTOM() Option

WithMTOM is an Option to set Message Transmission Optimization Mechanism MTOM encodes fields of type Binary using XOP.

func WithRequestTimeout added in v0.4.0

func WithRequestTimeout(t time.Duration) Option

WithRequestTimeout is an Option to set default end-end connection timeout This option cannot be used with WithHTTPClient

func WithTLS

func WithTLS(tls *tls.Config) Option

WithTLS is an Option to set tls config This option cannot be used with WithHTTPClient

func WithTLSHandshakeTimeout added in v0.4.0

func WithTLSHandshakeTimeout(t time.Duration) Option

WithTLSHandshakeTimeout is an Option to set default tls handshake timeout This option cannot be used with WithHTTPClient

func WithTimeout

func WithTimeout(t time.Duration) Option

WithTimeout is an Option to set default HTTP dial timeout

type SOAPBody

type SOAPBody struct {
	XMLName xml.Name `xml:"soap:Body"`

	Content interface{} `xml:",omitempty"`

	Fault *SOAPFault `xml:",omitempty"`
	// contains filtered or unexported fields
}

func (*SOAPBody) ErrorFromFault added in v0.5.0

func (b *SOAPBody) ErrorFromFault() error

type SOAPBodyResponse added in v0.5.0

type SOAPBodyResponse struct {
	XMLName xml.Name `xml:"Body"`

	Content interface{} `xml:",omitempty"`

	Fault *SOAPFault `xml:",omitempty"`
	// contains filtered or unexported fields
}

func (*SOAPBodyResponse) ErrorFromFault added in v0.5.0

func (b *SOAPBodyResponse) ErrorFromFault() error

func (*SOAPBodyResponse) UnmarshalXML added in v0.5.0

func (b *SOAPBodyResponse) UnmarshalXML(d *xml.Decoder, _ xml.StartElement) error

UnmarshalXML unmarshals SOAPBody xml

type SOAPDecoder added in v0.4.0

type SOAPDecoder interface {
	Decode(v interface{}) error
}

type SOAPEncoder added in v0.4.0

type SOAPEncoder interface {
	Encode(v interface{}) error
	Flush() error
}

type SOAPEnvelope

type SOAPEnvelope struct {
	XMLName xml.Name `xml:"soap:Envelope"`
	XmlNS   string   `xml:"xmlns:soap,attr"`

	Header *SOAPHeader
	Body   SOAPBody
}

type SOAPEnvelopeResponse added in v0.5.0

type SOAPEnvelopeResponse struct {
	XMLName     xml.Name `xml:"http://schemas.xmlsoap.org/soap/envelope/ Envelope"`
	Header      *SOAPHeaderResponse
	Body        SOAPBodyResponse
	Attachments []MIMEMultipartAttachment `xml:"attachments,omitempty"`
}

type SOAPFault

type SOAPFault struct {
	XMLName xml.Name `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault"`

	Code   string     `xml:"faultcode,omitempty"`
	String string     `xml:"faultstring,omitempty"`
	Actor  string     `xml:"faultactor,omitempty"`
	Detail FaultError `xml:"detail,omitempty"`
}

func (*SOAPFault) Error

func (f *SOAPFault) Error() string

type SOAPHeader

type SOAPHeader struct {
	XMLName xml.Name `xml:"soap:Header"`

	Headers []interface{}
}

type SOAPHeaderResponse added in v0.5.0

type SOAPHeaderResponse struct {
	XMLName xml.Name `xml:"Header"`

	Headers []interface{}
}

type WSSPassword

type WSSPassword struct {
	XMLName   xml.Name `xml:"wsse:Password"`
	XmlNSWsse string   `xml:"xmlns:wsse,attr"`
	XmlNSType string   `xml:"Type,attr"`

	Data string `xml:",chardata"`
}

type WSSSecurityHeader

type WSSSecurityHeader struct {
	XMLName   xml.Name `xml:"http://schemas.xmlsoap.org/soap/envelope/ wsse:Security"`
	XmlNSWsse string   `xml:"xmlns:wsse,attr"`

	MustUnderstand string `xml:"mustUnderstand,attr,omitempty"`

	Token *WSSUsernameToken `xml:",omitempty"`
}

func NewWSSSecurityHeader

func NewWSSSecurityHeader(user, pass, tokenID, mustUnderstand string) *WSSSecurityHeader

NewWSSSecurityHeader creates WSSSecurityHeader instance

type WSSUsername

type WSSUsername struct {
	XMLName   xml.Name `xml:"wsse:Username"`
	XmlNSWsse string   `xml:"xmlns:wsse,attr"`

	Data string `xml:",chardata"`
}

type WSSUsernameToken

type WSSUsernameToken struct {
	XMLName   xml.Name `xml:"wsse:UsernameToken"`
	XmlNSWsu  string   `xml:"xmlns:wsu,attr"`
	XmlNSWsse string   `xml:"xmlns:wsse,attr"`

	Id string `xml:"wsu:Id,attr,omitempty"`

	Username *WSSUsername `xml:",omitempty"`
	Password *WSSPassword `xml:",omitempty"`
}

type XSDDate added in v0.5.0

type XSDDate struct {
	// contains filtered or unexported fields
}

XSDDate is a type for representing xsd:date in Golang

func CreateXsdDate added in v0.5.0

func CreateXsdDate(date time.Time, hasTz bool) XSDDate

CreateXsdDate creates an object represent xsd:datetime object in Golang

func (XSDDate) MarshalXML added in v0.5.0

func (xd XSDDate) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML implementation on DateTimeg to skip "zero" time values

func (*XSDDate) StripTz added in v0.5.0

func (xd *XSDDate) StripTz()

StripTz removes the TZ information from the date

func (*XSDDate) ToGoTime added in v0.5.0

func (xd *XSDDate) ToGoTime() time.Time

ToGoTime converts the date to Golang time.Time by checking if a TZ is specified. If there is a TZ, that TZ is used, otherwise local TZ is used

func (*XSDDate) UnmarshalXML added in v0.5.0

func (xd *XSDDate) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML implementation on DateTimeg to use dateTimeLayout

type XSDDateTime added in v0.5.0

type XSDDateTime struct {
	// contains filtered or unexported fields
}

XSDDateTime is a type for representing xsd:datetime in Golang

func CreateXsdDateTime added in v0.5.0

func CreateXsdDateTime(dt time.Time, hasTz bool) XSDDateTime

CreateXsdDateTime creates an object represent xsd:datetime object in Golang

func (XSDDateTime) MarshalXML added in v0.5.0

func (xdt XSDDateTime) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML implementation on DateTime to skip "zero" time values. It also checks if nanoseconds and TZ exist.

func (*XSDDateTime) StripTz added in v0.5.0

func (xdt *XSDDateTime) StripTz()

StripTz removes TZ information from the datetime

func (*XSDDateTime) ToGoTime added in v0.5.0

func (xdt *XSDDateTime) ToGoTime() time.Time

ToGoTime converts the time to time.Time by checking if a TZ is specified. If there is a TZ, that TZ is used, otherwise local TZ is used

func (*XSDDateTime) UnmarshalXML added in v0.5.0

func (xdt *XSDDateTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML implementation on DateTimeg to use dateTimeLayout

type XSDTime added in v0.5.0

type XSDTime struct {
	// contains filtered or unexported fields
}

XSDTime is a type for representing xsd:time

func CreateXsdTime added in v0.5.0

func CreateXsdTime(hour int, min int, sec int, nsec int, loc *time.Location) XSDTime

CreateXsdTime creates an object representing xsd:time in Golang

func (XSDTime) Hour added in v0.5.0

func (xt XSDTime) Hour() int

Hour returns hour of the xsd:time

func (XSDTime) Location added in v0.5.0

func (xt XSDTime) Location() *time.Location

Location returns the TZ information of the xsd:time

func (XSDTime) MarshalXML added in v0.5.0

func (xt XSDTime) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML implementation on DateTimeg to skip "zero" time values

func (XSDTime) Minute added in v0.5.0

func (xt XSDTime) Minute() int

Minute returns minutes of the xsd:time

func (XSDTime) Nanosecond added in v0.5.0

func (xt XSDTime) Nanosecond() int

Nanosecond returns nanosecond of the xsd:time

func (XSDTime) Second added in v0.5.0

func (xt XSDTime) Second() int

Second returns seconds of the xsd:time

func (*XSDTime) UnmarshalXML added in v0.5.0

func (xt *XSDTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML implementation on DateTimeg to use dateTimeLayout

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL