Blame vendor/github.com/kolo/xmlrpc/README.md

Packit Service 4d2de5
[![GoDoc](https://godoc.org/github.com/kolo/xmlrpc?status.svg)](https://godoc.org/github.com/kolo/xmlrpc)
Packit Service 4d2de5
Packit Service 4d2de5
## Overview
Packit Service 4d2de5
Packit Service 4d2de5
xmlrpc is an implementation of client side part of XMLRPC protocol in Go language.
Packit Service 4d2de5
Packit Service 4d2de5
## Status
Packit Service 4d2de5
Packit Service 4d2de5
This project is in minimal maintenance mode with no further development. Bug fixes
Packit Service 4d2de5
are accepted, but it might take some time until they will be merged.
Packit Service 4d2de5
Packit Service 4d2de5
## Installation
Packit Service 4d2de5
Packit Service 4d2de5
To install xmlrpc package run `go get github.com/kolo/xmlrpc`. To use
Packit Service 4d2de5
it in application add `"github.com/kolo/xmlrpc"` string to `import`
Packit Service 4d2de5
statement.
Packit Service 4d2de5
Packit Service 4d2de5
## Usage
Packit Service 4d2de5
Packit Service 4d2de5
    client, _ := xmlrpc.NewClient("https://bugzilla.mozilla.org/xmlrpc.cgi", nil)
Packit Service 4d2de5
    result := struct{
Packit Service 4d2de5
      Version string `xmlrpc:"version"`
Packit Service 4d2de5
    }{}
Packit Service 4d2de5
    client.Call("Bugzilla.version", nil, &result)
Packit Service 4d2de5
    fmt.Printf("Version: %s\n", result.Version) // Version: 4.2.7+
Packit Service 4d2de5
Packit Service 4d2de5
Second argument of NewClient function is an object that implements
Packit Service 4d2de5
[http.RoundTripper](http://golang.org/pkg/net/http/#RoundTripper)
Packit Service 4d2de5
interface, it can be used to get more control over connection options.
Packit Service 4d2de5
By default it initialized by http.DefaultTransport object.
Packit Service 4d2de5
Packit Service 4d2de5
### Arguments encoding
Packit Service 4d2de5
Packit Service 4d2de5
xmlrpc package supports encoding of native Go data types to method
Packit Service 4d2de5
arguments.
Packit Service 4d2de5
Packit Service 4d2de5
Data types encoding rules:
Packit Service 4d2de5
Packit Service 4d2de5
* int, int8, int16, int32, int64 encoded to int;
Packit Service 4d2de5
* float32, float64 encoded to double;
Packit Service 4d2de5
* bool encoded to boolean;
Packit Service 4d2de5
* string encoded to string;
Packit Service 4d2de5
* time.Time encoded to datetime.iso8601;
Packit Service 4d2de5
* xmlrpc.Base64 encoded to base64;
Packit Service 4d2de5
* slice encoded to array;
Packit Service 4d2de5
Packit Service 4d2de5
Structs decoded to struct by following rules:
Packit Service 4d2de5
Packit Service 4d2de5
* all public field become struct members;
Packit Service 4d2de5
* field name become member name;
Packit Service 4d2de5
* if field has xmlrpc tag, its value become member name.
Packit Service 4d2de5
Packit Service 4d2de5
Server method can accept few arguments, to handle this case there is
Packit Service 4d2de5
special approach to handle slice of empty interfaces (`[]interface{}`).
Packit Service 4d2de5
Each value of such slice encoded as separate argument.
Packit Service 4d2de5
Packit Service 4d2de5
### Result decoding
Packit Service 4d2de5
Packit Service 4d2de5
Result of remote function is decoded to native Go data type.
Packit Service 4d2de5
Packit Service 4d2de5
Data types decoding rules:
Packit Service 4d2de5
Packit Service 4d2de5
* int, i4 decoded to int, int8, int16, int32, int64;
Packit Service 4d2de5
* double decoded to float32, float64;
Packit Service 4d2de5
* boolean decoded to bool;
Packit Service 4d2de5
* string decoded to string;
Packit Service 4d2de5
* array decoded to slice;
Packit Service 4d2de5
* structs decoded following the rules described in previous section;
Packit Service 4d2de5
* datetime.iso8601 decoded as time.Time data type;
Packit Service 4d2de5
* base64 decoded to string.
Packit Service 4d2de5
Packit Service 4d2de5
## Implementation details
Packit Service 4d2de5
Packit Service 4d2de5
xmlrpc package contains clientCodec type, that implements [rpc.ClientCodec](http://golang.org/pkg/net/rpc/#ClientCodec)
Packit Service 4d2de5
interface of [net/rpc](http://golang.org/pkg/net/rpc) package.
Packit Service 4d2de5
Packit Service 4d2de5
xmlrpc package works over HTTP protocol, but some internal functions
Packit Service 4d2de5
and data type were made public to make it easier to create another
Packit Service 4d2de5
implementation of xmlrpc that works over another protocol. To encode
Packit Service 4d2de5
request body there is EncodeMethodCall function. To decode server
Packit Service 4d2de5
response Response data type can be used.
Packit Service 4d2de5
Packit Service 4d2de5
## Contribution
Packit Service 4d2de5
Packit Service 4d2de5
See [project status](#status).
Packit Service 4d2de5
Packit Service 4d2de5
## Authors
Packit Service 4d2de5
Packit Service 4d2de5
Dmitry Maksimov (dmtmax@gmail.com)