mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 13:12:25 -05:00 
			
		
		
		
	[bugfix] Fix Swagger spec and add test script (#2698)
* Add Swagger spec test script * Fix Swagger spec errors not related to statuses with polls * Add API tests that post a status with a poll * Fix creating a status with a poll from form params * Fix Swagger spec errors related to statuses with polls (this is the last error) * Fix Swagger spec warnings not related to unused definitions * Suppress a duplicate list update params definition that was somehow causing wrong param names * Add Swagger test to CI - updates Drone config - vendorizes go-swagger - fixes a file extension issue that caused the test script to generate JSON instead of YAML with the vendorized version * Put `Sample: ` on its own line everywhere * Remove unused id param from emojiCategoriesGet * Add 5 more pairs of profile fields to account update API Swagger * Remove Swagger prefix from dummy fields It makes the generated code look weird * Manually annotate params for statusCreate operation * Fix all remaining Swagger spec warnings - Change some models into operation parameters - Ignore models that already correspond to manually documented operation parameters but can't be trivially changed (those with file fields) * Documented that creating a status with scheduled_at isn't implemented yet * sign drone.yml * Fix filter API Swagger errors * fixup! Fix filter API Swagger errors --------- Co-authored-by: tobi <tobi.smethurst@protonmail.com>
This commit is contained in:
		
					parent
					
						
							
								68c8fe67cc
							
						
					
				
			
			
				commit
				
					
						fc3741365c
					
				
			
		
					 672 changed files with 135624 additions and 713 deletions
				
			
		
							
								
								
									
										86
									
								
								vendor/github.com/felixge/httpsnoop/capture_metrics.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								vendor/github.com/felixge/httpsnoop/capture_metrics.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,86 @@ | |||
| package httpsnoop | ||||
| 
 | ||||
| import ( | ||||
| 	"io" | ||||
| 	"net/http" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
| // Metrics holds metrics captured from CaptureMetrics. | ||||
| type Metrics struct { | ||||
| 	// Code is the first http response code passed to the WriteHeader func of | ||||
| 	// the ResponseWriter. If no such call is made, a default code of 200 is | ||||
| 	// assumed instead. | ||||
| 	Code int | ||||
| 	// Duration is the time it took to execute the handler. | ||||
| 	Duration time.Duration | ||||
| 	// Written is the number of bytes successfully written by the Write or | ||||
| 	// ReadFrom function of the ResponseWriter. ResponseWriters may also write | ||||
| 	// data to their underlaying connection directly (e.g. headers), but those | ||||
| 	// are not tracked. Therefor the number of Written bytes will usually match | ||||
| 	// the size of the response body. | ||||
| 	Written int64 | ||||
| } | ||||
| 
 | ||||
| // CaptureMetrics wraps the given hnd, executes it with the given w and r, and | ||||
| // returns the metrics it captured from it. | ||||
| func CaptureMetrics(hnd http.Handler, w http.ResponseWriter, r *http.Request) Metrics { | ||||
| 	return CaptureMetricsFn(w, func(ww http.ResponseWriter) { | ||||
| 		hnd.ServeHTTP(ww, r) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| // CaptureMetricsFn wraps w and calls fn with the wrapped w and returns the | ||||
| // resulting metrics. This is very similar to CaptureMetrics (which is just | ||||
| // sugar on top of this func), but is a more usable interface if your | ||||
| // application doesn't use the Go http.Handler interface. | ||||
| func CaptureMetricsFn(w http.ResponseWriter, fn func(http.ResponseWriter)) Metrics { | ||||
| 	m := Metrics{Code: http.StatusOK} | ||||
| 	m.CaptureMetrics(w, fn) | ||||
| 	return m | ||||
| } | ||||
| 
 | ||||
| // CaptureMetrics wraps w and calls fn with the wrapped w and updates | ||||
| // Metrics m with the resulting metrics. This is similar to CaptureMetricsFn, | ||||
| // but allows one to customize starting Metrics object. | ||||
| func (m *Metrics) CaptureMetrics(w http.ResponseWriter, fn func(http.ResponseWriter)) { | ||||
| 	var ( | ||||
| 		start         = time.Now() | ||||
| 		headerWritten bool | ||||
| 		hooks         = Hooks{ | ||||
| 			WriteHeader: func(next WriteHeaderFunc) WriteHeaderFunc { | ||||
| 				return func(code int) { | ||||
| 					next(code) | ||||
| 
 | ||||
| 					if !headerWritten { | ||||
| 						m.Code = code | ||||
| 						headerWritten = true | ||||
| 					} | ||||
| 				} | ||||
| 			}, | ||||
| 
 | ||||
| 			Write: func(next WriteFunc) WriteFunc { | ||||
| 				return func(p []byte) (int, error) { | ||||
| 					n, err := next(p) | ||||
| 
 | ||||
| 					m.Written += int64(n) | ||||
| 					headerWritten = true | ||||
| 					return n, err | ||||
| 				} | ||||
| 			}, | ||||
| 
 | ||||
| 			ReadFrom: func(next ReadFromFunc) ReadFromFunc { | ||||
| 				return func(src io.Reader) (int64, error) { | ||||
| 					n, err := next(src) | ||||
| 
 | ||||
| 					headerWritten = true | ||||
| 					m.Written += n | ||||
| 					return n, err | ||||
| 				} | ||||
| 			}, | ||||
| 		} | ||||
| 	) | ||||
| 
 | ||||
| 	fn(Wrap(w, hooks)) | ||||
| 	m.Duration += time.Since(start) | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue