All Downloads are FREE. Search and download functionalities are using the official Maven repository.

rust.reqwest.api.mustache Maven / Gradle / Ivy

There is a newer version: 7.8.0
Show newest version
{{>partial_header}}
use std::rc::Rc;
use std::borrow::Borrow;

use reqwest;

use super::{Error, configuration, urlencode};

pub struct {{{classname}}}Client {
    configuration: Rc,
}

impl {{{classname}}}Client {
    pub fn new(configuration: Rc) -> {{{classname}}}Client {
        {{{classname}}}Client {
            configuration: configuration,
        }
    }
}

pub trait {{{classname}}} {
{{#operations}}
{{#operation}}
    fn {{{operationId}}}(&self, {{#allParams}}{{{paramName}}}: {{#isString}}&str{{/isString}}{{#isUuid}}&str{{/isUuid}}{{^isString}}{{^isUuid}}{{^isPrimitiveType}}{{^isContainer}}::models::{{/isContainer}}{{/isPrimitiveType}}{{{dataType}}}{{/isUuid}}{{/isString}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Result<{{^returnType}}(){{/returnType}}{{#returnType}}{{{returnType}}}{{/returnType}}, Error>;
{{/operation}}
{{/operations}}
}

impl {{{classname}}} for {{{classname}}}Client {
{{#operations}}
{{#operation}}
    fn {{{operationId}}}(&self, {{#allParams}}{{{paramName}}}: {{#isString}}&str{{/isString}}{{#isUuid}}&str{{/isUuid}}{{^isString}}{{^isUuid}}{{^isPrimitiveType}}{{^isContainer}}::models::{{/isContainer}}{{/isPrimitiveType}}{{{dataType}}}{{/isUuid}}{{/isString}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Result<{{^returnType}}(){{/returnType}}{{#returnType}}{{{returnType}}}{{/returnType}}, Error> {
        let configuration: &configuration::Configuration = self.configuration.borrow();
        let client = &configuration.client;

        let uri_str = format!("{}{{{path}}}", configuration.base_path{{#pathParams}}, {{{baseName}}}={{#isString}}urlencode({{/isString}}{{{paramName}}}{{#isListContainer}}.join(",").as_ref(){{/isListContainer}}{{#isString}}){{/isString}}{{/pathParams}});
        let mut req_builder = client.{{{httpMethod}}}(uri_str.as_str());

        {{#queryParams}}
        req_builder = req_builder.query(&[("{{{baseName}}}", &{{{paramName}}}{{#isListContainer}}.into_iter().map(|p| p.to_string()).collect::>().join(","){{/isListContainer}}.to_string())]);
        {{/queryParams}}
        {{#hasAuthMethods}}
        {{#authMethods}}
        {{#isApiKey}}
        {{#isKeyInQuery}}
        if let Some(ref apikey) = configuration.api_key {
            let key = apikey.key.clone();
            let val = match apikey.prefix {
                Some(ref prefix) => format!("{} {}", prefix, key),
                None => key,
            };
            req_builder = req_builder.query(&[("{{{keyParamName}}}", val)]);
        }
        {{/isKeyInQuery}}
        {{/isApiKey}}
        {{/authMethods}}
        {{/hasAuthMethods}}
        if let Some(ref user_agent) = configuration.user_agent {
            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
        }
        {{#hasHeaderParams}}
        {{#headerParams}}
        req_builder = req_builder.header("{{{baseName}}}", {{{paramName}}}{{#isListContainer}}.join(","){{/isListContainer}}.to_string());
        {{/headerParams}}
        {{/hasHeaderParams}}
        {{#hasAuthMethods}}
        {{#authMethods}}
        {{#isApiKey}}
        {{#isKeyInHeader}}
        if let Some(ref apikey) = configuration.api_key {
            let key = apikey.key.clone();
            let val = match apikey.prefix {
                Some(ref prefix) => format!("{} {}", prefix, key),
                None => key,
            };
            req_builder = req_builder.header("{{{keyParamName}}}", val);
        };
        {{/isKeyInHeader}}
        {{/isApiKey}}
        {{#isBasic}}
        {{^isBasicBearer}}
        if let Some(ref auth_conf) = configuration.basic_auth {
            req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
        };
        {{/isBasicBearer}}
        {{#isBasicBearer}}
        if let Some(ref token) = configuration.bearer_access_token {
            req_builder = req_builder.bearer_auth(token.to_owned());
        };
        {{/isBasicBearer}}
        {{/isBasic}}
        {{#isOAuth}}
        if let Some(ref token) = configuration.oauth_access_token {
            req_builder = req_builder.bearer_auth(token.to_owned());
        };
        {{/isOAuth}}
        {{/authMethods}}
        {{/hasAuthMethods}}
        {{#isMultipart}}
        {{#hasFormParams}}
        let form = reqwest::multipart::Form::new()
        {{#formParams}}
        {{#isFile}}
            .file("{{{baseName}}}", {{{paramName}}})?{{#-last}};{{/-last}}
        {{/isFile}}
        {{^isFile}}
            .text("{{{baseName}}}", {{{paramName}}}{{#isListContainer}}.join(","){{/isListContainer}}.to_string()){{#-last}};{{/-last}}
        {{/isFile}}
        {{/formParams}}
        req_builder = req_builder.multipart(form);
        {{/hasFormParams}}
        {{/isMultipart}}
        {{^isMultipart}}
        {{#hasFormParams}}
        let mut form_params = std::collections::HashMap::new();
        {{#formParams}}
        {{#isFile}}
        form_params.insert("{{{baseName}}}", unimplemented!("File form param not supported with x-www-form-urlencoded content"));
        {{/isFile}}
        {{^isFile}}
        form_params.insert("{{{baseName}}}", {{{paramName}}}{{#isListContainer}}.join(","){{/isListContainer}}.to_string());
        {{/isFile}}
        {{/formParams}}
        req_builder = req_builder.form(&form_params);
        {{/hasFormParams}}
        {{/isMultipart}}
        {{#hasBodyParam}}
        {{#bodyParams}}
        req_builder = req_builder.json(&{{{paramName}}});
        {{/bodyParams}}
        {{/hasBodyParam}}

        // send request
        let req = req_builder.build()?;

        {{^returnType}}
        client.execute(req)?.error_for_status()?;
        Ok(())
        {{/returnType}}
        {{#returnType}}
        Ok(client.execute(req)?.error_for_status()?.json()?)
        {{/returnType}}
    }

{{/operation}}
{{/operations}}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy