package wray

import (
	"errors"
)

type Transport interface {
	isUsable(string) bool
	connectionType() string
	send(map[string]interface{}) (Response, error)
	setUrl(string)
}

func SelectTransport(client *FayeClient, transportTypes []string, disabled []string) (Transport, error) {
	for _, transport := range registeredTransports {
		if contains(transport.connectionType(), transportTypes) && transport.isUsable(client.url) {
			return transport, nil
		}
	}
	return nil, errors.New("No usable transports available")
}