Low level getMsg
(name string, mreq *apiMsgGetRequest, opts ...JSOpt)
| 1250 | |
| 1251 | // Low level getMsg |
| 1252 | func (js *js) getMsg(name string, mreq *apiMsgGetRequest, opts ...JSOpt) (*RawStreamMsg, error) { |
| 1253 | o, cancel, err := getJSContextOpts(js.opts, opts...) |
| 1254 | if err != nil { |
| 1255 | return nil, err |
| 1256 | } |
| 1257 | if cancel != nil { |
| 1258 | defer cancel() |
| 1259 | } |
| 1260 | |
| 1261 | if err := checkStreamName(name); err != nil { |
| 1262 | return nil, err |
| 1263 | } |
| 1264 | |
| 1265 | var apiSubj string |
| 1266 | if o.directGet && mreq.LastFor != _EMPTY_ { |
| 1267 | apiSubj = apiDirectMsgGetLastBySubjectT |
| 1268 | dsSubj := js.apiSubj(fmt.Sprintf(apiSubj, name, mreq.LastFor)) |
| 1269 | r, err := js.apiRequestWithContext(o.ctx, dsSubj, nil) |
| 1270 | if err != nil { |
| 1271 | return nil, err |
| 1272 | } |
| 1273 | return convertDirectGetMsgResponseToMsg(name, r) |
| 1274 | } |
| 1275 | |
| 1276 | if o.directGet { |
| 1277 | apiSubj = apiDirectMsgGetT |
| 1278 | mreq.NextFor = o.directNextFor |
| 1279 | } else { |
| 1280 | apiSubj = apiMsgGetT |
| 1281 | } |
| 1282 | |
| 1283 | req, err := json.Marshal(mreq) |
| 1284 | if err != nil { |
| 1285 | return nil, err |
| 1286 | } |
| 1287 | |
| 1288 | dsSubj := js.apiSubj(fmt.Sprintf(apiSubj, name)) |
| 1289 | r, err := js.apiRequestWithContext(o.ctx, dsSubj, req) |
| 1290 | if err != nil { |
| 1291 | return nil, err |
| 1292 | } |
| 1293 | |
| 1294 | if o.directGet { |
| 1295 | return convertDirectGetMsgResponseToMsg(name, r) |
| 1296 | } |
| 1297 | |
| 1298 | var resp apiMsgGetResponse |
| 1299 | if err := json.Unmarshal(r.Data, &resp); err != nil { |
| 1300 | return nil, err |
| 1301 | } |
| 1302 | if resp.Error != nil { |
| 1303 | if errors.Is(resp.Error, ErrMsgNotFound) { |
| 1304 | return nil, ErrMsgNotFound |
| 1305 | } |
| 1306 | if errors.Is(resp.Error, ErrStreamNotFound) { |
| 1307 | return nil, ErrStreamNotFound |
| 1308 | } |
| 1309 | return nil, resp.Error |
no test coverage detected