| // Copyright 2015 go-swagger maintainers |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package runtime |
| |
| import ( |
| "io" |
| "io/ioutil" |
| "net/url" |
| "time" |
| |
| "github.com/go-openapi/strfmt" |
| ) |
| |
| // ClientRequestWriterFunc converts a function to a request writer interface |
| type ClientRequestWriterFunc func(ClientRequest, strfmt.Registry) error |
| |
| // WriteToRequest adds data to the request |
| func (fn ClientRequestWriterFunc) WriteToRequest(req ClientRequest, reg strfmt.Registry) error { |
| return fn(req, reg) |
| } |
| |
| // ClientRequestWriter is an interface for things that know how to write to a request |
| type ClientRequestWriter interface { |
| WriteToRequest(ClientRequest, strfmt.Registry) error |
| } |
| |
| // ClientRequest is an interface for things that know how to |
| // add information to a swagger client request |
| type ClientRequest interface { |
| SetHeaderParam(string, ...string) error |
| |
| SetQueryParam(string, ...string) error |
| |
| SetFormParam(string, ...string) error |
| |
| SetPathParam(string, string) error |
| |
| GetQueryParams() url.Values |
| |
| SetFileParam(string, ...NamedReadCloser) error |
| |
| SetBodyParam(interface{}) error |
| |
| SetTimeout(time.Duration) error |
| |
| GetMethod() string |
| |
| GetPath() string |
| |
| GetBody() []byte |
| |
| GetBodyParam() interface{} |
| |
| GetFileParam() map[string][]NamedReadCloser |
| } |
| |
| // NamedReadCloser represents a named ReadCloser interface |
| type NamedReadCloser interface { |
| io.ReadCloser |
| Name() string |
| } |
| |
| // NamedReader creates a NamedReadCloser for use as file upload |
| func NamedReader(name string, rdr io.Reader) NamedReadCloser { |
| rc, ok := rdr.(io.ReadCloser) |
| if !ok { |
| rc = ioutil.NopCloser(rdr) |
| } |
| return &namedReadCloser{ |
| name: name, |
| cr: rc, |
| } |
| } |
| |
| type namedReadCloser struct { |
| name string |
| cr io.ReadCloser |
| } |
| |
| func (n *namedReadCloser) Close() error { |
| return n.cr.Close() |
| } |
| func (n *namedReadCloser) Read(p []byte) (int, error) { |
| return n.cr.Read(p) |
| } |
| func (n *namedReadCloser) Name() string { |
| return n.name |
| } |