Compare commits

..

No commits in common. "0cf5eb4d40cafaf90a0ce9aaf0adfd3dfdbd390c" and "b5d112fc74a1e1d357de422f1957d3de9139fb27" have entirely different histories.

11 changed files with 83 additions and 1059 deletions

View file

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

View file

@ -1,11 +1,34 @@
package main
import (
zord_tree "g.arns.lt/zordsdavini/zord-tree"
"sort"
)
func GetLastFiles(files []*TreeFile) []*TreeFile {
sortingFiles := make(map[string]*TreeFile)
type FSummery struct {
Name string
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 {
sortingFiles[f.Created+f.Id] = f
}
@ -21,7 +44,7 @@ func GetLastFiles(files []*TreeFile) []*TreeFile {
if len(keys) < 10 {
length = len(keys)
}
lastFiles := make([]*TreeFile, 0, length)
lastFiles := make([]FSummery, 0, length)
for i, k := range keys {
if i == length {
break

9
go.mod
View file

@ -3,15 +3,14 @@ module g.arns.lt/zordsdavini/arns-lt-gemini
go 1.18
require (
g.arns.lt/zordsdavini/arns-lt-tree-push-service v0.0.0-20220802051611-cf99eecc6e60
git.sr.ht/~adnano/go-gemini v0.2.3
google.golang.org/grpc v1.48.0
google.golang.org/protobuf v1.28.1
)
require (
github.com/golang/protobuf v1.5.2 // indirect
g.arns.lt/zordsdavini/abcex v1.0.0 // 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/sys v0.0.0-20210119212857-b64e53b001e4 // 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,133 +1,22 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
g.arns.lt/zordsdavini/abcex v1.0.0 h1:qQqlZ4DMfethCGK4I6yGaLqMrTzKNIshqpINd1l3t0E=
g.arns.lt/zordsdavini/abcex v1.0.0/go.mod h1:YRcJgts3XZwI+LEkngpfUab3DkUAW387Irpr43hIym8=
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/go.mod h1:hQ75Y0i5jSFL+FQ7AzWVAYr5LQsaFC7v3ZviNyj46dY=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
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=
github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ=
github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E=
github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE=
github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs=
github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E=
github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
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/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-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/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/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-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 (
"context"
"encoding/json"
"flag"
"fmt"
"google.golang.org/grpc/credentials/insecure"
"log"
"os"
"regexp"
@ -13,7 +13,6 @@ import (
"git.sr.ht/~adnano/go-gemini"
"git.sr.ht/~adnano/go-gemini/certificate"
"google.golang.org/grpc"
)
var (
@ -60,12 +59,12 @@ func main() {
}
}
func processFavicon(_ context.Context, w gemini.ResponseWriter, _ *gemini.Request) {
func processFavicon(ctx context.Context, w gemini.ResponseWriter, r *gemini.Request) {
w.SetMediaType("text/plain")
w.Write([]byte("\U0001F31B"))
}
func process(_ context.Context, w gemini.ResponseWriter, r *gemini.Request) {
func process(ctx context.Context, w gemini.ResponseWriter, r *gemini.Request) {
log.Println("-> " + r.URL.Path)
lang := regexp.MustCompile(`^/(sgs|en)`).FindString(r.URL.Path)
@ -73,103 +72,16 @@ func process(_ context.Context, w gemini.ResponseWriter, r *gemini.Request) {
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 {
case "/" == r.URL.Path:
w.WriteHeader(gemini.StatusPermanentRedirect, "/sgs")
case regexp.MustCompile(`^/(sgs|en)/?$`).MatchString(r.URL.Path):
renderIndex(lang, w, client)
case regexp.MustCompile(`^/(sgs|en)/a/?$`).MatchString(r.URL.Path):
case regexp.MustCompile(`^/(sgs|en)$`).MatchString(r.URL.Path):
renderIndex(lang, w)
case regexp.MustCompile(`^/(sgs|en)/a$`).MatchString(r.URL.Path):
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:
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) {
@ -187,7 +99,7 @@ func renderAbout(lang string, w gemini.ResponseWriter) {
}
}
func renderIndex(lang string, w gemini.ResponseWriter, client TreeManagerClient) {
func renderIndex(lang string, w gemini.ResponseWriter) {
w.SetMediaType("text/gemini")
content, err := os.ReadFile(fmt.Sprintf("templates/%s/index.gmi", lang))
if err != nil {
@ -196,18 +108,15 @@ func renderIndex(lang string, w gemini.ResponseWriter, client TreeManagerClient)
}
page := string(content)
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)
summery := GetSummery()
fmt.Println(summery)
tree := TSummery{}
err = json.Unmarshal([]byte(summery), &tree)
if err != nil {
log.Fatalf("client.GetSummery failed: %v", err)
w.WriteHeader(gemini.StatusTemporaryFailure, "Internal server error")
return
}
fmt.Println(tree)
categories := ""
for c, count := range tree.Categories {

View file

@ -2,13 +2,11 @@
I am Arns Udovič, also you can find me by Zordsdavini.
=> /sgs/a žemaitėškā
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.
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.
Karto eso puogramoutuos ė baisē miegsto Linux'us.
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.
Tāp pat eso gomtuos mīlietuos ė mėslėjo, ka Žemė ī gīva.
### Contact me
@ -17,45 +15,45 @@ My religion is Nature and I believe what Earth is alive.
## About capsule
Capsule has been made to have the place to put my thoughts, notes or something what should not be forgotten.
Alkierios korts, ka būtom vėita, kor galietiuo talpintė sava mėslės, pastebiejėmus a kažkon, kon nanuorietiuo pamėrštė.
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.
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ė.
### About technics
### Aple teknuoluogėjė
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.
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`.
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.
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 more...
=> https://g.arns.lt/zordsdavini/zord-tree zord-tree library to build tree from files
=> https://g.arns.lt/zordsdavini/arns-lt-tree-push-service service written on top of zord-tree to serve files
=> https://g.arns.lt/zordsdavini/arns-lt-gemini gemini service
=> https://arns.lt Arna alkierios HTTP version
=> 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-gemini gemini servėsos
=> https://arns.lt Arna alkierios HTTP versėjuo
## Other projects
### Samogitian
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 Wikipedia in Samogitian
=> https://iso639-3.sil.org/code/sgs ISO 639 code for Samogitian language "sgs"
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ā:
=> https://bat-smg.wikipedia.org/wiki/P%C4%97rms_poslapis Vikipedėjė žemaitėška
=> https://iso639-3.sil.org/code/sgs ISO 639 kuods žemaitiu kalbā „sgs“
Other links to works with Samogitian:
=> https://žemaitėjė.lt Institute of Samogitian language
=> https://ruoda.lt newspaper "Ruoda"
=> https://zkz.lt dictionary of Samogitian
Kėtas nūruodas darbū so žemaitēs:
=> https://žemaitėjė.lt Žemaitiu kalbuos instėtota alkierios
=> https://ruoda.lt laikraštis „Ruoda“
=> https://zkz.lt žemaitiu kalbuos žuodīns
### IT
=> https://kplaner.arns.lt Planner written on Python with my wife
=> https://kplaner.arns.lt Planoutuos parašīts ont python'a karto so sava patė
=> https://odysee.com/@qtile-tv:0
### future plans
=> https://karmagiai.lt RPG game "Kariai ir magai" (similar to DnD, Liethuanian version) computerization (or helper to count)
=> https://vytines.lt winding tape automatization
=> https://karmagiai.lt „Kariai ir magai“ internetėnė versėjė (arba gižielis skaitliavėmams)
=> https://vytines.lt vītėniu joustu vījėms ruoboto
=> https://sieps.lt helper app for inventorization
=> https://preferansas.lt card game Preferances Lithuanian edition
=> https://preferansas.lt internetėnė preferansa lietovėška versėjė
=> /en ← back

View file

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

View file

@ -2,8 +2,6 @@
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.
Karto eso puogramoutuos ė baisē miegsto Linux'us.
@ -27,7 +25,6 @@ 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.
=> /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/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

View file

@ -1,599 +0,0 @@
// 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
}

View file

@ -1,49 +0,0 @@
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;
}

View file

@ -1,141 +0,0 @@
// 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",
}