MCPcopy Create free account
hub / github.com/cloudwan/gohan / NewServer

Function NewServer

server/server.go:197–409  ·  view source on GitHub ↗

NewServer returns new GohanAPIServer

(configFile string)

Source from the content-addressed store, hash-verified

195
196//NewServer returns new GohanAPIServer
197func NewServer(configFile string) (*Server, error) {
198 manager := schema.GetManager()
199 config := util.GetConfig()
200 err := config.ReadConfig(configFile)
201 if err != nil {
202 return nil, fmt.Errorf("Config load error: %s", err)
203 }
204 err = os.Chdir(path.Dir(configFile))
205 if err != nil {
206 return nil, fmt.Errorf("Chdir error: %s", err)
207 }
208 err = l.SetUpLogging(config)
209 if err != nil {
210 return nil, fmt.Errorf("Logging setup error: %s", err)
211 }
212 log.Info("logging initialized")
213
214 server := &Server{}
215
216 m := martini.Classic()
217 m.Handlers()
218 m.Use(middleware.Logging())
219 m.Use(middleware.Metrics())
220 m.Use(martini.Recovery())
221 m.Use(middleware.JSONURLs())
222 m.Use(middleware.WithContext())
223
224 server.martini = m
225
226 port := os.Getenv("PORT")
227
228 if port == "" {
229 port = "9091"
230 }
231
232 setupEditor(server)
233
234 server.extensions = config.GetStringList("extension/use", []string{
235 "goext",
236 "javascript",
237 "gohanscript",
238 "go",
239 })
240 schema.DefaultExtension = config.GetString("extension/default", "javascript")
241
242 manager.TimeLimit = time.Duration(config.GetInt("extension/timelimit", 30)) * time.Second
243
244 if config.GetList("extension/timelimits", nil) != nil {
245 timeLimitList := config.GetList("extension/timelimits", nil)
246 for _, timeLimit := range timeLimitList {
247 cfgRaw := timeLimit.(map[string]interface{})
248 cfgPath := cfgRaw["path"].(string)
249 cfgEvent := cfgRaw["event"].(string)
250 cfgTimeDuration := cfgRaw["timelimit"].(int)
251
252 manager.TimeLimits = append(manager.TimeLimits, &schema.PathEventTimeLimit{
253 PathRegex: regexp.MustCompile(cfgPath),
254 EventRegex: regexp.MustCompile(cfgEvent),

Callers 1

RunServerFunction · 0.85

Calls 15

connectDBMethod · 0.95
initDBMethod · 0.95
addPprofRoutesMethod · 0.95
addOptionsRouteMethod · 0.95
mapRoutesMethod · 0.95
setupEditorFunction · 0.85
ReadConfigMethod · 0.80
DirMethod · 0.80
HandlersMethod · 0.80
GetStringListMethod · 0.80
GetStringMethod · 0.80
GetIntMethod · 0.80

Tested by

no test coverage detected