func getObjectRequest(r *http.Request, objectRequest *messaging.ObjectRequest, params martini.Params) (message string, isSuccess bool) { missingFields := "" isSuccess = true headerToken := r.Header.Get("securityToken") sendMetaData := r.Header.Get("sendMetaData") headerLog := r.Header.Get("log") var headerOperation string headerMultipliciry := r.Header.Get("multiplicity") headerNamespace := params["namespace"] headerClass := params["class"] headerId := params["id"] headerKeyword := r.URL.Query().Get("keyword") //check if <Skip> and <Take> are specified //If so store them in ObjectRequest <Extras> if r.URL.Query().Get("skip") != "" { objectRequest.Extras["skip"] = r.URL.Query().Get("skip") } if r.URL.Query().Get("take") != "" { objectRequest.Extras["take"] = r.URL.Query().Get("take") } if r.URL.Query().Get("fieldName") != "" { objectRequest.Extras["fieldName"] = r.URL.Query().Get("fieldName") } if len(headerToken) == 0 { isSuccess = false missingFields = missingFields + "securityToken" } if len(headerLog) != 0 { objectRequest.IsLogEnabled = true var initialSlice []string initialSlice = make([]string, 0) objectRequest.MessageStack = initialSlice } else { objectRequest.IsLogEnabled = false } var requestBody messaging.RequestBody if isSuccess { //isTokenValid, _ := validateSecurityToken(headerToken, headerNamespace) isTokenValid := true if isTokenValid { if r.Method != "GET" { rb, rerr := ioutil.ReadAll(r.Body) if rerr != nil { message = "Error converting request : " + rerr.Error() isSuccess = false } else { err := json.Unmarshal(rb, &requestBody) if err != nil { message = "JSON Parse error in Request : " + err.Error() isSuccess = false } else { objectRequest.Body = requestBody } } } if isSuccess { canAddHeader := true switch r.Method { case "GET": //read keyword, and unique key if len(headerId) != 0 { headerOperation = "read-key" } else if len(headerKeyword) != 0 { objectRequest.Body = messaging.RequestBody{} objectRequest.Body.Query = messaging.Query{Parameters: headerKeyword} headerOperation = "read-keyword" } else if len(headerNamespace) != 0 && len(headerClass) != 0 { headerOperation = "read-all" } canAddHeader = false case "POST": //read query, read special, insert if len(requestBody.Object) != 0 || len(requestBody.Objects) != 0 { fmt.Println("Insert by POST : " + objectRequest.Body.Parameters.KeyProperty) headerOperation = "insert" if len(objectRequest.Body.Object) != 0 { headerId = objectRequest.Body.Object[objectRequest.Body.Parameters.KeyProperty].(string) } } else if requestBody.Query.Type != "" && requestBody.Query.Type != " " { fmt.Println("Query Function Identified!") headerOperation = "read-filter" canAddHeader = false } else if requestBody.Special.Type != "" && requestBody.Special.Type != " " { fmt.Println("Special Function Identified!") headerOperation = "special" canAddHeader = false } case "PUT": //update if len(objectRequest.Body.Objects) != 0 { headerOperation = "update" } else { headerId = objectRequest.Body.Object[objectRequest.Body.Parameters.KeyProperty].(string) headerOperation = "update" } case "DELETE": //delete if len(objectRequest.Body.Objects) != 0 { headerOperation = "delete" } else { headerId = objectRequest.Body.Object[objectRequest.Body.Parameters.KeyProperty].(string) headerOperation = "delete" } } if len(objectRequest.Body.Objects) != 0 { headerMultipliciry = "multiple" } else if len(objectRequest.Body.Object) != 0 { headerMultipliciry = "single" } objectRequest.Controls = messaging.RequestControls{SecurityToken: headerToken, SendMetaData: sendMetaData, Namespace: headerNamespace, Class: headerClass, Multiplicity: headerMultipliciry, Id: headerId, Operation: headerOperation} configObject := configuration.ConfigurationManager{}.Get(headerToken, headerNamespace, headerClass) objectRequest.Configuration = configObject if canAddHeader { //This was changed on 2015-08-04 //From now on headers will be added in repositories.RepositoryExecutor.go //Why this wasn't removed then? Without this note you could have deleted this. //SAVING IT FOR A RAINY DAY! Stop questioning the dev! repositories.FillControlHeaders(objectRequest) } } } else { isSuccess = false message = "Access token not validated." + missingFields } } else { message = "Missing attributes in request header : " + missingFields } return }