mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 07:42:26 -05:00 
			
		
		
		
	bit of experimenting and tidying
This commit is contained in:
		
					parent
					
						
							
								7590eb9cc2
							
						
					
				
			
			
				commit
				
					
						1eecc2688c
					
				
			
		
					 13 changed files with 167 additions and 109 deletions
				
			
		
							
								
								
									
										1
									
								
								go.mod
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								go.mod
									
										
									
									
									
								
							|  | @ -3,6 +3,7 @@ module github.com/gotosocial/gotosocial | ||||||
| go 1.16 | go 1.16 | ||||||
| 
 | 
 | ||||||
| require ( | require ( | ||||||
|  | 	github.com/gin-gonic/gin v1.6.3 // indirect | ||||||
| 	github.com/go-fed/activity v1.0.0 | 	github.com/go-fed/activity v1.0.0 | ||||||
| 	github.com/go-oauth2/oauth2/v4 v4.2.0 // indirect | 	github.com/go-oauth2/oauth2/v4 v4.2.0 // indirect | ||||||
| 	github.com/go-pg/pg/extra/pgdebug v0.2.0 | 	github.com/go-pg/pg/extra/pgdebug v0.2.0 | ||||||
|  |  | ||||||
							
								
								
									
										26
									
								
								go.sum
									
										
									
									
									
								
							
							
						
						
									
										26
									
								
								go.sum
									
										
									
									
									
								
							|  | @ -59,6 +59,10 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo | ||||||
| github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= | github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= | ||||||
| github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= | github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= | ||||||
| github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= | github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= | ||||||
|  | github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= | ||||||
|  | github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= | ||||||
|  | github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= | ||||||
|  | github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= | ||||||
| github.com/go-fed/activity v1.0.0 h1:j7w3auHZnVCjUcgA1mE+UqSOjFBhvW2Z2res3vNol+o= | github.com/go-fed/activity v1.0.0 h1:j7w3auHZnVCjUcgA1mE+UqSOjFBhvW2Z2res3vNol+o= | ||||||
| github.com/go-fed/activity v1.0.0/go.mod h1:v4QoPaAzjWZ8zN2VFVGL5ep9C02mst0hQYHUpQwso4Q= | github.com/go-fed/activity v1.0.0/go.mod h1:v4QoPaAzjWZ8zN2VFVGL5ep9C02mst0hQYHUpQwso4Q= | ||||||
| github.com/go-fed/httpsig v0.1.1-0.20190914113940-c2de3672e5b5 h1:WLvFZqoXnuVTBKA6U/1FnEHNQ0Rq0QM0rGhY8Tx6R1g= | github.com/go-fed/httpsig v0.1.1-0.20190914113940-c2de3672e5b5 h1:WLvFZqoXnuVTBKA6U/1FnEHNQ0Rq0QM0rGhY8Tx6R1g= | ||||||
|  | @ -75,6 +79,13 @@ github.com/go-pg/pg/v10 v10.8.0 h1:7L1VmOwW/VMmPtz5K3TWWMdM68MDgRs8Yb3c3NTMNgI= | ||||||
| github.com/go-pg/pg/v10 v10.8.0/go.mod h1:0ZZA18+5xlUPvKjlDxoMyU79ZSuJtI+EeM2/GEd4RVo= | github.com/go-pg/pg/v10 v10.8.0/go.mod h1:0ZZA18+5xlUPvKjlDxoMyU79ZSuJtI+EeM2/GEd4RVo= | ||||||
| github.com/go-pg/zerochecker v0.2.0 h1:pp7f72c3DobMWOb2ErtZsnrPaSvHd2W4o9//8HtF4mU= | github.com/go-pg/zerochecker v0.2.0 h1:pp7f72c3DobMWOb2ErtZsnrPaSvHd2W4o9//8HtF4mU= | ||||||
| github.com/go-pg/zerochecker v0.2.0/go.mod h1:NJZ4wKL0NmTtz0GKCoJ8kym6Xn/EQzXRl2OnAe7MmDo= | github.com/go-pg/zerochecker v0.2.0/go.mod h1:NJZ4wKL0NmTtz0GKCoJ8kym6Xn/EQzXRl2OnAe7MmDo= | ||||||
|  | github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= | ||||||
|  | github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= | ||||||
|  | github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= | ||||||
|  | github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= | ||||||
|  | github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= | ||||||
|  | github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= | ||||||
|  | github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= | ||||||
| github.com/go-session/session v3.1.2+incompatible h1:yStchEObKg4nk2F7JGE7KoFIrA/1Y078peagMWcrncg= | github.com/go-session/session v3.1.2+incompatible h1:yStchEObKg4nk2F7JGE7KoFIrA/1Y078peagMWcrncg= | ||||||
| github.com/go-session/session v3.1.2+incompatible/go.mod h1:8B3iivBQjrz/JtC68Np2T1yBBLxTan3mn/3OM0CyRt0= | github.com/go-session/session v3.1.2+incompatible/go.mod h1:8B3iivBQjrz/JtC68Np2T1yBBLxTan3mn/3OM0CyRt0= | ||||||
| github.com/go-test/deep v1.0.1 h1:UQhStjbkDClarlmv0am7OXXO4/GaPdCGiUiMTvi28sg= | github.com/go-test/deep v1.0.1 h1:UQhStjbkDClarlmv0am7OXXO4/GaPdCGiUiMTvi28sg= | ||||||
|  | @ -119,6 +130,7 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ | ||||||
| github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= | github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= | ||||||
| github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||||
| github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= | github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= | ||||||
|  | github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||||
| github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= | github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= | ||||||
| github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= | github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= | ||||||
| github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= | github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= | ||||||
|  | @ -143,6 +155,8 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1: | ||||||
| github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= | github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= | ||||||
| github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= | github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= | ||||||
| github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= | github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= | ||||||
|  | github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= | ||||||
|  | github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= | ||||||
| github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= | github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= | ||||||
| github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= | github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= | ||||||
| github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= | github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= | ||||||
|  | @ -156,10 +170,17 @@ github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn | ||||||
| github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= | ||||||
| github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= | github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= | ||||||
| github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= | ||||||
|  | github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= | ||||||
|  | github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= | ||||||
| github.com/magefile/mage v1.10.0 h1:3HiXzCUY12kh9bIuyXShaVe529fJfyqoVM42o/uom2g= | github.com/magefile/mage v1.10.0 h1:3HiXzCUY12kh9bIuyXShaVe529fJfyqoVM42o/uom2g= | ||||||
| github.com/magefile/mage v1.10.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= | github.com/magefile/mage v1.10.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= | ||||||
| github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= | github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= | ||||||
|  | github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= | ||||||
| github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= | github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= | ||||||
|  | github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= | ||||||
|  | github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | ||||||
|  | github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= | ||||||
|  | github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= | ||||||
| github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= | github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= | ||||||
| github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= | github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= | ||||||
| github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= | github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= | ||||||
|  | @ -233,6 +254,10 @@ github.com/tidwall/tinyqueue v0.1.1 h1:SpNEvEggbpyN5DIReaJ2/1ndroY8iyEGxPYxoSaym | ||||||
| github.com/tidwall/tinyqueue v0.1.1/go.mod h1:O/QNHwrnjqr6IHItYrzoHAKYhBkLI67Q096fQP5zMYw= | github.com/tidwall/tinyqueue v0.1.1/go.mod h1:O/QNHwrnjqr6IHItYrzoHAKYhBkLI67Q096fQP5zMYw= | ||||||
| github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc h1:9lRDQMhESg+zvGYmW5DyG0UqvY96Bu5QYsTLvCHdrgo= | github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc h1:9lRDQMhESg+zvGYmW5DyG0UqvY96Bu5QYsTLvCHdrgo= | ||||||
| github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs= | github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs= | ||||||
|  | github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= | ||||||
|  | github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= | ||||||
|  | github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= | ||||||
|  | github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= | ||||||
| github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= | github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= | ||||||
| github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= | github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= | ||||||
| github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= | github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= | ||||||
|  | @ -551,6 +576,7 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWD | ||||||
| gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
|  | gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= | gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= | ||||||
| gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= | ||||||
|  |  | ||||||
|  | @ -16,4 +16,4 @@ | ||||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. |    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| package client | package api | ||||||
							
								
								
									
										72
									
								
								internal/api/server.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								internal/api/server.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,72 @@ | ||||||
|  | /* | ||||||
|  |    GoToSocial | ||||||
|  |    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||||
|  | 
 | ||||||
|  |    This program is free software: you can redistribute it and/or modify | ||||||
|  |    it under the terms of the GNU Affero General Public License as published by | ||||||
|  |    the Free Software Foundation, either version 3 of the License, or | ||||||
|  |    (at your option) any later version. | ||||||
|  | 
 | ||||||
|  |    This program is distributed in the hope that it will be useful, | ||||||
|  |    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |    GNU Affero General Public License for more details. | ||||||
|  | 
 | ||||||
|  |    You should have received a copy of the GNU Affero General Public License | ||||||
|  |    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | package api | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"net/http" | ||||||
|  | 
 | ||||||
|  | 	"github.com/gin-gonic/gin" | ||||||
|  | 	"github.com/gotosocial/gotosocial/internal/config" | ||||||
|  | 	"github.com/sirupsen/logrus" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | type Server interface { | ||||||
|  | 	AttachHTTPHandler(method string, path string, handler http.HandlerFunc) | ||||||
|  |    AttachGinHandler(method string, path string, handler gin.HandlerFunc) | ||||||
|  |    // AttachMiddleware(handler gin.HandlerFunc) | ||||||
|  |    GetAPIGroup() *gin.RouterGroup | ||||||
|  | 	Start() | ||||||
|  | 	Stop() | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type server struct { | ||||||
|  | 	APIGroup *gin.RouterGroup | ||||||
|  | 	logger   *logrus.Logger | ||||||
|  | 	engine   *gin.Engine | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (s *server) GetAPIGroup() *gin.RouterGroup { | ||||||
|  | 	return s.APIGroup | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (s *server) Start() { | ||||||
|  |    // todo: start gracefully | ||||||
|  | 	s.engine.Run() | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (s *server) Stop() { | ||||||
|  |    // todo: shut down gracefully | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (s *server) AttachHTTPHandler(method string, path string, handler http.HandlerFunc) { | ||||||
|  |    s.engine.Handle(method, path, gin.WrapH(handler)) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (s *server) AttachGinHandler(method string, path string, handler gin.HandlerFunc) { | ||||||
|  |    s.engine.Handle(method, path, handler) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func New(config *config.Config, logger *logrus.Logger) Server { | ||||||
|  | 	engine := gin.New() | ||||||
|  | 	return &server{ | ||||||
|  | 		APIGroup: engine.Group("/api").Group("/v1"), | ||||||
|  | 		logger:   logger, | ||||||
|  | 		engine:   engine, | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @ -1,27 +0,0 @@ | ||||||
| /* |  | ||||||
|    GoToSocial |  | ||||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org |  | ||||||
| 
 |  | ||||||
|    This program is free software: you can redistribute it and/or modify |  | ||||||
|    it under the terms of the GNU Affero General Public License as published by |  | ||||||
|    the Free Software Foundation, either version 3 of the License, or |  | ||||||
|    (at your option) any later version. |  | ||||||
| 
 |  | ||||||
|    This program is distributed in the hope that it will be useful, |  | ||||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|    GNU Affero General Public License for more details. |  | ||||||
| 
 |  | ||||||
|    You should have received a copy of the GNU Affero General Public License |  | ||||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| package client |  | ||||||
| 
 |  | ||||||
| // API is the client API exposed to the outside world for access by front-ends; this is distinct from the federation API |  | ||||||
| type API interface { |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // api implements ClientAPI interface |  | ||||||
| type api struct { |  | ||||||
| } |  | ||||||
|  | @ -1,19 +0,0 @@ | ||||||
| /* |  | ||||||
|    GoToSocial |  | ||||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org |  | ||||||
| 
 |  | ||||||
|    This program is free software: you can redistribute it and/or modify |  | ||||||
|    it under the terms of the GNU Affero General Public License as published by |  | ||||||
|    the Free Software Foundation, either version 3 of the License, or |  | ||||||
|    (at your option) any later version. |  | ||||||
| 
 |  | ||||||
|    This program is distributed in the hope that it will be useful, |  | ||||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |  | ||||||
|    GNU Affero General Public License for more details. |  | ||||||
| 
 |  | ||||||
|    You should have received a copy of the GNU Affero General Public License |  | ||||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| package client |  | ||||||
|  | @ -35,7 +35,7 @@ import ( | ||||||
| 	"github.com/go-pg/pg/v10" | 	"github.com/go-pg/pg/v10" | ||||||
| 	"github.com/go-pg/pg/v10/orm" | 	"github.com/go-pg/pg/v10/orm" | ||||||
| 	"github.com/gotosocial/gotosocial/internal/config" | 	"github.com/gotosocial/gotosocial/internal/config" | ||||||
| 	"github.com/gotosocial/gotosocial/internal/model" | 	"github.com/gotosocial/gotosocial/internal/gtsmodel" | ||||||
| 	"github.com/gotosocial/gotosocial/internal/oauth" | 	"github.com/gotosocial/gotosocial/internal/oauth" | ||||||
| 	"github.com/sirupsen/logrus" | 	"github.com/sirupsen/logrus" | ||||||
| ) | ) | ||||||
|  | @ -316,8 +316,8 @@ func (ps *postgresService) Stop(ctx context.Context) error { | ||||||
| 
 | 
 | ||||||
| func (ps *postgresService) CreateSchema(ctx context.Context) error { | func (ps *postgresService) CreateSchema(ctx context.Context) error { | ||||||
| 	models := []interface{}{ | 	models := []interface{}{ | ||||||
| 		(*model.Account)(nil), | 		(*gtsmodel.GTSAccount)(nil), | ||||||
| 		(*model.Note)(nil), | 		(*gtsmodel.GTSStatus)(nil), | ||||||
| 	} | 	} | ||||||
| 	ps.log.Info("creating db schema") | 	ps.log.Info("creating db schema") | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -23,7 +23,7 @@ import ( | ||||||
| 
 | 
 | ||||||
| 	"github.com/go-fed/activity/pub" | 	"github.com/go-fed/activity/pub" | ||||||
| 	"github.com/gotosocial/gotosocial/internal/cache" | 	"github.com/gotosocial/gotosocial/internal/cache" | ||||||
| 	"github.com/gotosocial/gotosocial/internal/client" | 	"github.com/gotosocial/gotosocial/internal/api" | ||||||
| 	"github.com/gotosocial/gotosocial/internal/config" | 	"github.com/gotosocial/gotosocial/internal/config" | ||||||
| 	"github.com/gotosocial/gotosocial/internal/db" | 	"github.com/gotosocial/gotosocial/internal/db" | ||||||
| ) | ) | ||||||
|  | @ -33,7 +33,7 @@ type Gotosocial interface { | ||||||
| 	Stop(context.Context) error | 	Stop(context.Context) error | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func New(db db.DB, cache cache.Cache, clientAPI client.API, federationAPI pub.FederatingActor, config *config.Config) (Gotosocial, error) { | func New(db db.DB, cache cache.Cache, clientAPI api.Server, federationAPI pub.FederatingActor, config *config.Config) (Gotosocial, error) { | ||||||
| 	return &gotosocial{ | 	return &gotosocial{ | ||||||
| 		db:            db, | 		db:            db, | ||||||
| 		cache:         cache, | 		cache:         cache, | ||||||
|  | @ -46,7 +46,7 @@ func New(db db.DB, cache cache.Cache, clientAPI client.API, federationAPI pub.Fe | ||||||
| type gotosocial struct { | type gotosocial struct { | ||||||
| 	db            db.DB | 	db            db.DB | ||||||
| 	cache         cache.Cache | 	cache         cache.Cache | ||||||
| 	clientAPI     client.API | 	clientAPI     api.Server | ||||||
| 	federationAPI pub.FederatingActor | 	federationAPI pub.FederatingActor | ||||||
| 	config        *config.Config | 	config        *config.Config | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										5
									
								
								internal/gtsmodel/README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								internal/gtsmodel/README.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | ||||||
|  | # gtsmodel | ||||||
|  | 
 | ||||||
|  | This package contains types used *internally* by GoToSocial and added/removed/selected from the database. As such, they contain sensitive fields which should **never** be serialized or reach the API level. Use the [mastotypes](../../pkg/mastotypes) package for that. | ||||||
|  | 
 | ||||||
|  | The annotation used on these structs is for handling them via the go-pg ORM. See [here](https://pg.uptrace.dev/models/). | ||||||
|  | @ -16,17 +16,20 @@ | ||||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. |    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| package model | // package gtsmodel contains types used *internally* by GoToSocial and added/removed/selected from the database. | ||||||
|  | // These types should never be serialized and/or sent out via public APIs, as they contain sensitive information. | ||||||
|  | // The annotation used on these structs is for handling them via the go-pg ORM. See here: https://pg.uptrace.dev/models/ | ||||||
|  | package gtsmodel | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"net/url" | 	"net/url" | ||||||
| 	"time" | 	"time" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // Account represents a user account | // GTSAccount represents a GoToSocial user account | ||||||
| type Account struct { | type GTSAccount struct { | ||||||
| 	Avatar | 	GTSAvatar | ||||||
| 	Header | 	GTSHeader | ||||||
| 	URI                   string | 	URI                   string | ||||||
| 	URL                   string | 	URL                   string | ||||||
| 	ID                    string `pg:"type:uuid,default:gen_random_uuid(),pk,notnull"` | 	ID                    string `pg:"type:uuid,default:gen_random_uuid(),pk,notnull"` | ||||||
|  | @ -63,7 +66,7 @@ type Account struct { | ||||||
| 	SuspensionOrigin      int | 	SuspensionOrigin      int | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type Avatar struct { | type GTSAvatar struct { | ||||||
| 	AvatarFileName             string | 	AvatarFileName             string | ||||||
| 	AvatarContentType          string | 	AvatarContentType          string | ||||||
| 	AvatarFileSize             int | 	AvatarFileSize             int | ||||||
|  | @ -72,7 +75,7 @@ type Avatar struct { | ||||||
| 	AvatarStorageSchemaVersion int | 	AvatarStorageSchemaVersion int | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type Header struct { | type GTSHeader struct { | ||||||
| 	HeaderFileName             string | 	HeaderFileName             string | ||||||
| 	HeaderContentType          string | 	HeaderContentType          string | ||||||
| 	HeaderFileSize             int | 	HeaderFileSize             int | ||||||
|  | @ -80,13 +83,3 @@ type Header struct { | ||||||
| 	HeaderRemoteURL            *url.URL   `pg:"type:text"` | 	HeaderRemoteURL            *url.URL   `pg:"type:text"` | ||||||
| 	HeaderStorageSchemaVersion int | 	HeaderStorageSchemaVersion int | ||||||
| } | } | ||||||
| 
 |  | ||||||
| func StubAccount() *Account { |  | ||||||
| 	return &Account{ |  | ||||||
| 		Username:  "some_user", |  | ||||||
| 		Domain:    "example.org", |  | ||||||
| 		RemoteURL: "https://example.org/@someuser", |  | ||||||
| 		CreatedAt: time.Now(), |  | ||||||
| 		UpdatedAt: time.Now(), |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  | @ -16,11 +16,11 @@ | ||||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. |    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| package model | package gtsmodel | ||||||
| 
 | 
 | ||||||
| import "time" | import "time" | ||||||
| 
 | 
 | ||||||
| type Note struct { | type GTSStatus struct { | ||||||
| 	ID             string `pg:"type:uuid,default:gen_random_uuid(),pk,notnull"` | 	ID             string `pg:"type:uuid,default:gen_random_uuid(),pk,notnull"` | ||||||
| 	URI            string | 	URI            string | ||||||
| 	URL            string | 	URL            string | ||||||
							
								
								
									
										3
									
								
								internal/oauth/README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								internal/oauth/README.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | ||||||
|  | # oauth | ||||||
|  | 
 | ||||||
|  | This package provides uses [go-oauth2](https://github.com/go-oauth2/oauth2) to provide [oauth2](https://www.oauth.com/) server functionality to the GoToSocial APIs. | ||||||
|  | @ -19,42 +19,46 @@ | ||||||
| package oauth | package oauth | ||||||
| 
 | 
 | ||||||
| type Server struct { | type Server struct { | ||||||
|    manager := manage.NewDefaultManager() |  | ||||||
| 	// token memory store |  | ||||||
| 	manager.MustTokenStorage(store.NewMemoryTokenStore()) |  | ||||||
| 
 | 
 | ||||||
| 	// client memory store | } | ||||||
| 	clientStore := store.NewClientStore() | 
 | ||||||
| 	clientStore.Set("000000", &models.Client{ | func main() { | ||||||
| 		ID:     "000000", | //    manager := manage.NewDefaultManager() | ||||||
| 		Secret: "999999", | // 	// token memory store | ||||||
| 		Domain: "http://localhost", | // 	manager.MustTokenStorage(store.NewMemoryTokenStore()) | ||||||
| 	}) | 
 | ||||||
| 	manager.MapClientStorage(clientStore) | // 	// client memory store | ||||||
| 
 | // 	clientStore := store.NewClientStore() | ||||||
| 	srv := server.NewDefaultServer(manager) | // 	clientStore.Set("000000", &models.Client{ | ||||||
| 	srv.SetAllowGetAccessRequest(true) | // 		ID:     "000000", | ||||||
| 	srv.SetClientInfoHandler(server.ClientFormHandler) | // 		Secret: "999999", | ||||||
| 
 | // 		Domain: "http://localhost", | ||||||
| 	srv.SetInternalErrorHandler(func(err error) (re *errors.Response) { | // 	}) | ||||||
| 		log.Println("Internal Error:", err.Error()) | // 	manager.MapClientStorage(clientStore) | ||||||
| 		return | 
 | ||||||
| 	}) | // 	srv := server.NewDefaultServer(manager) | ||||||
| 
 | // 	srv.SetAllowGetAccessRequest(true) | ||||||
| 	srv.SetResponseErrorHandler(func(re *errors.Response) { | // 	srv.SetClientInfoHandler(server.ClientFormHandler) | ||||||
| 		log.Println("Response Error:", re.Error.Error()) | 
 | ||||||
| 	}) | // 	srv.SetInternalErrorHandler(func(err error) (re *errors.Response) { | ||||||
| 
 | // 		log.Println("Internal Error:", err.Error()) | ||||||
| 	http.HandleFunc("/authorize", func(w http.ResponseWriter, r *http.Request) { | // 		return | ||||||
| 		err := srv.HandleAuthorizeRequest(w, r) | // 	}) | ||||||
| 		if err != nil { | 
 | ||||||
| 			http.Error(w, err.Error(), http.StatusBadRequest) | // 	srv.SetResponseErrorHandler(func(re *errors.Response) { | ||||||
| 		} | // 		log.Println("Response Error:", re.Error.Error()) | ||||||
| 	}) | // 	}) | ||||||
| 
 | 
 | ||||||
| 	http.HandleFunc("/token", func(w http.ResponseWriter, r *http.Request) { | // 	http.HandleFunc("/authorize", func(w http.ResponseWriter, r *http.Request) { | ||||||
| 		srv.HandleTokenRequest(w, r) | // 		err := srv.HandleAuthorizeRequest(w, r) | ||||||
| 	}) | // 		if err != nil { | ||||||
| 
 | // 			http.Error(w, err.Error(), http.StatusBadRequest) | ||||||
| 	log.Fatal(http.ListenAndServe(":9096", nil)) | // 		} | ||||||
|  | // 	}) | ||||||
|  | 
 | ||||||
|  | // 	http.HandleFunc("/token", func(w http.ResponseWriter, r *http.Request) { | ||||||
|  | // 		srv.HandleTokenRequest(w, r) | ||||||
|  | // 	}) | ||||||
|  | 
 | ||||||
|  | // 	log.Fatal(http.ListenAndServe(":9096", nil)) | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue