mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-30 22:22:25 -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 | ||||
| 
 | ||||
| require ( | ||||
| 	github.com/gin-gonic/gin v1.6.3 // indirect | ||||
| 	github.com/go-fed/activity v1.0.0 | ||||
| 	github.com/go-oauth2/oauth2/v4 v4.2.0 // indirect | ||||
| 	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/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= | ||||
| 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/go.mod h1:v4QoPaAzjWZ8zN2VFVGL5ep9C02mst0hQYHUpQwso4Q= | ||||
| 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/zerochecker v0.2.0 h1:pp7f72c3DobMWOb2ErtZsnrPaSvHd2W4o9//8HtF4mU= | ||||
| 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/go.mod h1:8B3iivBQjrz/JtC68Np2T1yBBLxTan3mn/3OM0CyRt0= | ||||
| 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/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||
| 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/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= | ||||
|  | @ -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/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/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.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= | ||||
| 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/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= | ||||
| 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/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= | ||||
| 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/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/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= | ||||
| 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/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/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/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= | ||||
| 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.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.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| 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.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/>. | ||||
| */ | ||||
| 
 | ||||
| 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/orm" | ||||
| 	"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/sirupsen/logrus" | ||||
| ) | ||||
|  | @ -316,8 +316,8 @@ func (ps *postgresService) Stop(ctx context.Context) error { | |||
| 
 | ||||
| func (ps *postgresService) CreateSchema(ctx context.Context) error { | ||||
| 	models := []interface{}{ | ||||
| 		(*model.Account)(nil), | ||||
| 		(*model.Note)(nil), | ||||
| 		(*gtsmodel.GTSAccount)(nil), | ||||
| 		(*gtsmodel.GTSStatus)(nil), | ||||
| 	} | ||||
| 	ps.log.Info("creating db schema") | ||||
| 
 | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/go-fed/activity/pub" | ||||
| 	"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/db" | ||||
| ) | ||||
|  | @ -33,7 +33,7 @@ type Gotosocial interface { | |||
| 	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{ | ||||
| 		db:            db, | ||||
| 		cache:         cache, | ||||
|  | @ -46,7 +46,7 @@ func New(db db.DB, cache cache.Cache, clientAPI client.API, federationAPI pub.Fe | |||
| type gotosocial struct { | ||||
| 	db            db.DB | ||||
| 	cache         cache.Cache | ||||
| 	clientAPI     client.API | ||||
| 	clientAPI     api.Server | ||||
| 	federationAPI pub.FederatingActor | ||||
| 	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/>. | ||||
| */ | ||||
| 
 | ||||
| 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 ( | ||||
| 	"net/url" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
| // Account represents a user account | ||||
| type Account struct { | ||||
| 	Avatar | ||||
| 	Header | ||||
| // GTSAccount represents a GoToSocial user account | ||||
| type GTSAccount struct { | ||||
| 	GTSAvatar | ||||
| 	GTSHeader | ||||
| 	URI                   string | ||||
| 	URL                   string | ||||
| 	ID                    string `pg:"type:uuid,default:gen_random_uuid(),pk,notnull"` | ||||
|  | @ -63,7 +66,7 @@ type Account struct { | |||
| 	SuspensionOrigin      int | ||||
| } | ||||
| 
 | ||||
| type Avatar struct { | ||||
| type GTSAvatar struct { | ||||
| 	AvatarFileName             string | ||||
| 	AvatarContentType          string | ||||
| 	AvatarFileSize             int | ||||
|  | @ -72,7 +75,7 @@ type Avatar struct { | |||
| 	AvatarStorageSchemaVersion int | ||||
| } | ||||
| 
 | ||||
| type Header struct { | ||||
| type GTSHeader struct { | ||||
| 	HeaderFileName             string | ||||
| 	HeaderContentType          string | ||||
| 	HeaderFileSize             int | ||||
|  | @ -80,13 +83,3 @@ type Header struct { | |||
| 	HeaderRemoteURL            *url.URL   `pg:"type:text"` | ||||
| 	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/>. | ||||
| */ | ||||
| 
 | ||||
| package model | ||||
| package gtsmodel | ||||
| 
 | ||||
| import "time" | ||||
| 
 | ||||
| type Note struct { | ||||
| type GTSStatus struct { | ||||
| 	ID             string `pg:"type:uuid,default:gen_random_uuid(),pk,notnull"` | ||||
| 	URI            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 | ||||
| 
 | ||||
| type Server struct { | ||||
|    manager := manage.NewDefaultManager() | ||||
| 	// token memory store | ||||
| 	manager.MustTokenStorage(store.NewMemoryTokenStore()) | ||||
| 
 | ||||
| 	// client memory store | ||||
| 	clientStore := store.NewClientStore() | ||||
| 	clientStore.Set("000000", &models.Client{ | ||||
| 		ID:     "000000", | ||||
| 		Secret: "999999", | ||||
| 		Domain: "http://localhost", | ||||
| 	}) | ||||
| 	manager.MapClientStorage(clientStore) | ||||
| 
 | ||||
| 	srv := server.NewDefaultServer(manager) | ||||
| 	srv.SetAllowGetAccessRequest(true) | ||||
| 	srv.SetClientInfoHandler(server.ClientFormHandler) | ||||
| 
 | ||||
| 	srv.SetInternalErrorHandler(func(err error) (re *errors.Response) { | ||||
| 		log.Println("Internal Error:", err.Error()) | ||||
| 		return | ||||
| 	}) | ||||
| 
 | ||||
| 	srv.SetResponseErrorHandler(func(re *errors.Response) { | ||||
| 		log.Println("Response Error:", re.Error.Error()) | ||||
| 	}) | ||||
| 
 | ||||
| 	http.HandleFunc("/authorize", func(w http.ResponseWriter, r *http.Request) { | ||||
| 		err := srv.HandleAuthorizeRequest(w, r) | ||||
| 		if err != nil { | ||||
| 			http.Error(w, err.Error(), http.StatusBadRequest) | ||||
| 		} | ||||
| 	}) | ||||
| 
 | ||||
| 	http.HandleFunc("/token", func(w http.ResponseWriter, r *http.Request) { | ||||
| 		srv.HandleTokenRequest(w, r) | ||||
| 	}) | ||||
| 
 | ||||
| 	log.Fatal(http.ListenAndServe(":9096", nil)) | ||||
| } | ||||
| 
 | ||||
| func main() { | ||||
| //    manager := manage.NewDefaultManager() | ||||
| // 	// token memory store | ||||
| // 	manager.MustTokenStorage(store.NewMemoryTokenStore()) | ||||
| 
 | ||||
| // 	// client memory store | ||||
| // 	clientStore := store.NewClientStore() | ||||
| // 	clientStore.Set("000000", &models.Client{ | ||||
| // 		ID:     "000000", | ||||
| // 		Secret: "999999", | ||||
| // 		Domain: "http://localhost", | ||||
| // 	}) | ||||
| // 	manager.MapClientStorage(clientStore) | ||||
| 
 | ||||
| // 	srv := server.NewDefaultServer(manager) | ||||
| // 	srv.SetAllowGetAccessRequest(true) | ||||
| // 	srv.SetClientInfoHandler(server.ClientFormHandler) | ||||
| 
 | ||||
| // 	srv.SetInternalErrorHandler(func(err error) (re *errors.Response) { | ||||
| // 		log.Println("Internal Error:", err.Error()) | ||||
| // 		return | ||||
| // 	}) | ||||
| 
 | ||||
| // 	srv.SetResponseErrorHandler(func(re *errors.Response) { | ||||
| // 		log.Println("Response Error:", re.Error.Error()) | ||||
| // 	}) | ||||
| 
 | ||||
| // 	http.HandleFunc("/authorize", func(w http.ResponseWriter, r *http.Request) { | ||||
| // 		err := srv.HandleAuthorizeRequest(w, r) | ||||
| // 		if err != nil { | ||||
| // 			http.Error(w, err.Error(), http.StatusBadRequest) | ||||
| // 		} | ||||
| // 	}) | ||||
| 
 | ||||
| // 	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