docs.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package docs
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "strings"
  6. "text/template"
  7. "github.com/swaggo/swag"
  8. )
  9. var doc = `{
  10. "schemes": {{ marshal .Schemes }},
  11. "swagger": "2.0",
  12. "info": {
  13. "description": "{{escape .Description}}",
  14. "title": "{{.Title}}",
  15. "termsOfService": "https://www.hzinsights.com/",
  16. "contact": {
  17. "name": "www.hzinsights.com/",
  18. "url": "https://www.hzinsights.com/",
  19. "email": "pyan@hzinsights.com"
  20. },
  21. "license": {
  22. "name": "Apache 2.0",
  23. "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
  24. },
  25. "version": "{{.Version}}"
  26. },
  27. "host": "{{.Host}}",
  28. "basePath": "{{.BasePath}}",
  29. "paths": {}
  30. }`
  31. type swaggerInfo struct {
  32. Version string
  33. Host string
  34. BasePath string
  35. Schemes []string
  36. Title string
  37. Description string
  38. }
  39. var SwaggerInfo = swaggerInfo{
  40. Version: "1.0",
  41. Host: "127.0.0.1:8607",
  42. BasePath: "/",
  43. Schemes: []string{},
  44. Title: "弘则人力资源管理系统API接口文档",
  45. Description: "弘则人力资源管理系统API接口文档",
  46. }
  47. type s struct{}
  48. func (s *s) ReadDoc() string {
  49. sInfo := SwaggerInfo
  50. sInfo.Description = strings.Replace(sInfo.Description, "\n", "\\n", -1)
  51. t, err := template.New("swagger_info").Funcs(template.FuncMap{
  52. "marshal": func(v interface{}) string {
  53. a, _ := json.Marshal(v)
  54. return string(a)
  55. },
  56. "escape": func(v interface{}) string {
  57. str := strings.Replace(v.(string), "\t", "\\t", -1)
  58. str = strings.Replace(str, "\"", "\\\"", -1)
  59. return strings.Replace(str, "\\\\\"", "\\\\\\\"", -1)
  60. },
  61. }).Parse(doc)
  62. if err != nil {
  63. return doc
  64. }
  65. var tpl bytes.Buffer
  66. if err := t.Execute(&tpl, sInfo); err != nil {
  67. return doc
  68. }
  69. return tpl.String()
  70. }
  71. func init() {
  72. swag.Register("swagger", &s{})
  73. }