package sessions

import (
	"github.com/mitchellh/mapstructure"

	"github.com/rackspace/gophercloud"
)

// Type represents the type of session persistence being used.
type Type string

const (
	// HTTPCOOKIE is a session persistence mechanism that inserts an HTTP cookie
	// and is used to determine the destination back-end node. This is supported
	// for HTTP load balancing only.
	HTTPCOOKIE Type = "HTTP_COOKIE"

	// SOURCEIP is a session persistence mechanism that keeps track of the source
	// IP address that is mapped and is able to determine the destination
	// back-end node. This is supported for HTTPS pass-through and non-HTTP load
	// balancing only.
	SOURCEIP Type = "SOURCE_IP"
)

// SessionPersistence indicates how a load balancer is using session persistence
type SessionPersistence struct {
	Type Type `mapstructure:"persistenceType"`
}

// EnableResult represents the result of an enable operation.
type EnableResult struct {
	gophercloud.ErrResult
}

// DisableResult represents the result of a disable operation.
type DisableResult struct {
	gophercloud.ErrResult
}

// GetResult represents the result of a get operation.
type GetResult struct {
	gophercloud.Result
}

// Extract interprets a GetResult as a SP, if possible.
func (r GetResult) Extract() (*SessionPersistence, error) {
	if r.Err != nil {
		return nil, r.Err
	}

	var response struct {
		SP SessionPersistence `mapstructure:"sessionPersistence"`
	}

	err := mapstructure.Decode(r.Body, &response)

	return &response.SP, err
}
