The server which I am contacting to is written in python and excepts bencoded list.
In my existing python client code I do something like this:
>>> import bencode
>>> data = [4456, 'Rakesh', 27]
>>> bdata = bencode.bencode(data)
>>> bdata
'li4456e6:Rakeshi27ee'
Server gets back the list by:
>>> bencode.bdecode(bdata)
[4456, 'Rakesh', 27]
How do I achieve the client part in golang? I know that there is bencode packages already written, but the trick here is how do I arrive at 'li4456e6:Rakeshi27ee' in golang by providing a sequence of elements of 'different data types' so that when server(written in python) does bdecode, it gets back list [4456, 'Rakesh', 27].
I am writing only the client in golang and don't want to change anything on the server side.
This appears to do what you want:
package main
import "fmt"
import "bytes"
import "log"
import bencode "github.com/jackpal/bencode-go"
func main() {
a := []interface{}{4456, "Rakesh", 27}
var buf bytes.Buffer
err := bencode.Marshal(&buf, a)
if err != nil {
log.Fatal(err)
}
fmt.Println(buf.String())
}
Output:
li4456e6:Rakeshi27ee