From f9d058a95a1ff87d16f188679c9a54d720e3fc67 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Sun, 13 Feb 2022 08:37:38 -0300 Subject: [PATCH] adapt to updated go-nostr. --- basic/query.go | 46 ++++++++++++++++++++-------------------------- go.mod | 2 +- go.sum | 22 ++++++++++++++++++++++ handlers.go | 2 +- interface.go | 2 +- listener.go | 8 ++++---- 6 files changed, 49 insertions(+), 33 deletions(-) diff --git a/basic/query.go b/basic/query.go index d11e4c7..1eeaca9 100644 --- a/basic/query.go +++ b/basic/query.go @@ -7,14 +7,13 @@ import ( "fmt" "strconv" "strings" + "time" "github.com/fiatjaf/go-nostr" "github.com/rs/zerolog/log" ) -func (b *BasicRelay) QueryEvents( - filter *nostr.EventFilter, -) (events []nostr.Event, err error) { +func (b *BasicRelay) QueryEvents(filter *nostr.Filter) (events []nostr.Event, err error) { var conditions []string var params []interface{} @@ -88,27 +87,19 @@ func (b *BasicRelay) QueryEvents( } tagQuery := make([]string, 0, 1) - if filter.TagE != nil { - if len(filter.TagE) > 10 { + for _, values := range filter.Tags { + if len(values) == 0 { + // any tag set to [] is wrong + return + } + + // add these tags to the query + tagQuery = append(tagQuery, values...) + + if len(tagQuery) > 10 { // too many tags, fail everything return } - if len(filter.TagE) == 0 { - // #e being [] mean you won't get anything - return - } - tagQuery = append(tagQuery, filter.TagE...) - } - if filter.TagP != nil { - if len(filter.TagP) > 10 { - // too many tags, fail everything - return - } - if len(filter.TagP) == 0 { - // #e being [] mean you won't get anything - return - } - tagQuery = append(tagQuery, filter.TagP...) } if len(tagQuery) > 0 { @@ -117,18 +108,21 @@ func (b *BasicRelay) QueryEvents( arrayBuild[i] = "?" params = append(params, tagValue) } + + // we use a very bad implementation in which we only check the tag values and + // ignore the tag names conditions = append(conditions, "tagvalues && ARRAY["+strings.Join(arrayBuild, ",")+"]") } - if filter.Since != 0 { + aLongTimeAgo := time.Date(2022, 1, 1, 0, 0, 0, 0, time.UTC) + if filter.Since.Before(aLongTimeAgo) { conditions = append(conditions, "created_at > ?") - params = append(params, filter.Since) + params = append(params, filter.Since.Unix()) } - - if filter.Until != 0 { + if filter.Until.Before(aLongTimeAgo) { conditions = append(conditions, "created_at < ?") - params = append(params, filter.Until) + params = append(params, filter.Until.Unix()) } if len(conditions) == 0 { diff --git a/go.mod b/go.mod index 0566bfd..1a0134f 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/fiatjaf/relayer go 1.15 require ( - github.com/fiatjaf/go-nostr v0.4.2 + github.com/fiatjaf/go-nostr v0.6.1 github.com/gorilla/mux v1.8.0 github.com/gorilla/websocket v1.4.2 github.com/jmoiron/sqlx v1.3.1 diff --git a/go.sum b/go.sum index a9da82f..c26a689 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,14 @@ +github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:kGUqhHd//musdITWjFvNTHn90WG9bMLBEPQZ17Cmlpw= +github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec/go.mod h1:CD8UlnlLDiqb36L110uqiP2iSflVjx9g/3U9hCI4q2U= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/btcsuite/btcd v0.0.0-20190109040709-5bda5314ca95 h1:bmv+LE3sbjb/M06u2DBi92imeKj7KnCUBOvyZYqI8d8= github.com/btcsuite/btcd v0.0.0-20190109040709-5bda5314ca95/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= +github.com/btcsuite/btcd v0.20.1-beta h1:Ik4hyJqN8Jfyv3S4AGBOmyouMsYE3EdYODkMbQjwPGw= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190112041146-bf1e1be93589/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= @@ -11,14 +16,20 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:P13beTBKr5Q18lJe1rIoLUqjM+CB1zYrRg44ZqGuQSA= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/fiatjaf/bip340 v1.1.0 h1:W+CnUU3RyqgMKS2S9t/r2l3L4D+sSkRtU4la7MlVBR8= github.com/fiatjaf/bip340 v1.1.0/go.mod h1:MxAz+5FQUTW4OT2gnCBC6Our486wmqf72ykZIrh7+is= +github.com/fiatjaf/bip340 v1.1.1 h1:qyVlP/uqt2bAWnJv8IPbKvC57645RosjnXKDH2SVJHQ= +github.com/fiatjaf/bip340 v1.1.1/go.mod h1:MxAz+5FQUTW4OT2gnCBC6Our486wmqf72ykZIrh7+is= github.com/fiatjaf/go-nostr v0.4.2 h1:8aeep4O1eTXNHOTSeMThGYs5Fox1OcqeqOVflFo5tAY= github.com/fiatjaf/go-nostr v0.4.2/go.mod h1:Uw7NI2zQE2QYgcT5495pZguoHoYRIrmXvLRO0eXhOs0= +github.com/fiatjaf/go-nostr v0.6.1 h1:VJqZ5NlVF/iXTR5sBOelyGPoOWt4MnLiBssTxL1F3rQ= +github.com/fiatjaf/go-nostr v0.6.1/go.mod h1:0qNUf729UumNbd2GdkjUi3Vs5Tx0zkCVNblnSfKPixg= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= @@ -47,17 +58,26 @@ github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.20.0 h1:38k9hgtUBdxFwE34yS8rTHmHBa4eN16E4DJlv177LNs= github.com/rs/zerolog v1.20.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= +github.com/stretchr/testify v1.1.5-0.20170601210322-f6abca593680/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/tyler-smith/go-bip32 v1.0.0/go.mod h1:onot+eHknzV4BVPwrzqY5OoVpyCvnwD7lMawL5aQupE= +github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= +github.com/valyala/fastjson v1.6.3 h1:tAKFnnwmeMGPbwJ7IwxcTPCNr3uIzoIj3/Fh90ra4xc= +github.com/valyala/fastjson v1.6.3/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= +golang.org/x/crypto v0.0.0-20170613210332-850760c427c5/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= 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/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190110200230-915654e7eabc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -65,6 +85,7 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190109145017-48ac38b7c8cb/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/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -74,3 +95,4 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= diff --git a/handlers.go b/handlers.go index be1f98b..60d915c 100644 --- a/handlers.go +++ b/handlers.go @@ -134,7 +134,7 @@ func handleWebsocket(relay Relay) func(http.ResponseWriter, *http.Request) { return } - filters := make(nostr.EventFilters, len(request)-2) + filters := make(nostr.Filters, len(request)-2) for i, filterReq := range request[2:] { if err := json.Unmarshal( filterReq, diff --git a/interface.go b/interface.go index f74b0e5..4c63883 100644 --- a/interface.go +++ b/interface.go @@ -10,7 +10,7 @@ type Relay interface { Name() string Init() error SaveEvent(*nostr.Event) error - QueryEvents(*nostr.EventFilter) ([]nostr.Event, error) + QueryEvents(*nostr.Filter) ([]nostr.Event, error) } type Injector interface { diff --git a/listener.go b/listener.go index 3f6b645..4247a22 100644 --- a/listener.go +++ b/listener.go @@ -7,14 +7,14 @@ import ( ) type Listener struct { - filters nostr.EventFilters + filters nostr.Filters } var listeners = make(map[*WebSocket]map[string]*Listener) var listenersMutex = sync.Mutex{} -func GetListeningFilters() nostr.EventFilters { - var respfilters = make(nostr.EventFilters, 0, len(listeners)*2) +func GetListeningFilters() nostr.Filters { + var respfilters = make(nostr.Filters, 0, len(listeners)*2) listenersMutex.Lock() defer func() { @@ -46,7 +46,7 @@ func GetListeningFilters() nostr.EventFilters { return respfilters } -func setListener(id string, ws *WebSocket, filters nostr.EventFilters) { +func setListener(id string, ws *WebSocket, filters nostr.Filters) { listenersMutex.Lock() defer func() { listenersMutex.Unlock()