diff options
author | Dave Lawrence <dlawrence@mozilla.com> | 2014-02-25 22:51:40 +0100 |
---|---|---|
committer | Dave Lawrence <dlawrence@mozilla.com> | 2014-02-25 22:51:40 +0100 |
commit | c3f625b127689438304bf8b5dbf16dd34c7fb905 (patch) | |
tree | 5634a35dc871bc2616f33f9f75b25fe9bc715ae7 /extensions/Example | |
parent | 8fee28c9137095b37103106ae41c35d9c6523a52 (diff) | |
download | bugzilla-c3f625b127689438304bf8b5dbf16dd34c7fb905.tar.gz bugzilla-c3f625b127689438304bf8b5dbf16dd34c7fb905.tar.xz |
Bug 976765 - backport upstream bug 972881 to bmo/4.2 to add hooks to Bugzilla/WebService/Server/REST.pm
Diffstat (limited to 'extensions/Example')
-rw-r--r-- | extensions/Example/Extension.pm | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/extensions/Example/Extension.pm b/extensions/Example/Extension.pm index fe29beb0b..09e3fc03f 100644 --- a/extensions/Example/Extension.pm +++ b/extensions/Example/Extension.pm @@ -955,5 +955,57 @@ sub webservice_error_codes { $error_map->{'example_my_error'} = 10001; } +sub webservice_fix_credentials { + my ($self, $args) = @_; + my $rpc = $args->{'rpc'}; + my $params = $args->{'params'}; + # Allow user to pass in username=foo&password=bar + if (exists $params->{'username'} && exists $params->{'password'}) { + $params->{'Bugzilla_login'} = $params->{'username'}; + $params->{'Bugzilla_password'} = $params->{'password'}; + } +} + +sub webservice_rest_request { + my ($self, $args) = @_; + my $rpc = $args->{'rpc'}; + my $params = $args->{'params'}; + # Internally we may have a field called 'cf_test_field' but we allow users + # to use the shorter 'test_field' name. + if (exists $params->{'test_field'}) { + $params->{'test_field'} = delete $params->{'cf_test_field'}; + } +} + +sub webservice_rest_resources { + my ($self, $args) = @_; + my $rpc = $args->{'rpc'}; + my $resources = $args->{'resources'}; + # Add a new resource that allows for /rest/example/hello + # to call Example.hello + $resources->{'Bugzilla::Extension::Example::WebService'} = [ + qr{^/example/hello$}, { + GET => { + method => 'hello', + } + } + ]; +} + +sub webservice_rest_response { + my ($self, $args) = @_; + my $rpc = $args->{'rpc'}; + my $result = $args->{'result'}; + my $response = $args->{'response'}; + # Convert a list of bug hashes to a single bug hash if only one is + # being returned. + if (ref $$result eq 'HASH' + && exists $$result->{'bugs'} + && scalar @{ $$result->{'bugs'} } == 1) + { + $$result = $$result->{'bugs'}->[0]; + } +} + # This must be the last line of your extension. __PACKAGE__->NAME; |