// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
// This file was generated by swaggo/swag

package docs

import (
	"bytes"
	"encoding/json"
	"strings"

	"github.com/alecthomas/template"
	"github.com/swaggo/swag"
)

var doc = `{
    "schemes": {{ marshal .Schemes }},
    "swagger": "2.0",
    "info": {
        "description": "{{.Description}}",
        "title": "{{.Title}}",
        "contact": {},
        "version": "{{.Version}}"
    },
    "host": "{{.Host}}",
    "basePath": "{{.BasePath}}",
    "paths": {
        "/header-pictures/{filename}": {
            "get": {
                "description": "Get the header picture of a user based on the filename",
                "tags": [
                    "user"
                ],
                "summary": "Get the header picture",
                "operationId": "get-header-picture",
                "parameters": [
                    {
                        "description": "name of the file.",
                        "name": "user",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ]
            }
        },
        "/home": {
            "get": {
                "description": "Get tweets of your followings. Auth is required.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "timeline"
                ],
                "summary": "Get the timeline of your account",
                "operationId": "get-timeline",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.tweetListResponse"
                        }
                    },
                    "422": {
                        "description": "Unprocessable Entity",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/login": {
            "post": {
                "description": "Login an existing user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Login an existing user",
                "operationId": "login",
                "parameters": [
                    {
                        "description": "Credentials to use: email and password",
                        "name": "user",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.userLoginRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.userResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "422": {
                        "description": "Unprocessable Entity",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/profile-pictures/{filename}": {
            "get": {
                "description": "Get the profile picture of a user based on the filename",
                "tags": [
                    "user"
                ],
                "summary": "Get the profile picture",
                "operationId": "get-profile-picture",
                "parameters": [
                    {
                        "description": "name of the file.",
                        "name": "user",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ]
            }
        },
        "/profiles/{username}": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Get a profile of a user of the system. Authorization is optional",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "profile"
                ],
                "summary": "Get a User profile",
                "operationId": "get-profile",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.userResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Update user profile based on 4 entries: name, bio, and pictures",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Update a user's profile",
                "operationId": "update-profile",
                "parameters": [
                    {
                        "description": "User details to update. At least **one** field is required.",
                        "name": "user",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.userProfileUpdateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.userResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "422": {
                        "description": "Unprocessable Entity",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/profiles/{username}/follow": {
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Follow a user by username",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "follow"
                ],
                "summary": "Follow a user",
                "operationId": "follow",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Username of the profile you want to follow",
                        "name": "username",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.profileResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "422": {
                        "description": "Unprocessable Entity",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Unfollow a user by username",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "follow"
                ],
                "summary": "Unfollow a user",
                "operationId": "unfollow",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Username of the profile you want to unfollow",
                        "name": "username",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/handler.profileResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "422": {
                        "description": "Unprocessable Entity",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/profiles/{username}/logs": {
            "get": {
                "description": "Get the list of everything the user has done (logs).",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "logs"
                ],
                "operationId": "get-logs",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.EventListResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/profiles/{username}/notifications": {
            "get": {
                "description": "Get the list of everything done with the use being the target (notifications).",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "notifications"
                ],
                "operationId": "get-notifications",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.EventListResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/search/tweet": {
            "get": {
                "description": "Search all the tweets related to the query.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "search"
                ],
                "summary": "Search tweets related to query",
                "operationId": "search-tweets",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Part of the tweets you want to search.",
                        "name": "query",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.tweetListResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/search/username": {
            "get": {
                "description": "Search by specifying the username. Auth is optional.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "search"
                ],
                "summary": "Search a user by its username",
                "operationId": "search-username",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.tweetListResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/signup": {
            "post": {
                "description": "Register a new user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Register a new user",
                "operationId": "sign-up",
                "parameters": [
                    {
                        "description": "User info for registration: email, username and password",
                        "name": "user",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.userRegisterRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/handler.userResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "422": {
                        "description": "Unprocessable Entity",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/suggestions": {
            "get": {
                "description": "Get the list of the users suggested to a user (followers of its followings)",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "suggestions"
                ],
                "operationId": "get-suggestions",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.OwnerListResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/tweets": {
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Create an tweet",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tweet"
                ],
                "summary": "Create an tweet",
                "operationId": "create-tweet",
                "parameters": [
                    {
                        "description": "Tweet to create made of text and media",
                        "name": "tweet",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.tweetCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/handler.singleTweetResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "422": {
                        "description": "Unprocessable Entity",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/tweets/{id}": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Create an tweet. Auth is optional.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tweet"
                ],
                "operationId": "get-tweet",
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/handler.singleTweetResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Get all of the tweets of a user. Auth is required.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tweet"
                ],
                "operationId": "get-tweet",
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/handler.singleTweetResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Delete a tweet from a user's tweets based on the token. Auth is required.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tweet"
                ],
                "operationId": "delete-tweet",
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/handler.singleTweetResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/tweets/{id}/like": {
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Like a tweet. Auth is required.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "like"
                ],
                "operationId": "like",
                "parameters": [
                    {
                        "type": "string",
                        "description": "id of the article that you want to like",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.singleTweetResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "422": {
                        "description": "Unprocessable Entity",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "UnLike a tweet. Auth is required.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "like"
                ],
                "operationId": "unlike",
                "parameters": [
                    {
                        "type": "string",
                        "description": "id of the article that you want to unlike",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.singleTweetResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "422": {
                        "description": "Unprocessable Entity",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/tweets/{id}/list": {
            "get": {
                "description": "Get the list of users who liked and retweeted this tweet. Auth not required.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tweet"
                ],
                "operationId": "get-likes-retweets-list",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Id of the tweet to get the list from.",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.tweetLikeAndRetweetResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/tweets/{id}/retweet": {
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "retweet a tweet. Auth is required.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "retweet"
                ],
                "operationId": "retweet",
                "parameters": [
                    {
                        "type": "string",
                        "description": "id of the article that you want to retweet",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.singleTweetResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "422": {
                        "description": "Unprocessable Entity",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "UnRetweet a tweet. Auth is required.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "unretweet"
                ],
                "operationId": "unretweet",
                "parameters": [
                    {
                        "type": "string",
                        "description": "id of the article that you want to unretweet",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.singleTweetResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        },
        "/user": {
            "put": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Update user information for a user whom information is given",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Update User",
                "operationId": "update-user",
                "parameters": [
                    {
                        "description": "User details to update. At least **one** field is required.",
                        "name": "user",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.userUpdateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.userResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "422": {
                        "description": "Unprocessable Entity",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/utils.Error"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "handler.EventListResponse": {
            "type": "object",
            "properties": {
                "events": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/handler.SingleEventResponse"
                    }
                }
            }
        },
        "handler.FollowersAndFollowingListResponse": {
            "type": "object",
            "properties": {
                "followers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/model.Owner"
                    }
                },
                "followings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/model.Owner"
                    }
                },
                "is_following": {
                    "type": "boolean"
                }
            }
        },
        "handler.OwnerListResponse": {
            "type": "object",
            "properties": {
                "users": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/model.Owner"
                    }
                }
            }
        },
        "handler.SingleEventResponse": {
            "type": "object",
            "properties": {
                "content": {
                    "type": "string"
                },
                "mode": {
                    "type": "string"
                },
                "source": {
                    "$ref": "#/definitions/model.Owner"
                },
                "target": {
                    "$ref": "#/definitions/model.Owner"
                },
                "timestamp": {
                    "type": "string"
                },
                "tweet": {
                    "$ref": "#/definitions/model.Tweet"
                }
            }
        },
        "handler.profileResponse": {
            "type": "object",
            "properties": {
                "profile": {
                    "type": "object",
                    "properties": {
                        "bio": {
                            "type": "string"
                        },
                        "followers": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/model.Owner"
                            }
                        },
                        "followings": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/model.Owner"
                            }
                        },
                        "header_picture": {
                            "type": "string"
                        },
                        "is_following": {
                            "type": "boolean"
                        },
                        "name": {
                            "type": "string"
                        },
                        "profile_picture": {
                            "type": "string"
                        },
                        "tweets": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "username": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "handler.singleTweetResponse": {
            "type": "object",
            "properties": {
                "tweet": {
                    "$ref": "#/definitions/handler.tweetResponse"
                }
            }
        },
        "handler.tweetCreateRequest": {
            "type": "object",
            "properties": {
                "tweet": {
                    "type": "object",
                    "properties": {
                        "media": {
                            "type": "string"
                        },
                        "text": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "handler.tweetLikeAndRetweetResponse": {
            "type": "object",
            "properties": {
                "likes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/model.Owner"
                    }
                },
                "retweets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/model.Owner"
                    }
                }
            }
        },
        "handler.tweetListResponse": {
            "type": "object",
            "properties": {
                "tweets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/handler.tweetResponse"
                    }
                },
                "tweetsCount": {
                    "type": "integer"
                }
            }
        },
        "handler.tweetResponse": {
            "type": "object",
            "properties": {
                "comments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/model.CommentTweet"
                    }
                },
                "id": {
                    "type": "string"
                },
                "liked": {
                    "type": "boolean"
                },
                "likes_count": {
                    "type": "integer"
                },
                "media": {
                    "type": "string"
                },
                "owner": {
                    "$ref": "#/definitions/model.Owner"
                },
                "parents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/model.CommentTweet"
                    }
                },
                "retweeted": {
                    "type": "boolean"
                },
                "retweets_count": {
                    "type": "integer"
                },
                "text": {
                    "type": "string"
                },
                "time": {
                    "type": "string"
                }
            }
        },
        "handler.userLoginRequest": {
            "type": "object",
            "properties": {
                "user": {
                    "type": "object",
                    "required": [
                        "email",
                        "password"
                    ],
                    "properties": {
                        "email": {
                            "type": "string"
                        },
                        "password": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "handler.userProfileUpdateRequest": {
            "type": "object",
            "properties": {
                "user": {
                    "type": "object",
                    "properties": {
                        "bio": {
                            "type": "string"
                        },
                        "header_Picture": {
                            "type": "string"
                        },
                        "name": {
                            "type": "string"
                        },
                        "profile_picture": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "handler.userRegisterRequest": {
            "type": "object",
            "properties": {
                "user": {
                    "type": "object",
                    "required": [
                        "email",
                        "name",
                        "password",
                        "username"
                    ],
                    "properties": {
                        "email": {
                            "type": "string"
                        },
                        "name": {
                            "type": "string"
                        },
                        "password": {
                            "type": "string"
                        },
                        "username": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "handler.userResponse": {
            "type": "object",
            "properties": {
                "user": {
                    "type": "object",
                    "properties": {
                        "bio": {
                            "type": "string"
                        },
                        "email": {
                            "type": "string"
                        },
                        "name": {
                            "type": "string"
                        },
                        "profile_picture": {
                            "type": "string"
                        },
                        "token": {
                            "type": "string"
                        },
                        "username": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "handler.userUpdateRequest": {
            "type": "object",
            "properties": {
                "user": {
                    "type": "object",
                    "properties": {
                        "email": {
                            "type": "string"
                        },
                        "password": {
                            "type": "string"
                        },
                        "username": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "model.CommentTweet": {
            "type": "object",
            "properties": {
                "comments_count": {
                    "type": "integer"
                },
                "date": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "likes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/model.Owner"
                    }
                },
                "media": {
                    "type": "string"
                },
                "owner": {
                    "$ref": "#/definitions/model.Owner"
                },
                "retweets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/model.Owner"
                    }
                },
                "text": {
                    "type": "string"
                },
                "time": {
                    "type": "string"
                }
            }
        },
        "model.Owner": {
            "type": "object",
            "properties": {
                "bio": {
                    "type": "string"
                },
                "is_following": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string"
                },
                "profile_picture": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "model.Tweet": {
            "type": "object",
            "properties": {
                "comments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/model.CommentTweet"
                    }
                },
                "date": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "likes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/model.Owner"
                    }
                },
                "media": {
                    "type": "string"
                },
                "owner": {
                    "$ref": "#/definitions/model.Owner"
                },
                "parents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/model.CommentTweet"
                    }
                },
                "retweets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/model.Owner"
                    }
                },
                "text": {
                    "type": "string"
                },
                "time": {
                    "type": "string"
                }
            }
        },
        "utils.Error": {
            "type": "object",
            "properties": {
                "errors": {
                    "type": "object",
                    "additionalProperties": true
                }
            }
        }
    }
}`

type swaggerInfo struct {
	Version     string
	Host        string
	BasePath    string
	Schemes     []string
	Title       string
	Description string
}

// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = swaggerInfo{
	Version:     "",
	Host:        "",
	BasePath:    "",
	Schemes:     []string{},
	Title:       "",
	Description: "",
}

type s struct{}

func (s *s) ReadDoc() string {
	sInfo := SwaggerInfo
	sInfo.Description = strings.Replace(sInfo.Description, "\n", "\\n", -1)

	t, err := template.New("swagger_info").Funcs(template.FuncMap{
		"marshal": func(v interface{}) string {
			a, _ := json.Marshal(v)
			return string(a)
		},
	}).Parse(doc)
	if err != nil {
		return doc
	}

	var tpl bytes.Buffer
	if err := t.Execute(&tpl, sInfo); err != nil {
		return doc
	}

	return tpl.String()
}

func init() {
	swag.Register(swag.Name, &s{})
}
