Merge branch "refactor-backend-settings" into internal

pull/119/head
Anthony Lapenna 2016-08-03 21:18:46 +12:00
commit f4d90306b3
7 changed files with 28 additions and 37 deletions

View File

@ -29,8 +29,8 @@ type (
}
)
func (a *api) run(configuration *Config) {
handler := a.newHandler(configuration)
func (a *api) run(settings *Settings) {
handler := a.newHandler(settings)
if err := http.ListenAndServe(a.bindAddress, handler); err != nil {
log.Fatal(err)
}

View File

@ -1,27 +0,0 @@
package main
import (
"encoding/json"
"net/http"
)
// Config defines the configuration available under the /config endpoint
type Config struct {
Swarm bool `json:"swarm"`
HiddenLabels pairList `json:"hiddenLabels"`
Registries pairList `json:"registries"`
}
// newConfig creates a new Config from command flags
func newConfig(swarm bool, labels, registries pairList) Config {
return Config{
Swarm: swarm,
HiddenLabels: labels,
Registries: registries,
}
}
// configurationHandler defines a handler function used to encode the configuration in JSON
func configurationHandler(w http.ResponseWriter, r *http.Request, c *Config) {
json.NewEncoder(w).Encode(*c)
}

View File

@ -10,7 +10,7 @@ import (
)
// newHandler creates a new http.Handler with CSRF protection
func (a *api) newHandler(c *Config) http.Handler {
func (a *api) newHandler(settings *Settings) http.Handler {
var (
mux = http.NewServeMux()
fileHandler = http.FileServer(http.Dir(a.assetPath))
@ -22,8 +22,8 @@ func (a *api) newHandler(c *Config) http.Handler {
mux.Handle("/", fileHandler)
mux.Handle("/dockerapi/", http.StripPrefix("/dockerapi", handler))
mux.Handle("/ws/exec", websocket.Handler(a.execContainer))
mux.HandleFunc("/config", func(w http.ResponseWriter, r *http.Request) {
configurationHandler(w, r, c)
mux.HandleFunc("/settings", func(w http.ResponseWriter, r *http.Request) {
settingsHandler(w, r, settings)
})
return CSRFHandler(newCSRFWrapper(mux))
}

View File

@ -34,12 +34,12 @@ func main() {
TLSKeyPath: *tlskey,
}
configuration := &Config{
settings := &Settings{
Swarm: *swarm,
HiddenLabels: *labels,
Registries: *registries,
}
api := newAPI(apiConfig)
api.run(configuration)
api.run(settings)
}

18
api/settings.go Normal file
View File

@ -0,0 +1,18 @@
package main
import (
"encoding/json"
"net/http"
)
// Settings defines the settings available under the /settings endpoint
type Settings struct {
Swarm bool `json:"swarm"`
HiddenLabels pairList `json:"hiddenLabels"`
Registries pairList `json:"registries"`
}
// configurationHandler defines a handler function used to encode the configuration in JSON
func settingsHandler(w http.ResponseWriter, r *http.Request, s *Settings) {
json.NewEncoder(w).Encode(*s)
}

View File

@ -153,5 +153,5 @@ angular.module('uifordocker', [
// You need to set this to the api endpoint without the port i.e. http://192.168.1.9
.constant('DOCKER_ENDPOINT', 'dockerapi')
.constant('DOCKER_PORT', '') // Docker port, leave as an empty string if no port is requred. If you have a port, prefix it with a ':' i.e. :4243
.constant('CONFIG_ENDPOINT', 'config')
.constant('UI_VERSION', 'v1.5.0');
.constant('CONFIG_ENDPOINT', 'settings')
.constant('UI_VERSION', 'v1.5.0');

View File

@ -160,7 +160,7 @@ angular.module('uifordocker.services', ['ngResource', 'ngSanitize'])
remove: {method: 'DELETE'}
});
}])
.factory('Config', ['$resource', 'CONFIG_ENDPOINT', function($resource, CONFIG_ENDPOINT) {
.factory('Config', ['$resource', 'CONFIG_ENDPOINT', function ConfigFactory($resource, CONFIG_ENDPOINT) {
return $resource(CONFIG_ENDPOINT).get();
}])
.factory('Settings', ['DOCKER_ENDPOINT', 'DOCKER_PORT', 'UI_VERSION', function SettingsFactory(DOCKER_ENDPOINT, DOCKER_PORT, UI_VERSION) {