예제 #1
0
func dispatchRequest(r *http.Request, params martini.Params) (responseMessage string, isSuccess bool) { //result is JSON

	objectRequest := messaging.ObjectRequest{}

	paramMap := make(map[string]interface{})
	objectRequest.Extras = paramMap

	message, isSuccess := getObjectRequest(r, &objectRequest, params)

	if isSuccess == false {
		responseMessage = getQueryResponseString("Invalid Query Request", message, false, objectRequest.MessageStack, nil)
	} else {

		dispatcher := processors.Dispatcher{}
		var repResponse repositories.RepositoryResponse = dispatcher.Dispatch(&objectRequest)
		isSuccess = repResponse.IsSuccess

		if isSuccess {
			if repResponse.Body != nil {
				responseMessage = string(repResponse.Body)
				//If it's a FILE
				if checkIfFile(params) != "NAF" {

					rootsaveDirectory := ""
					rootgetDirectory := ""
					if runtime.GOOS == "linux" {
						rootsaveDirectory = objectRequest.Configuration.ServerConfiguration["LinuxFileServer"]["SavePath"]
						rootgetDirectory = objectRequest.Configuration.ServerConfiguration["LinuxFileServer"]["GetPath"]
					} else {
						rootsaveDirectory = objectRequest.Configuration.ServerConfiguration["WindowsFileServer"]["SavePath"]
						rootgetDirectory = objectRequest.Configuration.ServerConfiguration["WindowsFileServer"]["GetPath"]
					}

					var sendRequest = FileServerMessaging.FileRequest{}
					sendRequest.Body = repResponse.Body
					sendRequest.FilePath = ""
					sendRequest.RootSavePath = rootsaveDirectory
					sendRequest.RootGetPath = rootgetDirectory

					exe := FileServer.FileManager{}

					fileResponse := exe.Download(&sendRequest)

					if fileResponse.IsSuccess == true {
						fmt.Println(fileResponse.Message)
					} else {
						fmt.Println(fileResponse.Message)
					}
				}

			} else {
				responseMessage = getQueryResponseString("Successfully completed request", repResponse.Message, isSuccess, objectRequest.MessageStack, repResponse.Data)
			}

		} else {
			responseMessage = getQueryResponseString("Error occured while processing", repResponse.Message, isSuccess, objectRequest.MessageStack, nil)
		}

	}

	return
}