| 218 | } |
| 219 | |
| 220 | func BackendFromJSON(in []byte, id ...string) (*Backend, error) { |
| 221 | var rb *rawBackend |
| 222 | |
| 223 | if err := json.Unmarshal(in, &rb); err != nil { |
| 224 | return nil, err |
| 225 | } |
| 226 | if rb.Type != HTTP { |
| 227 | return nil, fmt.Errorf("Unsupported backend type %v", rb.Type) |
| 228 | } |
| 229 | |
| 230 | var s HTTPBackendSettings |
| 231 | if rb.Settings != nil { |
| 232 | if err := json.Unmarshal(rb.Settings, &s); err != nil { |
| 233 | return nil, err |
| 234 | } |
| 235 | } |
| 236 | if s.TLS != nil { |
| 237 | if _, err := NewTLSConfig(s.TLS); err != nil { |
| 238 | return nil, err |
| 239 | } |
| 240 | } |
| 241 | if len(id) != 0 { |
| 242 | rb.Id = id[0] |
| 243 | } |
| 244 | b, err := NewHTTPBackend(rb.Id, s) |
| 245 | if err != nil { |
| 246 | return nil, err |
| 247 | } |
| 248 | b.Stats = rb.Stats |
| 249 | return b, nil |
| 250 | } |
| 251 | |
| 252 | func ServersFromJSON(in []byte) ([]Server, error) { |
| 253 | var rs *rawServers |