Code refactoring for bpa operator
[icn.git] / cmd / bpa-operator / vendor / go.opencensus.io / plugin / ochttp / wrapped_body.go
1 // Copyright 2019, OpenCensus Authors
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 package ochttp
16
17 import (
18         "io"
19 )
20
21 // wrappedBody returns a wrapped version of the original
22 // Body and only implements the same combination of additional
23 // interfaces as the original.
24 func wrappedBody(wrapper io.ReadCloser, body io.ReadCloser) io.ReadCloser {
25         var (
26                 wr, i0 = body.(io.Writer)
27         )
28         switch {
29         case !i0:
30                 return struct {
31                         io.ReadCloser
32                 }{wrapper}
33
34         case i0:
35                 return struct {
36                         io.ReadCloser
37                         io.Writer
38                 }{wrapper, wr}
39         default:
40                 return struct {
41                         io.ReadCloser
42                 }{wrapper}
43         }
44 }