Compare commits

..

2 commits

Author SHA1 Message Date
Arnas Udovicius
0cf5eb4d40 migrated to gPRC; about, all files
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
2022-08-20 01:03:57 +03:00
Arnas Udovicius
98203b44fa update about 2022-08-19 11:51:24 +03:00
11 changed files with 1059 additions and 83 deletions

View file

@ -27,12 +27,14 @@ display tags, date, copyright
## TODO ## TODO
* routing, not found
* migrate to gRPC
* add category view * add category view
* add tag view * add tag view
* add file view * add file view
* add image or other file not `gmi` download * add image or other file not `gmi` download
* feed * feed
* about * security
* citata from some file * citata from some file
__DONE__
* about
* migrate to gRPC
* routing, not found

View file

@ -1,34 +1,11 @@
package main package main
import ( import (
zord_tree "g.arns.lt/zordsdavini/zord-tree"
"sort" "sort"
) )
type FSummery struct { func GetLastFiles(files []*TreeFile) []*TreeFile {
Name string sortingFiles := make(map[string]*TreeFile)
Category []string
Description string
Id string
Lang string
Created string
Copyright string
Tags []string
}
type TSummery struct {
Files []FSummery
Tags map[string]int
Categories map[string]int
}
type FileContent struct {
File zord_tree.File
Content string
}
func GetLastFiles(files []FSummery) []FSummery {
sortingFiles := make(map[string]FSummery)
for _, f := range files { for _, f := range files {
sortingFiles[f.Created+f.Id] = f sortingFiles[f.Created+f.Id] = f
} }
@ -44,7 +21,7 @@ func GetLastFiles(files []FSummery) []FSummery {
if len(keys) < 10 { if len(keys) < 10 {
length = len(keys) length = len(keys)
} }
lastFiles := make([]FSummery, 0, length) lastFiles := make([]*TreeFile, 0, length)
for i, k := range keys { for i, k := range keys {
if i == length { if i == length {
break break

9
go.mod
View file

@ -3,14 +3,15 @@ module g.arns.lt/zordsdavini/arns-lt-gemini
go 1.18 go 1.18
require ( require (
g.arns.lt/zordsdavini/arns-lt-tree-push-service v0.0.0-20220802051611-cf99eecc6e60
git.sr.ht/~adnano/go-gemini v0.2.3 git.sr.ht/~adnano/go-gemini v0.2.3
google.golang.org/grpc v1.48.0
google.golang.org/protobuf v1.28.1
) )
require ( require (
g.arns.lt/zordsdavini/abcex v1.0.0 // indirect github.com/golang/protobuf v1.5.2 // indirect
g.arns.lt/zordsdavini/zord-tree v0.2.1 // indirect
github.com/otiai10/copy v1.6.0 // indirect
golang.org/x/net v0.0.0-20210119194325-5f4716e94777 // indirect golang.org/x/net v0.0.0-20210119194325-5f4716e94777 // indirect
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 // indirect
golang.org/x/text v0.3.3 // indirect golang.org/x/text v0.3.3 // indirect
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 // indirect
) )

137
go.sum
View file

@ -1,22 +1,133 @@
g.arns.lt/zordsdavini/abcex v1.0.0 h1:qQqlZ4DMfethCGK4I6yGaLqMrTzKNIshqpINd1l3t0E= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
g.arns.lt/zordsdavini/abcex v1.0.0/go.mod h1:YRcJgts3XZwI+LEkngpfUab3DkUAW387Irpr43hIym8= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
g.arns.lt/zordsdavini/arns-lt-tree-push-service v0.0.0-20220802051611-cf99eecc6e60 h1:+b2wWaQUzFWE3RjbRR9luPadCrocw7QeTvQNCKT5hS0=
g.arns.lt/zordsdavini/arns-lt-tree-push-service v0.0.0-20220802051611-cf99eecc6e60/go.mod h1:vwR/TAStVkP8ZHofrpqdg8b/qlBbLNS8KVFp1tsKHtE=
g.arns.lt/zordsdavini/zord-tree v0.2.1 h1:GYbwojTqCTcr/e4oYNxTUCP7V/2cD8xn/AYOecYGnxo=
g.arns.lt/zordsdavini/zord-tree v0.2.1/go.mod h1:R9VMBwVwW6pu8yFIIgsMUv7YuWa48dj6DglkyXeTPik=
git.sr.ht/~adnano/go-gemini v0.2.3 h1:oJ+Y0/mheZ4Vg0ABjtf5dlmvq1yoONStiaQvmWWkofc= git.sr.ht/~adnano/go-gemini v0.2.3 h1:oJ+Y0/mheZ4Vg0ABjtf5dlmvq1yoONStiaQvmWWkofc=
git.sr.ht/~adnano/go-gemini v0.2.3/go.mod h1:hQ75Y0i5jSFL+FQ7AzWVAYr5LQsaFC7v3ZviNyj46dY= git.sr.ht/~adnano/go-gemini v0.2.3/go.mod h1:hQ75Y0i5jSFL+FQ7AzWVAYr5LQsaFC7v3ZviNyj46dY=
github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210119194325-5f4716e94777 h1:003p0dJM77cxMSyCPFphvZf/Y5/NXf5fzg6ufd1/Oew= golang.org/x/net v0.0.0-20210119194325-5f4716e94777 h1:003p0dJM77cxMSyCPFphvZf/Y5/NXf5fzg6ufd1/Oew=
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.48.0 h1:rQOsyJ/8+ufEDJd/Gdsz7HG220Mh9HAhFHRGnIjda0w=
google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
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.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

115
main.go
View file

@ -2,9 +2,9 @@ package main
import ( import (
"context" "context"
"encoding/json"
"flag" "flag"
"fmt" "fmt"
"google.golang.org/grpc/credentials/insecure"
"log" "log"
"os" "os"
"regexp" "regexp"
@ -13,6 +13,7 @@ import (
"git.sr.ht/~adnano/go-gemini" "git.sr.ht/~adnano/go-gemini"
"git.sr.ht/~adnano/go-gemini/certificate" "git.sr.ht/~adnano/go-gemini/certificate"
"google.golang.org/grpc"
) )
var ( var (
@ -59,12 +60,12 @@ func main() {
} }
} }
func processFavicon(ctx context.Context, w gemini.ResponseWriter, r *gemini.Request) { func processFavicon(_ context.Context, w gemini.ResponseWriter, _ *gemini.Request) {
w.SetMediaType("text/plain") w.SetMediaType("text/plain")
w.Write([]byte("\U0001F31B")) w.Write([]byte("\U0001F31B"))
} }
func process(ctx context.Context, w gemini.ResponseWriter, r *gemini.Request) { func process(_ context.Context, w gemini.ResponseWriter, r *gemini.Request) {
log.Println("-> " + r.URL.Path) log.Println("-> " + r.URL.Path)
lang := regexp.MustCompile(`^/(sgs|en)`).FindString(r.URL.Path) lang := regexp.MustCompile(`^/(sgs|en)`).FindString(r.URL.Path)
@ -72,16 +73,103 @@ func process(ctx context.Context, w gemini.ResponseWriter, r *gemini.Request) {
lang = lang[1:] lang = lang[1:]
} }
conn, err := grpc.Dial(fileSrvHost+":"+fileSrvPort, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
w.WriteHeader(gemini.StatusTemporaryFailure, "Internal server error")
log.Fatal(err)
return
}
defer conn.Close()
client := NewTreeManagerClient(conn)
switch { switch {
case "/" == r.URL.Path: case "/" == r.URL.Path:
w.WriteHeader(gemini.StatusPermanentRedirect, "/sgs") w.WriteHeader(gemini.StatusPermanentRedirect, "/sgs")
case regexp.MustCompile(`^/(sgs|en)$`).MatchString(r.URL.Path): case regexp.MustCompile(`^/(sgs|en)/?$`).MatchString(r.URL.Path):
renderIndex(lang, w) renderIndex(lang, w, client)
case regexp.MustCompile(`^/(sgs|en)/a$`).MatchString(r.URL.Path): case regexp.MustCompile(`^/(sgs|en)/a/?$`).MatchString(r.URL.Path):
renderAbout(lang, w) renderAbout(lang, w)
case regexp.MustCompile(`^/(sgs|en)/s/?$`).MatchString(r.URL.Path):
renderSearch(lang, w, r, client)
case regexp.MustCompile(`^/(sgs|en)/f/?$`).MatchString(r.URL.Path):
renderAllFiles(lang, w, client)
default: default:
w.WriteHeader(gemini.StatusNotFound, "Out of space") w.WriteHeader(gemini.StatusNotFound, "Out of space")
} }
}
func renderAllFiles(lang string, w gemini.ResponseWriter, client TreeManagerClient) {
langFilter := TreeRequest_Filter{Key: "lang", Value: lang}
filters := []*TreeRequest_Filter{&langFilter}
path := ""
tr := TreeRequest{Path: &path, Filter: filters}
tree, err := client.GetSummery(context.Background(), &tr)
if err != nil {
log.Fatalf("client.GetSummery failed: %v", err)
w.WriteHeader(gemini.StatusTemporaryFailure, "Internal server error")
return
}
content := "# Arnas alkierios :: "
if lang == "sgs" {
content = content + "vėsė tekstā\n\n"
} else {
content = content + "all texts\n\n"
}
for _, f := range tree.Files {
content = content + fmt.Sprintf(
"=> /%s/f/%s/%s/%s %s (%s)\n",
lang,
strings.Join(f.Category, "/"),
f.Id,
strings.Replace(f.Name, ".md", ".gmi", 1),
f.Description,
f.Created,
)
}
if lang == "sgs" {
content = content + "\n=> /sgs ← grīžtė"
} else {
content = content + "\n=> /en ← back"
}
w.Write([]byte(content))
}
func renderSearch(lang string, w gemini.ResponseWriter, r *gemini.Request, client TreeManagerClient) {
q, err := gemini.QueryUnescape(r.URL.RawQuery)
if err != nil || q == "" {
searchStr := "Input searching tag, created date or word in description"
if lang == "sgs" {
searchStr = "Ivesk ėiškuoma žīma, sokūrėma data arba žuodi ėš aprašīma"
}
w.WriteHeader(gemini.StatusInput, searchStr)
return
}
langFilter := TreeRequest_Filter{Key: "lang", Value: lang}
descFilter := TreeRequest_Filter{Key: "description", Value: lang}
createdFilter := TreeRequest_Filter{Key: "created", Value: lang}
tagFilter := TreeRequest_Filter{Key: "tag", Value: lang}
filters := []*TreeRequest_Filter{&langFilter, &descFilter, &createdFilter, &tagFilter}
path := ""
tr := TreeRequest{Path: &path, Filter: filters}
tree, err := client.GetSummery(context.Background(), &tr)
if err != nil {
log.Fatalf("client.GetSummery failed: %v", err)
w.WriteHeader(gemini.StatusTemporaryFailure, "Internal server error")
return
}
fmt.Println(tree)
w.Write([]byte("Nieka narada dā\n" +
"=> / ← back"))
} }
func renderAbout(lang string, w gemini.ResponseWriter) { func renderAbout(lang string, w gemini.ResponseWriter) {
@ -99,7 +187,7 @@ func renderAbout(lang string, w gemini.ResponseWriter) {
} }
} }
func renderIndex(lang string, w gemini.ResponseWriter) { func renderIndex(lang string, w gemini.ResponseWriter, client TreeManagerClient) {
w.SetMediaType("text/gemini") w.SetMediaType("text/gemini")
content, err := os.ReadFile(fmt.Sprintf("templates/%s/index.gmi", lang)) content, err := os.ReadFile(fmt.Sprintf("templates/%s/index.gmi", lang))
if err != nil { if err != nil {
@ -108,15 +196,18 @@ func renderIndex(lang string, w gemini.ResponseWriter) {
} }
page := string(content) page := string(content)
summery := GetSummery() langFilter := TreeRequest_Filter{Key: "lang", Value: lang}
fmt.Println(summery) filters := []*TreeRequest_Filter{&langFilter}
tree := TSummery{}
err = json.Unmarshal([]byte(summery), &tree) path := ""
tr := TreeRequest{Path: &path, Filter: filters}
tree, err := client.GetSummery(context.Background(), &tr)
if err != nil { if err != nil {
log.Fatalf("client.GetSummery failed: %v", err)
w.WriteHeader(gemini.StatusTemporaryFailure, "Internal server error") w.WriteHeader(gemini.StatusTemporaryFailure, "Internal server error")
return return
} }
fmt.Println(tree)
categories := "" categories := ""
for c, count := range tree.Categories { for c, count := range tree.Categories {

View file

@ -2,11 +2,13 @@
I am Arns Udovič, also you can find me by Zordsdavini. I am Arns Udovič, also you can find me by Zordsdavini.
Kraujė žemaitėška, bet laikaus Vėlniou. Pagrindėnės mėslės sokas aple žemaitiu kalbuos keravuojėma, anuos skleidėma ė pritaikīmus kompioterems. Daug darbū dėrbo, ka žėmaitē galietom rašītė bėndrinie rašībuo. => /sgs/a žemaitėškā
Karto eso puogramoutuos ė baisē miegsto Linux'us. I am Samogitian, a small ethnic group in west part of Lithuania, but I live in Vilnius. Main my ideas are concentrated about Samogitian language and its spreading and standardization. I work a lot to propagate common writing to Samogitians.
Tāp pat eso gomtuos mīlietuos ė mėslėjo, ka Žemė ī gīva. Also I am computer engineer and I love Linux as operating system. Main writing technic is ViM and environment is Qtile.
My religion is Nature and I believe what Earth is alive.
### Contact me ### Contact me
@ -15,45 +17,45 @@ Tāp pat eso gomtuos mīlietuos ė mėslėjo, ka Žemė ī gīva.
## About capsule ## About capsule
Alkierios korts, ka būtom vėita, kor galietiuo talpintė sava mėslės, pastebiejėmus a kažkon, kon nanuorietiuo pamėrštė. Capsule has been made to have the place to put my thoughts, notes or something what should not be forgotten.
Būdams pruogramoutuojo nuoriejau pramuoktė naujū dalīku, ta tudie pasirinkau, ka mona alkierios turietom turietė ė gemini versėjė, karto līgegretē sokūriau ėr īprasta http versėjė. As I am the developer I wanted to learn some new stuff, so I decided that my site should have gemini version in parallel to http.
### Aple teknuoluogėjė ### About technics
Tekstus rašau i paprastiausius failiokus ėr anus talpėno sava „cloud'ė“ vagol somėslīta stroktūra. Tumet sokas tū failu makliavuonės servėsos, katras parašīts ont Go pruogramavėma kalbuos ėr ont mona parašītas bėbliuotekas `zord-tree`. Articles I wrote simply in files and put them in my self-hosted cloud by created structure. Then there is service written on Go and my `zord-tree` library to populate and serve these files.
Jau ėš makliavuonės servėsa pajemo i gemini servėsa, katras parašīts ėrgė so Go, arba i http servėsa (backend's ont Go REST, frontend's ont Vue.js). Ruodā nauduojo gRPC pruotuokuola. From this service it is served to gemini service what is written in Go, too, or to http service (backend on Go, frontend on Vue.js). For communications I use gRPC.
=> https://g.arns.lt/zordsdavini/zord-tree zord-tree bėbliuoteka sokortė miedi ėš failu => /en/f/gemini/arns-lt more...
=> https://g.arns.lt/zordsdavini/arns-lt-tree-push-service servėsos ont zord-tree somakliavuotė failus ėr anus padoutė tuoliau => https://g.arns.lt/zordsdavini/zord-tree zord-tree library to build tree from files
=> https://g.arns.lt/zordsdavini/arns-lt-gemini gemini servėsos => https://g.arns.lt/zordsdavini/arns-lt-tree-push-service service written on top of zord-tree to serve files
=> https://arns.lt Arna alkierios HTTP versėjuo => https://g.arns.lt/zordsdavini/arns-lt-gemini gemini service
=> https://arns.lt Arna alkierios HTTP version
## Other projects ## Other projects
### Samogitian ### Samogitian
Eso Žemaitiu koltūras draugėjės narīs. Ka „legalėzoutiuo“ sava darba žemaitiu kalbā, ikūriau Žemaitiu kalbuos instėtota. Instėtota vardo dėrėno vairius standartus IT ertie. Siekmingiausė bėngtė pruojektā: I am the member of Samogitian cultural society. To "legalize" my work on Samogitian language I created Institute of Samogitian language. In name of institute I do various stuff in IT to standardize Samogitian. Best finished projects:
=> https://bat-smg.wikipedia.org/wiki/P%C4%97rms_poslapis Vikipedėjė žemaitėška => https://bat-smg.wikipedia.org/wiki/P%C4%97rms_poslapis Wikipedia in Samogitian
=> https://iso639-3.sil.org/code/sgs ISO 639 kuods žemaitiu kalbā „sgs“ => https://iso639-3.sil.org/code/sgs ISO 639 code for Samogitian language "sgs"
Kėtas nūruodas darbū so žemaitēs: Other links to works with Samogitian:
=> https://žemaitėjė.lt Žemaitiu kalbuos instėtota alkierios => https://žemaitėjė.lt Institute of Samogitian language
=> https://ruoda.lt laikraštis „Ruoda“ => https://ruoda.lt newspaper "Ruoda"
=> https://zkz.lt žemaitiu kalbuos žuodīns => https://zkz.lt dictionary of Samogitian
### IT ### IT
=> https://kplaner.arns.lt Planoutuos parašīts ont python'a karto so sava patė => https://kplaner.arns.lt Planner written on Python with my wife
=> https://odysee.com/@qtile-tv:0 => https://odysee.com/@qtile-tv:0
### future plans ### future plans
=> https://karmagiai.lt „Kariai ir magai“ internetėnė versėjė (arba gižielis skaitliavėmams) => https://karmagiai.lt RPG game "Kariai ir magai" (similar to DnD, Liethuanian version) computerization (or helper to count)
=> https://vytines.lt vītėniu joustu vījėms ruoboto => https://vytines.lt winding tape automatization
=> https://sieps.lt helper app for inventorization => https://sieps.lt helper app for inventorization
=> https://preferansas.lt internetėnė preferansa lietovėška versėjė => https://preferansas.lt card game Preferances Lithuanian edition
=> /en ← back => /en ← back

View file

@ -24,4 +24,4 @@ Main themes are spreaded by categories. Each file may have tags what can filter
{{last_posts}} {{last_posts}}
=> /f all texts => /en/f all texts

View file

@ -2,6 +2,8 @@
Eso Udovič Arns, dā vadėnamo Zordsdavini arba Ousėnio. Eso Udovič Arns, dā vadėnamo Zordsdavini arba Ousėnio.
=> /en/a English version
Kraujė žemaitėška, bet laikaus Vėlniou. Pagrindėnės mėslės sokas aple žemaitiu kalbuos keravuojėma, anuos skleidėma ė pritaikīmus kompioterems. Daug darbū dėrbo, ka žėmaitē galietom rašītė bėndrinie rašībuo. Kraujė žemaitėška, bet laikaus Vėlniou. Pagrindėnės mėslės sokas aple žemaitiu kalbuos keravuojėma, anuos skleidėma ė pritaikīmus kompioterems. Daug darbū dėrbo, ka žėmaitē galietom rašītė bėndrinie rašībuo.
Karto eso puogramoutuos ė baisē miegsto Linux'us. Karto eso puogramoutuos ė baisē miegsto Linux'us.
@ -25,6 +27,7 @@ Tekstus rašau i paprastiausius failiokus ėr anus talpėno sava „cloud'ė“
Jau ėš makliavuonės servėsa pajemo i gemini servėsa, katras parašīts ėrgė so Go, arba i http servėsa (backend's ont Go REST, frontend's ont Vue.js). Ruodā nauduojo gRPC pruotuokuola. Jau ėš makliavuonės servėsa pajemo i gemini servėsa, katras parašīts ėrgė so Go, arba i http servėsa (backend's ont Go REST, frontend's ont Vue.js). Ruodā nauduojo gRPC pruotuokuola.
=> /en/f/gemini/arns-lt platiau (onglėškā)
=> https://g.arns.lt/zordsdavini/zord-tree zord-tree bėbliuoteka sokortė miedi ėš failu => https://g.arns.lt/zordsdavini/zord-tree zord-tree bėbliuoteka sokortė miedi ėš failu
=> https://g.arns.lt/zordsdavini/arns-lt-tree-push-service servėsos ont zord-tree somakliavuotė failus ėr anus padoutė tuoliau => https://g.arns.lt/zordsdavini/arns-lt-tree-push-service servėsos ont zord-tree somakliavuotė failus ėr anus padoutė tuoliau
=> https://g.arns.lt/zordsdavini/arns-lt-gemini gemini servėsos => https://g.arns.lt/zordsdavini/arns-lt-gemini gemini servėsos

599
tree.pb.go Normal file
View file

@ -0,0 +1,599 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
// protoc v3.21.4
// source: tree.proto
package main
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type FileRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}
func (x *FileRequest) Reset() {
*x = FileRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_tree_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FileRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FileRequest) ProtoMessage() {}
func (x *FileRequest) ProtoReflect() protoreflect.Message {
mi := &file_tree_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use FileRequest.ProtoReflect.Descriptor instead.
func (*FileRequest) Descriptor() ([]byte, []int) {
return file_tree_proto_rawDescGZIP(), []int{0}
}
func (x *FileRequest) GetId() string {
if x != nil {
return x.Id
}
return ""
}
type TreeRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Path *string `protobuf:"bytes,1,opt,name=path,proto3,oneof" json:"path,omitempty"`
Filter []*TreeRequest_Filter `protobuf:"bytes,2,rep,name=filter,proto3" json:"filter,omitempty"`
}
func (x *TreeRequest) Reset() {
*x = TreeRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_tree_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TreeRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TreeRequest) ProtoMessage() {}
func (x *TreeRequest) ProtoReflect() protoreflect.Message {
mi := &file_tree_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TreeRequest.ProtoReflect.Descriptor instead.
func (*TreeRequest) Descriptor() ([]byte, []int) {
return file_tree_proto_rawDescGZIP(), []int{1}
}
func (x *TreeRequest) GetPath() string {
if x != nil && x.Path != nil {
return *x.Path
}
return ""
}
func (x *TreeRequest) GetFilter() []*TreeRequest_Filter {
if x != nil {
return x.Filter
}
return nil
}
type TreeFile struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
Category []string `protobuf:"bytes,2,rep,name=category,proto3" json:"category,omitempty"`
Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
Id string `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"`
Lang string `protobuf:"bytes,5,opt,name=lang,proto3" json:"lang,omitempty"`
Copyright string `protobuf:"bytes,6,opt,name=copyright,proto3" json:"copyright,omitempty"`
Tags []string `protobuf:"bytes,7,rep,name=tags,proto3" json:"tags,omitempty"`
Created string `protobuf:"bytes,8,opt,name=created,proto3" json:"created,omitempty"`
}
func (x *TreeFile) Reset() {
*x = TreeFile{}
if protoimpl.UnsafeEnabled {
mi := &file_tree_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TreeFile) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TreeFile) ProtoMessage() {}
func (x *TreeFile) ProtoReflect() protoreflect.Message {
mi := &file_tree_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TreeFile.ProtoReflect.Descriptor instead.
func (*TreeFile) Descriptor() ([]byte, []int) {
return file_tree_proto_rawDescGZIP(), []int{2}
}
func (x *TreeFile) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *TreeFile) GetCategory() []string {
if x != nil {
return x.Category
}
return nil
}
func (x *TreeFile) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *TreeFile) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *TreeFile) GetLang() string {
if x != nil {
return x.Lang
}
return ""
}
func (x *TreeFile) GetCopyright() string {
if x != nil {
return x.Copyright
}
return ""
}
func (x *TreeFile) GetTags() []string {
if x != nil {
return x.Tags
}
return nil
}
func (x *TreeFile) GetCreated() string {
if x != nil {
return x.Created
}
return ""
}
type Tree struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Files []*TreeFile `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"`
Tags map[string]int32 `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
Categories map[string]int32 `protobuf:"bytes,3,rep,name=categories,proto3" json:"categories,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}
func (x *Tree) Reset() {
*x = Tree{}
if protoimpl.UnsafeEnabled {
mi := &file_tree_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Tree) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Tree) ProtoMessage() {}
func (x *Tree) ProtoReflect() protoreflect.Message {
mi := &file_tree_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Tree.ProtoReflect.Descriptor instead.
func (*Tree) Descriptor() ([]byte, []int) {
return file_tree_proto_rawDescGZIP(), []int{3}
}
func (x *Tree) GetFiles() []*TreeFile {
if x != nil {
return x.Files
}
return nil
}
func (x *Tree) GetTags() map[string]int32 {
if x != nil {
return x.Tags
}
return nil
}
func (x *Tree) GetCategories() map[string]int32 {
if x != nil {
return x.Categories
}
return nil
}
type FileContent struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
File *TreeFile `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"`
}
func (x *FileContent) Reset() {
*x = FileContent{}
if protoimpl.UnsafeEnabled {
mi := &file_tree_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FileContent) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FileContent) ProtoMessage() {}
func (x *FileContent) ProtoReflect() protoreflect.Message {
mi := &file_tree_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use FileContent.ProtoReflect.Descriptor instead.
func (*FileContent) Descriptor() ([]byte, []int) {
return file_tree_proto_rawDescGZIP(), []int{4}
}
func (x *FileContent) GetFile() *TreeFile {
if x != nil {
return x.File
}
return nil
}
func (x *FileContent) GetContent() string {
if x != nil {
return x.Content
}
return ""
}
type TreeRequest_Filter struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}
func (x *TreeRequest_Filter) Reset() {
*x = TreeRequest_Filter{}
if protoimpl.UnsafeEnabled {
mi := &file_tree_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TreeRequest_Filter) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TreeRequest_Filter) ProtoMessage() {}
func (x *TreeRequest_Filter) ProtoReflect() protoreflect.Message {
mi := &file_tree_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TreeRequest_Filter.ProtoReflect.Descriptor instead.
func (*TreeRequest_Filter) Descriptor() ([]byte, []int) {
return file_tree_proto_rawDescGZIP(), []int{1, 0}
}
func (x *TreeRequest_Filter) GetKey() string {
if x != nil {
return x.Key
}
return ""
}
func (x *TreeRequest_Filter) GetValue() string {
if x != nil {
return x.Value
}
return ""
}
var File_tree_proto protoreflect.FileDescriptor
var file_tree_proto_rawDesc = []byte{
0x0a, 0x0a, 0x74, 0x72, 0x65, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x6d, 0x61,
0x69, 0x6e, 0x22, 0x1d, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
0x64, 0x22, 0x93, 0x01, 0x0a, 0x0b, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48,
0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69,
0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x61, 0x69,
0x6e, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69,
0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x30, 0x0a, 0x06,
0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07,
0x0a, 0x05, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x22, 0xcc, 0x01, 0x0a, 0x08, 0x54, 0x72, 0x65, 0x65,
0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65,
0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65,
0x67, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01,
0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x05,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f,
0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73,
0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0x8a, 0x02, 0x0a, 0x04, 0x54, 0x72, 0x65, 0x65, 0x12,
0x24, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e,
0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05,
0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x2e,
0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12,
0x3a, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x2e,
0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54,
0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69,
0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
0x02, 0x38, 0x01, 0x22, 0x4b, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65,
0x6e, 0x74, 0x12, 0x22, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x0e, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x46, 0x69, 0x6c, 0x65,
0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
0x32, 0x6f, 0x0a, 0x0b, 0x54, 0x72, 0x65, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12,
0x2d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x65, 0x72, 0x79, 0x12, 0x11, 0x2e,
0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x0a, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x22, 0x00, 0x12, 0x31,
0x0a, 0x07, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x11, 0x2e, 0x6d, 0x61, 0x69, 0x6e,
0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x6d,
0x61, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22,
0x00, 0x42, 0x03, 0x5a, 0x01, 0x2e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_tree_proto_rawDescOnce sync.Once
file_tree_proto_rawDescData = file_tree_proto_rawDesc
)
func file_tree_proto_rawDescGZIP() []byte {
file_tree_proto_rawDescOnce.Do(func() {
file_tree_proto_rawDescData = protoimpl.X.CompressGZIP(file_tree_proto_rawDescData)
})
return file_tree_proto_rawDescData
}
var file_tree_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_tree_proto_goTypes = []interface{}{
(*FileRequest)(nil), // 0: main.FileRequest
(*TreeRequest)(nil), // 1: main.TreeRequest
(*TreeFile)(nil), // 2: main.TreeFile
(*Tree)(nil), // 3: main.Tree
(*FileContent)(nil), // 4: main.FileContent
(*TreeRequest_Filter)(nil), // 5: main.TreeRequest.Filter
nil, // 6: main.Tree.TagsEntry
nil, // 7: main.Tree.CategoriesEntry
}
var file_tree_proto_depIdxs = []int32{
5, // 0: main.TreeRequest.filter:type_name -> main.TreeRequest.Filter
2, // 1: main.Tree.files:type_name -> main.TreeFile
6, // 2: main.Tree.tags:type_name -> main.Tree.TagsEntry
7, // 3: main.Tree.categories:type_name -> main.Tree.CategoriesEntry
2, // 4: main.FileContent.file:type_name -> main.TreeFile
1, // 5: main.TreeManager.GetSummery:input_type -> main.TreeRequest
0, // 6: main.TreeManager.GetFile:input_type -> main.FileRequest
3, // 7: main.TreeManager.GetSummery:output_type -> main.Tree
4, // 8: main.TreeManager.GetFile:output_type -> main.FileContent
7, // [7:9] is the sub-list for method output_type
5, // [5:7] is the sub-list for method input_type
5, // [5:5] is the sub-list for extension type_name
5, // [5:5] is the sub-list for extension extendee
0, // [0:5] is the sub-list for field type_name
}
func init() { file_tree_proto_init() }
func file_tree_proto_init() {
if File_tree_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_tree_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FileRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_tree_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TreeRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_tree_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TreeFile); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_tree_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Tree); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_tree_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FileContent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_tree_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TreeRequest_Filter); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_tree_proto_msgTypes[1].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_tree_proto_rawDesc,
NumEnums: 0,
NumMessages: 8,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_tree_proto_goTypes,
DependencyIndexes: file_tree_proto_depIdxs,
MessageInfos: file_tree_proto_msgTypes,
}.Build()
File_tree_proto = out.File
file_tree_proto_rawDesc = nil
file_tree_proto_goTypes = nil
file_tree_proto_depIdxs = nil
}

49
tree.proto Normal file
View file

@ -0,0 +1,49 @@
syntax = "proto3";
// TODO: couldn't solve out how to set "main" package. Needs to fix by hand after export
// export:
// protoc --proto_path=./ --go_out=./ --go-grpc_out=./ --go_opt=paths=source_relative tree.proto
option go_package = ".";
package main;
service TreeManager {
rpc GetSummery(TreeRequest) returns (Tree) {}
rpc GetFile(FileRequest) returns (FileContent) {}
}
message FileRequest {
string id = 1;
}
message TreeRequest {
message Filter {
string key = 1;
string value = 2;
}
optional string path = 1;
repeated Filter filter = 2;
}
message TreeFile {
string name = 1;
repeated string category = 2;
string description = 3;
string id = 4;
string lang = 5;
string copyright = 6;
repeated string tags = 7;
string created = 8;
}
message Tree {
repeated TreeFile files = 1;
map<string, int32> tags = 2;
map<string, int32> categories = 3;
}
message FileContent {
TreeFile file = 1;
string content = 2;
}

141
tree_grpc.pb.go Normal file
View file

@ -0,0 +1,141 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc v3.21.4
// source: tree.proto
package main
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
// TreeManagerClient is the client API for TreeManager service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type TreeManagerClient interface {
GetSummery(ctx context.Context, in *TreeRequest, opts ...grpc.CallOption) (*Tree, error)
GetFile(ctx context.Context, in *FileRequest, opts ...grpc.CallOption) (*FileContent, error)
}
type treeManagerClient struct {
cc grpc.ClientConnInterface
}
func NewTreeManagerClient(cc grpc.ClientConnInterface) TreeManagerClient {
return &treeManagerClient{cc}
}
func (c *treeManagerClient) GetSummery(ctx context.Context, in *TreeRequest, opts ...grpc.CallOption) (*Tree, error) {
out := new(Tree)
err := c.cc.Invoke(ctx, "/main.TreeManager/GetSummery", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *treeManagerClient) GetFile(ctx context.Context, in *FileRequest, opts ...grpc.CallOption) (*FileContent, error) {
out := new(FileContent)
err := c.cc.Invoke(ctx, "/main.TreeManager/GetFile", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// TreeManagerServer is the server API for TreeManager service.
// All implementations must embed UnimplementedTreeManagerServer
// for forward compatibility
type TreeManagerServer interface {
GetSummery(context.Context, *TreeRequest) (*Tree, error)
GetFile(context.Context, *FileRequest) (*FileContent, error)
mustEmbedUnimplementedTreeManagerServer()
}
// UnimplementedTreeManagerServer must be embedded to have forward compatible implementations.
type UnimplementedTreeManagerServer struct {
}
func (UnimplementedTreeManagerServer) GetSummery(context.Context, *TreeRequest) (*Tree, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetSummery not implemented")
}
func (UnimplementedTreeManagerServer) GetFile(context.Context, *FileRequest) (*FileContent, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetFile not implemented")
}
func (UnimplementedTreeManagerServer) mustEmbedUnimplementedTreeManagerServer() {}
// UnsafeTreeManagerServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to TreeManagerServer will
// result in compilation errors.
type UnsafeTreeManagerServer interface {
mustEmbedUnimplementedTreeManagerServer()
}
func RegisterTreeManagerServer(s grpc.ServiceRegistrar, srv TreeManagerServer) {
s.RegisterService(&TreeManager_ServiceDesc, srv)
}
func _TreeManager_GetSummery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(TreeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TreeManagerServer).GetSummery(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/main.TreeManager/GetSummery",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TreeManagerServer).GetSummery(ctx, req.(*TreeRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TreeManager_GetFile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FileRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TreeManagerServer).GetFile(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/main.TreeManager/GetFile",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TreeManagerServer).GetFile(ctx, req.(*FileRequest))
}
return interceptor(ctx, in, info, handler)
}
// TreeManager_ServiceDesc is the grpc.ServiceDesc for TreeManager service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var TreeManager_ServiceDesc = grpc.ServiceDesc{
ServiceName: "main.TreeManager",
HandlerType: (*TreeManagerServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "GetSummery",
Handler: _TreeManager_GetSummery_Handler,
},
{
MethodName: "GetFile",
Handler: _TreeManager_GetFile_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "tree.proto",
}