(aqlRequest apiCom.AQLRequest, w http.ResponseWriter, r *http.Request)
| 89 | } |
| 90 | |
| 91 | func (handler *QueryHandler) handleAQLInternal(aqlRequest apiCom.AQLRequest, w http.ResponseWriter, r *http.Request) { |
| 92 | var err error |
| 93 | var duration time.Duration |
| 94 | var qcs []*query.AQLQueryContext |
| 95 | var statusCode int |
| 96 | |
| 97 | defer func() { |
| 98 | var errStr string |
| 99 | if err != nil { |
| 100 | errStr = err.Error() |
| 101 | } |
| 102 | |
| 103 | l := utils.GetQueryLogger().With( |
| 104 | "error", errStr, |
| 105 | "request", aqlRequest, |
| 106 | "queries_enabled_", aqlRequest.Body.Queries, |
| 107 | "duration", duration, |
| 108 | "statusCode", statusCode, |
| 109 | "contexts_enabled_", qcs, |
| 110 | "headers", r.Header, |
| 111 | ) |
| 112 | |
| 113 | if statusCode == http.StatusOK { |
| 114 | l.Info("All queries succeeded") |
| 115 | } else { |
| 116 | l.Error("Some of the queries finished with error") |
| 117 | } |
| 118 | }() |
| 119 | |
| 120 | if aqlRequest.Query != "" { |
| 121 | // Override from query parameter |
| 122 | err = json.Unmarshal([]byte(aqlRequest.Query), &aqlRequest.Body) |
| 123 | if err != nil { |
| 124 | statusCode = http.StatusBadRequest |
| 125 | apiCom.RespondWithBadRequest(w, utils.APIError{ |
| 126 | Code: http.StatusBadRequest, |
| 127 | Message: ErrMsgFailedToUnmarshalRequest, |
| 128 | Cause: err, |
| 129 | }) |
| 130 | return |
| 131 | } |
| 132 | } |
| 133 | |
| 134 | if aqlRequest.Body.Queries == nil { |
| 135 | statusCode = http.StatusBadRequest |
| 136 | apiCom.RespondWithBadRequest(w, utils.APIError{ |
| 137 | Code: http.StatusBadRequest, |
| 138 | Message: ErrMsgMissingParameter, |
| 139 | }) |
| 140 | return |
| 141 | } |
| 142 | |
| 143 | returnHLL := aqlRequest.Accept == utils.HTTPContentTypeHyperLogLog |
| 144 | if aqlRequest.DeviceChoosingTimeout <= 0 { |
| 145 | aqlRequest.DeviceChoosingTimeout = -1 |
| 146 | } |
| 147 | |
| 148 | queryTimer := utils.GetRootReporter().GetTimer(utils.QueryLatency) |
no test coverage detected