mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 00:11:04 +00:00 
			
		
		
		
	Add swagger check (#3811)
This commit is contained in:
		
					parent
					
						
							
								cf8c2e5951
							
						
					
				
			
			
				commit
				
					
						3506717e9c
					
				
			
		
					 13 changed files with 143 additions and 124 deletions
				
			
		| 
						 | 
				
			
			@ -77,6 +77,7 @@ pipeline:
 | 
			
		|||
      - make vet
 | 
			
		||||
      - make lint
 | 
			
		||||
      - make fmt-check
 | 
			
		||||
      - make swagger-check
 | 
			
		||||
      - make misspell-check
 | 
			
		||||
      - make test-vendor
 | 
			
		||||
      - make build
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										11
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								Makefile
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -91,6 +91,15 @@ generate-swagger:
 | 
			
		|||
	fi
 | 
			
		||||
	swagger generate spec -o ./public/swagger.v1.json
 | 
			
		||||
 | 
			
		||||
.PHONY: swagger-check
 | 
			
		||||
swagger-check: generate-swagger
 | 
			
		||||
	@diff=$$(git diff public/swagger.v1.json); \
 | 
			
		||||
	if [ -n "$$diff" ]; then \
 | 
			
		||||
		echo "Please run 'make generate-swagger' and commit the result:"; \
 | 
			
		||||
		echo "$${diff}"; \
 | 
			
		||||
		exit 1; \
 | 
			
		||||
	fi;
 | 
			
		||||
 | 
			
		||||
.PHONY: errcheck
 | 
			
		||||
errcheck:
 | 
			
		||||
	@hash errcheck > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
 | 
			
		||||
| 
						 | 
				
			
			@ -288,7 +297,7 @@ generate-stylesheets:
 | 
			
		|||
.PHONY: swagger-ui
 | 
			
		||||
swagger-ui:
 | 
			
		||||
	rm -Rf public/vendor/assets/swagger-ui
 | 
			
		||||
	git clone --depth=10 -b v3.3.2 --single-branch https://github.com/swagger-api/swagger-ui.git $(TMPDIR)/swagger-ui
 | 
			
		||||
	git clone --depth=10 -b v3.13.4 --single-branch https://github.com/swagger-api/swagger-ui.git $(TMPDIR)/swagger-ui
 | 
			
		||||
	mv $(TMPDIR)/swagger-ui/dist public/vendor/assets/swagger-ui
 | 
			
		||||
	rm -Rf $(TMPDIR)/swagger-ui
 | 
			
		||||
	$(SED_INPLACE) "s;http://petstore.swagger.io/v2/swagger.json;../../../swagger.v1.json;g" public/vendor/assets/swagger-ui/index.html
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										26
									
								
								public/swagger.v1.json
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								public/swagger.v1.json
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -4325,6 +4325,32 @@
 | 
			
		|||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "/topics/search": {
 | 
			
		||||
      "get": {
 | 
			
		||||
        "produces": [
 | 
			
		||||
          "application/json"
 | 
			
		||||
        ],
 | 
			
		||||
        "tags": [
 | 
			
		||||
          "repository"
 | 
			
		||||
        ],
 | 
			
		||||
        "summary": "search topics via keyword",
 | 
			
		||||
        "operationId": "topicSearch",
 | 
			
		||||
        "parameters": [
 | 
			
		||||
          {
 | 
			
		||||
            "type": "integer",
 | 
			
		||||
            "description": "id of the repo to get",
 | 
			
		||||
            "name": "keyword",
 | 
			
		||||
            "in": "path",
 | 
			
		||||
            "required": true
 | 
			
		||||
          }
 | 
			
		||||
        ],
 | 
			
		||||
        "responses": {
 | 
			
		||||
          "200": {
 | 
			
		||||
            "$ref": "#/responses/Repository"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "/user": {
 | 
			
		||||
      "get": {
 | 
			
		||||
        "produces": [
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										62
									
								
								public/vendor/assets/swagger-ui/index.html
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										62
									
								
								public/vendor/assets/swagger-ui/index.html
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
<!-- HTML for static distribution bundle build -->
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="UTF-8">
 | 
			
		||||
    <title>Swagger UI</title>
 | 
			
		||||
    <link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet">
 | 
			
		||||
| 
						 | 
				
			
			@ -15,6 +15,7 @@
 | 
			
		|||
        overflow: -moz-scrollbars-vertical;
 | 
			
		||||
        overflow-y: scroll;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      *,
 | 
			
		||||
      *:before,
 | 
			
		||||
      *:after
 | 
			
		||||
| 
						 | 
				
			
			@ -22,55 +23,21 @@
 | 
			
		|||
        box-sizing: inherit;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    body {
 | 
			
		||||
      body
 | 
			
		||||
      {
 | 
			
		||||
        margin:0;
 | 
			
		||||
        background: #fafafa;
 | 
			
		||||
      }
 | 
			
		||||
    </style>
 | 
			
		||||
</head>
 | 
			
		||||
  </head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
  <body>
 | 
			
		||||
    <div id="swagger-ui"></div>
 | 
			
		||||
 | 
			
		||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position:absolute;width:0;height:0">
 | 
			
		||||
  <defs>
 | 
			
		||||
    <symbol viewBox="0 0 20 20" id="unlocked">
 | 
			
		||||
          <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path>
 | 
			
		||||
    </symbol>
 | 
			
		||||
 | 
			
		||||
    <symbol viewBox="0 0 20 20" id="locked">
 | 
			
		||||
      <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"/>
 | 
			
		||||
    </symbol>
 | 
			
		||||
 | 
			
		||||
    <symbol viewBox="0 0 20 20" id="close">
 | 
			
		||||
      <path d="M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"/>
 | 
			
		||||
    </symbol>
 | 
			
		||||
 | 
			
		||||
    <symbol viewBox="0 0 20 20" id="large-arrow">
 | 
			
		||||
      <path d="M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"/>
 | 
			
		||||
    </symbol>
 | 
			
		||||
 | 
			
		||||
    <symbol viewBox="0 0 20 20" id="large-arrow-down">
 | 
			
		||||
      <path d="M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"/>
 | 
			
		||||
    </symbol>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <symbol viewBox="0 0 24 24" id="jump-to">
 | 
			
		||||
      <path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"/>
 | 
			
		||||
    </symbol>
 | 
			
		||||
 | 
			
		||||
    <symbol viewBox="0 0 24 24" id="expand">
 | 
			
		||||
      <path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>
 | 
			
		||||
    </symbol>
 | 
			
		||||
 | 
			
		||||
  </defs>
 | 
			
		||||
</svg>
 | 
			
		||||
 | 
			
		||||
<div id="swagger-ui"></div>
 | 
			
		||||
 | 
			
		||||
<script src="./swagger-ui-bundle.js"> </script>
 | 
			
		||||
<script src="./swagger-ui-standalone-preset.js"> </script>
 | 
			
		||||
<script>
 | 
			
		||||
window.onload = function() {
 | 
			
		||||
    <script src="./swagger-ui-bundle.js"> </script>
 | 
			
		||||
    <script src="./swagger-ui-standalone-preset.js"> </script>
 | 
			
		||||
    <script>
 | 
			
		||||
    window.onload = function() {
 | 
			
		||||
 | 
			
		||||
      // Build a system
 | 
			
		||||
      const ui = SwaggerUIBundle({
 | 
			
		||||
| 
						 | 
				
			
			@ -88,8 +55,7 @@ window.onload = function() {
 | 
			
		|||
      })
 | 
			
		||||
 | 
			
		||||
      window.ui = ui
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
  </script>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,10 @@
 | 
			
		|||
 | 
			
		||||
        isValid = qp.state === sentState
 | 
			
		||||
 | 
			
		||||
        if (oauth2.auth.schema.get("flow") === "accessCode" && !oauth2.auth.code) {
 | 
			
		||||
        if ((
 | 
			
		||||
          oauth2.auth.schema.get("flow") === "accessCode"||
 | 
			
		||||
          oauth2.auth.schema.get("flow") === "authorizationCode"
 | 
			
		||||
        ) && !oauth2.auth.code) {
 | 
			
		||||
            if (!isValid) {
 | 
			
		||||
                oauth2.errCb({
 | 
			
		||||
                    authId: oauth2.auth.name,
 | 
			
		||||
| 
						 | 
				
			
			@ -42,11 +45,18 @@
 | 
			
		|||
                oauth2.auth.code = qp.code;
 | 
			
		||||
                oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});
 | 
			
		||||
            } else {
 | 
			
		||||
                let oauthErrorMsg
 | 
			
		||||
                if (qp.error) {
 | 
			
		||||
                    oauthErrorMsg = "["+qp.error+"]: " +
 | 
			
		||||
                        (qp.error_description ? qp.error_description+ ". " : "no accessCode received from the server. ") +
 | 
			
		||||
                        (qp.error_uri ? "More info: "+qp.error_uri : "");
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                oauth2.errCb({
 | 
			
		||||
                    authId: oauth2.auth.name,
 | 
			
		||||
                    source: "auth",
 | 
			
		||||
                    level: "error",
 | 
			
		||||
                    message: "Authorization failed: no accessCode received from the server"
 | 
			
		||||
                    message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server"
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| 
						 | 
				
			
			@ -1 +1 @@
 | 
			
		|||
{"version":3,"file":"swagger-ui.css","sources":[],"mappings":"","sourceRoot":""}
 | 
			
		||||
{"version":3,"sources":[],"names":[],"mappings":"","file":"swagger-ui.css","sourceRoot":""}
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue