1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
// Copyright 2020 Palantir Technologies, Inc. // // 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. use crate::blocking::RequestBuilder; use crate::raw::DefaultRawClient; use crate::Builder; use http::Method; /// A blocking HTTP client to a remote service. /// /// It implements the Conjure `Client` trait, but also offers a "raw" request interface for use with services that don't /// provide Conjure service definitions. pub struct Client<T = DefaultRawClient>(pub(crate) crate::Client<T>); impl<T> Clone for Client<T> { fn clone(&self) -> Self { Client(self.0.clone()) } } impl Client { /// Returns a new `Builder` for clients. pub fn builder() -> Builder { Builder::new() } } impl<T> Client<T> { /// Returns a new request builder. /// /// The `pattern` argument is a template for the request path. The `param` method on the builder is used to fill /// in the parameters in the pattern with dynamic values. pub fn request(&self, method: Method, pattern: &'static str) -> RequestBuilder<'_, T> { RequestBuilder::new(self, method, pattern) } /// Returns a new builder for a GET request. pub fn get(&self, pattern: &'static str) -> RequestBuilder<'_, T> { self.request(Method::GET, pattern) } /// Returns a new builder for a POST request. pub fn post(&self, pattern: &'static str) -> RequestBuilder<'_, T> { self.request(Method::POST, pattern) } /// Returns a new builder for a PUT request. pub fn put(&self, pattern: &'static str) -> RequestBuilder<'_, T> { self.request(Method::PUT, pattern) } /// Returns a new builder for a DELETE request. pub fn delete(&self, pattern: &'static str) -> RequestBuilder<'_, T> { self.request(Method::DELETE, pattern) } /// Returns a new builder for a PATCH request. pub fn patch(&self, pattern: &'static str) -> RequestBuilder<'_, T> { self.request(Method::PATCH, pattern) } }