501 Commits

Author SHA1 Message Date
fiatjaf
7c1ab3e627
Merge pull request #60 from barkyq/nip26
NIP-26
2023-02-12 08:44:50 -03:00
Dylan Cant
442fe39867 small edits 2023-02-12 00:39:29 -05:00
Dylan Cant
a42c603847 nip26 initial commit 2023-02-12 00:03:29 -05:00
barkyq
3ccef5eec4
Tweaked the NIP 42 Validation (#58) 2023-02-09 11:28:31 -03:00
Dylan Cant
72386d27e1 fix nip19_test 2023-02-06 21:31:06 -03:00
Wayback Archiver
ab2db2dfc5 Fix unblock mutex
- if `receivedEvent.ID` not match `event.ID`, may trigger an error `fatal error: sync: unlock of unlocked mutex`.
- if context cancled, it does not needs mutex.
2023-02-05 17:10:56 -03:00
fiatjaf
4aee139f6c
modify AppendUnique so it matches only the first two items. 2023-02-05 17:04:15 -03:00
fiatjaf
a3e3b25dd9
support relays in nip05. v0.13.0 2023-02-05 16:25:00 -03:00
fiatjaf
024f89ac58
unexport internal nip05 types. 2023-02-05 16:22:41 -03:00
fiatjaf
e407725a43
adjust nip05 so it supports naked domains. 2023-02-05 16:21:50 -03:00
Wayback Archiver
a16e2a28d5 Update relay.go 2023-02-05 11:19:26 -03:00
Wayback Archiver
d7d4c62602 Fix execution sequence 2023-02-05 11:19:26 -03:00
Wayback Archiver
11f4090639 Test with -race flag 2023-02-05 07:47:36 -03:00
Kevin Lee
15370a9acd
Fix example compilation error (#50) 2023-02-03 11:36:21 -03:00
Theodore Keloglou
cc6ec2b886 Fix test nip19 variable naming 2023-02-03 11:34:54 -03:00
Dylan Cant
de78b2c054 added function to fetch NIP-11 documents 2023-01-31 14:06:15 -03:00
fiatjaf
92c0143762
make sub.Events a channel of pointers. v0.12.0 2023-01-26 09:04:27 -03:00
fiatjaf
0e2ee85785
test every pull request. 2023-01-20 17:00:27 -03:00
fiatjaf
9e58aa85c8
test every commit on github actions. 2023-01-20 16:52:51 -03:00
fiatjaf
3d58f81ea9
Merge pull request #43 from barkyq/event_MarshalJSON 2023-01-20 16:27:16 -03:00
fiatjaf
b45c289f1c
Merge pull request #41 from 13x-tech/fix/ignore-trailing-slash 2023-01-18 22:16:01 -03:00
Liran Cohen
455c7a23b6 nit - not necessary to be verbose 2023-01-18 21:38:46 +00:00
Liran Cohen
839154da5a case insenstive for nip42 service url validation, some cleanup 2023-01-18 21:35:32 +00:00
Dylan Cant
afcfa20763 Changing (evt Event) MarshalJSON to avoid string escaping bug 2023-01-18 14:50:44 -05:00
Liran Cohen
443c7cf633 trim trailing slash from expected and found relay URL, clean up 2023-01-18 17:44:32 +00:00
barkyq
b9d04f1496
cleaning up marshaling/serialization (#1)
* cleaning up marshaling/serialization

* cleaning up marshaling/serialization
2023-01-18 11:06:59 -05:00
Liran Cohen
c816103774 fix typo for GoDoc comment on GetAll tags 2023-01-18 08:48:23 -03:00
fiatjaf
dcc133e628
Merge pull request #39 from barkyq/master 2023-01-17 08:12:32 -03:00
Dylan Cant
c6b4867dd4 simplifications in number of lines of code for serialization 2023-01-16 23:31:22 -05:00
Dylan Cant
771a2b6218 remove int64 -> int conversion as it is not necessary for Sprinting 2023-01-16 23:22:45 -05:00
Dylan Cant
be46f7abac fixing JSON escaping (to RFC4627) 2023-01-16 23:13:19 -05:00
Dylan Cant
ebe3d61484 added nip04.go docstrings
changed variable names in ComputeSharedSecret to emphasize that it is
agnostic about who is sender and who is receiver.
2023-01-16 21:55:34 -05:00
Dylan Cant
67813257df stopping data races with sync.mutex to Publish() in relay.go 2023-01-16 11:32:00 -05:00
barkyq
87b6280299
Added some NIP-42 functionality to the client (relay.go) (#38) 2023-01-16 08:27:11 -03:00
fiatjaf
9775016bf1
implement nip-42 AUTH event validation. v0.11.1 2023-01-15 22:00:38 -03:00
barkyq
a37ffacc74
added sub.mutex handling in the relay Connect() function (#37) 2023-01-15 09:19:00 -03:00
Dylan Cant
635c1b0132 fixed small typo 2023-01-14 00:27:18 -03:00
Dylan Cant
ea968c79d1 typo... 2023-01-14 00:27:18 -03:00
Dylan Cant
f149ee8b4e nip19, subscription, publication code examples added to README.md
fixed typo in example/example.go
2023-01-14 00:27:18 -03:00
Dylan Cant
92ce379649 added example/example.go with subscription and publication code example 2023-01-13 22:08:32 -03:00
fiatjaf
c64078e5cc
remove outdated docs. must add new ones later. 2023-01-13 14:28:56 -03:00
fiatjaf
0397395261
force a deadline of 7 seconds when connecting to relays (if not set).
must add documentation to these calls.
v0.11.0
2023-01-03 14:47:21 -03:00
fiatjaf
3349b2a52b
fix encoding and decoding of event "extra" fields.
fixes https://github.com/nbd-wtf/go-nostr/issues/31
2023-01-03 14:46:50 -03:00
fiatjaf
4a62a753e6
contexts everywhere. 2023-01-01 20:58:43 -03:00
fiatjaf
c18de89dd3
remove relaypool because it is considered harmful. 2023-01-01 20:10:05 -03:00
fiatjaf
4dbbcec80a
one more nip19 test. 2022-12-29 09:35:05 -03:00
fiatjaf
e4c5dfbebb
nip19. v0.10.0 2022-12-27 07:49:26 -03:00
alex
28663f21f0 relaypool: add a unique events subscription smoke test
was trying to reproduce the issue described in
https://github.com/nbd-wtf/go-nostr/issues/23

no success in reproducing that specific problem, but i believe the test
can still be useful to help in avoiding regression bugs in the future.
2022-12-26 16:03:00 -03:00
alex
435579dc75 publish: correctly report failed command statuses from nip-20 relays
the client never reported a failed status, for example when a relay
responds with a:

    ["OK", event-id, false, "blocked"]

this was due to Relay.statusChans map missing a channel for an event
when a nip-20 status command is reported by a relay. the reason this
happened is due to the method's receiver, which was copied instead of
referenced by a pointer:

    func (r Relay) Publish(event Event) chan Status {
      // uses a **copy** of statusChans here:
      r.statusChans.Store(event.ID, statusChan)
      ...
    }

the bugfix is a one character change:

    func (r *Relay) Publish(event Event) chan Status

but while there, spotted another bug where an ok variable was shadowed
and the status chan would've reported incorrect value:

    // ok, which is a command status from earlier, is shadowed here:
    if statusChan, ok := r.statusChans.Load(eventId); ok {
      statusChan <- ...
    }

as a side effect, Relay.Publish now reports PublishStatusSucceeded
twice for relays which implement nip-20: once from an OK command status
and the other one from its adhoc subscription to observe whether the
event has been seen. added a todo to address it in the future.
2022-12-26 14:44:40 -03:00
alex
5bfb398f4d nip13: check and generate proof of work
implementation as per NIP-13
https://github.com/nostr-protocol/nips/blob/e79c84ae/13.md

some benchmark results:

    $ go test -bench . ./nip13
    goos: linux
    goarch: amd64
    pkg: github.com/nbd-wtf/go-nostr/nip13
    cpu: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
    BenchmarkCheck-8                        144905385                8.328 ns/op
    BenchmarkGenerateOneIteration-8           467874              2451 ns/op
    BenchmarkGenerate/8bits-8                   4045           1033196 ns/op
    BenchmarkGenerate/16bits-8                    16         101939954 ns/op
    BenchmarkGenerate/24bits-8                     1        11411513764 ns/op
    PASS
    ok      github.com/nbd-wtf/go-nostr/nip13       22.220s
2022-12-26 08:05:40 -03:00