(handler reflect.Type)
| 124 | } |
| 125 | |
| 126 | func validateReturns(handler reflect.Type) error { |
| 127 | errorType := reflect.TypeOf((*error)(nil)).Elem() |
| 128 | |
| 129 | switch n := handler.NumOut(); { |
| 130 | case n > 2: |
| 131 | return fmt.Errorf("handler may not return more than two values") |
| 132 | case n > 1: |
| 133 | if !handler.Out(1).Implements(errorType) { |
| 134 | return fmt.Errorf("handler returns two values, but the second does not implement error") |
| 135 | } |
| 136 | case n == 1: |
| 137 | if !handler.Out(0).Implements(errorType) { |
| 138 | return fmt.Errorf("handler returns a single value, but it does not implement error") |
| 139 | } |
| 140 | } |
| 141 | |
| 142 | return nil |
| 143 | } |
| 144 | |
| 145 | // NewHandler creates a base lambda handler from the given handler function. The |
| 146 | // returned Handler performs JSON serialization and deserialization, and |
no outgoing calls
searching dependent graphs…