use hyper::header::{Accept, qitem};
use hyper::mime::{Mime, TopLevel, SubLevel};
use client::Client;
use error;
use utils;
#[derive(Clone, Debug, Deserialize, PartialEq)]
pub struct GitignoreTemplate {
pub name: String,
pub source: String
}
pub trait GitignoreExt {
fn get_gitignore_templates(&mut self) -> Result<Vec<String>, error::Error>;
fn get_gitignore_templates_name(&mut self, name: &String) -> Result<GitignoreTemplate, error::Error>;
fn get_gitignore_templates_name_raw(&mut self, name: &String) -> Result<String, error::Error>;
}
impl GitignoreExt for Client {
fn get_gitignore_templates(&mut self) -> Result<Vec<String>, error::Error> {
utils::request_endpoint(self, "/gitignore/templates".into())
}
fn get_gitignore_templates_name(&mut self, name: &String) -> Result<GitignoreTemplate, error::Error> {
utils::request_endpoint(self, format!("/gitignore/templates/{}", name))
}
fn get_gitignore_templates_name_raw(&mut self, name: &String) -> Result<String, error::Error> {
let mut header = self.get_default_headers();
header.remove::<Accept>();
header.set(Accept(vec![qitem(Mime(TopLevel::Application, SubLevel::Ext("vnd.github.v3.raw".to_string()), vec![]))]));
utils::request_endpoint_with_headers(self, format!("/gitignore/templates/{}", name), Some(header))
}
}