mirror of
https://github.com/ivanizag/izapple2.git
synced 2025-01-16 05:33:59 +00:00
40 lines
875 B
Go
40 lines
875 B
Go
package fujinet
|
|
|
|
import (
|
|
"net/url"
|
|
"strings"
|
|
)
|
|
|
|
type Protocol interface {
|
|
Open(urlParsed *url.URL)
|
|
Close()
|
|
ReadAll() ([]uint8, ErrorCode)
|
|
Write(data []uint8) error
|
|
}
|
|
|
|
type ErrorCode uint8
|
|
|
|
const (
|
|
// See fujinet-platformio/lib/network-protocol/status_error_codes.h
|
|
NoError = ErrorCode(0)
|
|
NetworkErrorEndOfFile = ErrorCode(136)
|
|
NetworkErrorGeneral = ErrorCode(144)
|
|
NetworkErrorNotImplemented = ErrorCode(146)
|
|
NetworkErrorInvalidDeviceSpec = ErrorCode(165)
|
|
|
|
// New
|
|
NetworkErrorJsonParseError = ErrorCode(250)
|
|
)
|
|
|
|
func InstantiateProtocol(urlParsed *url.URL, method uint8) (Protocol, ErrorCode) {
|
|
scheme := strings.ToUpper(urlParsed.Scheme)
|
|
switch scheme {
|
|
case "HTTP":
|
|
return newProtocolHttp(method), NoError
|
|
case "HTTPS":
|
|
return newProtocolHttp(method), NoError
|
|
default:
|
|
return nil, NetworkErrorGeneral
|
|
}
|
|
}
|