Skip to content

Commit

Permalink
Support header values for state search (fixes #51)
Browse files Browse the repository at this point in the history
  • Loading branch information
danslapman committed May 12, 2023
1 parent 2833aae commit dedf167
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,11 @@ final class StubResolver(stubDAO: HttpStubDAO[Task], stateDAO: PersistentStateDA
mtch <- pattern.findFirstMatchIn(path)
} yield pattern.groups.map(g => g -> mtch.group(g)).to(Map)
val segments = groups.map(segs => Json.fromFields(segs.view.mapValues(Json.fromString))).getOrElse(Json.Null)
val headerJsonMap = Json.fromFields(headers.view.mapValues(Json.fromString))
computeStateSpec(
stubc.state.map(_.fill(Json.obj("__query" -> queryObject, "__segments" -> segments))),
stubc.state.map(
_.fill(Json.obj("__query" -> queryObject, "__segments" -> segments, "__headers" -> headerJsonMap))
),
bodyJson,
bodyXml
)
Expand Down
5 changes: 3 additions & 2 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,15 +135,16 @@ State аккумулятивно дописывается. Разрешено п
## Поиск state

Предикаты для поиска state перечисляются в блоке `state`. Пустой объект (`{}`) в поле state недопустим.
Для поиска state можно использовать данные запроса (без префикса), query параметры (префикс `__query`) и значения, извлекаемые из URL (префикс `__segments`)
Для поиска state можно использовать данные запроса (без префикса), query параметры (префикс `__query`), значения, извлекаемые из URL (префикс `__segments`) и HTTP заголовки (префикс `__headers`)

Пример:

```javascript
{
"_a": "${fieldB}", //поле из тела запроса
"_b": "${__query.arg1}", //query параметр
"_c": "${__segments.id}" //сегмент URL, см. `Экстрация данных из URL`
"_c": "${__segments.id}", //сегмент URL, см. `Экстрация данных из URL`
"_d": "${__headers.Accept}" //HTTP заголовок
}
```

Expand Down

0 comments on commit dedf167

Please sign in to comment.