melezhik/swat

Разные set_response_processor для одного ресурса

Closed this issue · 3 comments

Я в meta story использую run_swat_module:

$ cat tests/test1/hook.pm

run_swat_module(
    GET => '/areas',
    {   
        # некие параметры
    }
);

Ресурс /areas возвращает JSON, я его обрабатываю в set_response_processor:

$ cat /areas/hook.pm

set_response_processor(
    sub {
        use JSON;
        # некие действия с json
    }
);

Если я создам вторую meta story c другими параметрами, то set_response_processor у обоих meta story будет одинаковый. А мне нужно, чтобы он был разный.

Можно ли для одного и того же ресурса, но вызываемого в разных meta story, сделать разные set_response_processor?

Миш, если ты хочешь сделать функцию set_response_processor настраиваемую , то ты можешь передавать ее как переменную модуля:

$ cat tests/test1/hook.pm

run_swat_module(
    GET => '/areas',
    {   
        response_sub => sub { 
          my $hdr = shift;
          my $body = shift;
          return "OK1 " 
       } 
    }
);


$ cat /areas/hook.pm

set_response_processor ( module_variable('response_sub') );

Блин, как просто. Ща попробую.

Да, отлично работает. Спасибо!