Skip to content

Поддержка структурированного текста #28

Description

@ivanych

Это такой фич-реквест. Было бы очень круто.

swat предназначен для веба. А в вебе нынче обычным делом является json. Практически все API выдают json.

Было бы очень удобно, если бы swat мог работать с json-ом без написания вручную кучи вспомогательного кода в set_response_processor.

Как мне это видится:

  1. В чек-листе, по аналогии с регуляркой, пишем выражение на jsonpath (JSON::Path):
jsonpath: store.book.author
  1. swat, встретив инструкцию jsonpath, понимает, что проверяемый текст - это json. Тогда swat запускает функцию, которая декодирует $body как json (JSON::XS). Если декодирование не удалось, то проверка сразу провалена. Если же удалось, то поехали дальше (и можно где-то внутри взвести флаг, означающий, что валидность этого json-a проверена и больше валидировать не надо, если вдруг в чек-листе будут еще инструкции jsonpath).

  2. Выражение jsonpath применяется к $body. Если вернулось хоть что-то, то проверка пройдена (а вернувшееся нужно записать, как записываются захваты в регулярке, чтобы потом можно было получить это через функцию - например, через capture_json()).

  3. Дальше в чек-листе можно написать, опять же, по аналогии с регуляркой, что-то такое:

code: print capture_json()->[0]
# или
validator: [ ( capture_json()->[0] eq 'Пушкин' ), 'Да, автор - Пушкин') ];

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions