Compare commits
3 Commits
v0.5.0
...
feature/ru
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d59f31a3c6
|
||
|
|
5497930dd5 | ||
|
|
c064a8d5f0 |
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.1.1/)
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.1.1/)
|
||||||
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed YARD example rendering issues in `InvalidKeyFormatError#initialize`, `InvalidKeyLengthError#initialize`,
|
||||||
|
`InvalidKeyTypeError#initialize`, `Event#initialize`, `EncryptedDirectMessage#initialize` and `Filter#to_h`
|
||||||
|
|
||||||
## [0.5.0] 2023-11-20
|
## [0.5.0] 2023-11-20
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
@@ -82,6 +89,7 @@ principles of immutability and was a major source of internal complexity as I ne
|
|||||||
|
|
||||||
- Initial release
|
- Initial release
|
||||||
|
|
||||||
|
[unreleased]: https://github.com/wilsonsilva/nostr/compare/v0.5.0...HEAD
|
||||||
[0.5.0]: https://github.com/wilsonsilva/nostr/compare/v0.4.0...v0.5.0
|
[0.5.0]: https://github.com/wilsonsilva/nostr/compare/v0.4.0...v0.5.0
|
||||||
[0.4.0]: https://github.com/wilsonsilva/nostr/compare/v0.3.0...v0.4.0
|
[0.4.0]: https://github.com/wilsonsilva/nostr/compare/v0.3.0...v0.4.0
|
||||||
[0.3.0]: https://github.com/wilsonsilva/nostr/compare/v0.2.0...v0.3.0
|
[0.3.0]: https://github.com/wilsonsilva/nostr/compare/v0.2.0...v0.3.0
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ module Nostr
|
|||||||
# @return [Subscription] The subscription object
|
# @return [Subscription] The subscription object
|
||||||
#
|
#
|
||||||
def subscribe(subscription_id: SecureRandom.hex, filter: Filter.new)
|
def subscribe(subscription_id: SecureRandom.hex, filter: Filter.new)
|
||||||
subscriptions[subscription_id] = Subscription.new(id: subscription_id, filter:)
|
subscriptions[subscription_id] = Subscription.new(id: subscription_id, filter: filter)
|
||||||
parent_to_child_channel.push([ClientMessageType::REQ, subscription_id, filter.to_h].to_json)
|
parent_to_child_channel.push([ClientMessageType::REQ, subscription_id, filter.to_h].to_json)
|
||||||
subscriptions[subscription_id]
|
subscriptions[subscription_id]
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ module Nostr
|
|||||||
# Initializes the error
|
# Initializes the error
|
||||||
#
|
#
|
||||||
# @example
|
# @example
|
||||||
# InvalidKeyFormatError.new('private'')
|
# InvalidKeyFormatError.new('private')
|
||||||
#
|
#
|
||||||
# @param [String] key_kind The kind of key that is invalid (public or private)
|
# @param [String] key_kind The kind of key that is invalid (public or private)
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ module Nostr
|
|||||||
# Initializes the error
|
# Initializes the error
|
||||||
#
|
#
|
||||||
# @example
|
# @example
|
||||||
# InvalidKeyLengthError.new('private'')
|
# InvalidKeyLengthError.new('private')
|
||||||
#
|
#
|
||||||
# @param [String] key_kind The kind of key that is invalid (public or private)
|
# @param [String] key_kind The kind of key that is invalid (public or private)
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -9,10 +9,12 @@ module Nostr
|
|||||||
# Initializes the error
|
# Initializes the error
|
||||||
#
|
#
|
||||||
# @example
|
# @example
|
||||||
# InvalidKeyTypeError.new('private'')
|
# InvalidKeyTypeError.new('private')
|
||||||
#
|
#
|
||||||
# @param [String] key_kind The kind of key that is invalid (public or private)
|
# @param [String] key_kind The kind of key that is invalid (public or private)
|
||||||
#
|
#
|
||||||
def initialize(key_kind) = super("Invalid #{key_kind} key type")
|
def initialize(key_kind)
|
||||||
|
super("Invalid #{key_kind} key type")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -149,7 +149,9 @@ module Nostr
|
|||||||
#
|
#
|
||||||
# @return [Array<String>] The event's updated list of tags
|
# @return [Array<String>] The event's updated list of tags
|
||||||
#
|
#
|
||||||
def add_event_reference(event_id) = tags.push(['e', event_id])
|
def add_event_reference(event_id)
|
||||||
|
tags.push(['e', event_id])
|
||||||
|
end
|
||||||
|
|
||||||
# Adds a reference to a pubkey as a 'p' tag
|
# Adds a reference to a pubkey as a 'p' tag
|
||||||
#
|
#
|
||||||
@@ -163,7 +165,9 @@ module Nostr
|
|||||||
#
|
#
|
||||||
# @return [Array<String>] The event's updated list of tags
|
# @return [Array<String>] The event's updated list of tags
|
||||||
#
|
#
|
||||||
def add_pubkey_reference(pubkey) = tags.push(['p', pubkey.to_s])
|
def add_pubkey_reference(pubkey)
|
||||||
|
tags.push(['p', pubkey.to_s])
|
||||||
|
end
|
||||||
|
|
||||||
# Signs an event with the user's private key
|
# Signs an event with the user's private key
|
||||||
#
|
#
|
||||||
@@ -212,13 +216,13 @@ module Nostr
|
|||||||
#
|
#
|
||||||
def to_h
|
def to_h
|
||||||
{
|
{
|
||||||
id:,
|
id: id,
|
||||||
pubkey:,
|
pubkey: pubkey,
|
||||||
created_at:,
|
created_at: created_at,
|
||||||
kind:,
|
kind: kind,
|
||||||
tags:,
|
tags: tags,
|
||||||
content:,
|
content: content,
|
||||||
sig:
|
sig: sig
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ module Nostr
|
|||||||
# The content is set to the URL (e.g., wss://somerelay.com) of a relay the event creator wants to
|
# The content is set to the URL (e.g., wss://somerelay.com) of a relay the event creator wants to
|
||||||
# recommend to its followers.
|
# recommend to its followers.
|
||||||
#
|
#
|
||||||
|
# @deprecated This event kind was removed in https://github.com/nostr-protocol/nips/pull/703/files#diff-39307f1617417657ee9874be314f13aabdc74401b124d0afe8217f2919c9c7d8L105
|
||||||
# @return [Integer]
|
# @return [Integer]
|
||||||
#
|
#
|
||||||
RECOMMEND_SERVER = 2
|
RECOMMEND_SERVER = 2
|
||||||
|
|||||||
@@ -133,26 +133,29 @@ module Nostr
|
|||||||
# @api public
|
# @api public
|
||||||
#
|
#
|
||||||
# @example
|
# @example
|
||||||
# filter.to_h # => {:ids=>["c24881c305c5cfb7c1168be7e9b0e150"],
|
# filter.to_h # =>
|
||||||
# :authors=>["000000001c5c45196786e79f83d21fe801549fdc98e2c26f96dcef068a5dbcd7"],
|
# {
|
||||||
# :kinds=>[0, 1, 2],
|
# ids: ['c24881c305c5cfb7c1168be7e9b0e150'],
|
||||||
# :"#e"=>["7bdb422f254194ae4bb86d354c0bd5a888fce233ffc77dceb3e844ceec1fcfb2"],
|
# authors: ['000000001c5c45196786e79f83d21fe801549fdc98e2c26f96dcef068a5dbcd7'],
|
||||||
# :"#p"=>["000000001c5c45196786e79f83d21fe801549fdc98e2c26f96dcef068a5dbcd7"],
|
# kinds: [0, 1, 2],
|
||||||
# :since=>1230981305,
|
# '#e': ['7bdb422f254194ae4bb86d354c0bd5a888fce233ffc77dceb3e844ceec1fcfb2'],
|
||||||
# :until=>1292190341}
|
# '#p': ['000000001c5c45196786e79f83d21fe801549fdc98e2c26f96dcef068a5dbcd7'],
|
||||||
|
# since: 1230981305,
|
||||||
|
# until: 1292190341
|
||||||
|
# }
|
||||||
#
|
#
|
||||||
# @return [Hash] The filter as a hash.
|
# @return [Hash] The filter as a hash.
|
||||||
#
|
#
|
||||||
def to_h
|
def to_h
|
||||||
{
|
{
|
||||||
ids:,
|
ids: ids,
|
||||||
authors:,
|
authors: authors,
|
||||||
kinds:,
|
kinds: kinds,
|
||||||
'#e': e,
|
'#e': e,
|
||||||
'#p': p,
|
'#p': p,
|
||||||
since:,
|
since: since,
|
||||||
until: self.until,
|
until: self.until,
|
||||||
limit:
|
limit: limit
|
||||||
}.compact
|
}.compact
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,9 @@ module Nostr
|
|||||||
#
|
#
|
||||||
# @return [String] The bech32 string representation of the key
|
# @return [String] The bech32 string representation of the key
|
||||||
#
|
#
|
||||||
def to_bech32 = Bech32.encode(hrp: self.class.hrp, data: self)
|
def to_bech32
|
||||||
|
Bech32.encode(hrp: self.class.hrp, data: self)
|
||||||
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ module Nostr
|
|||||||
private_key = generate_private_key
|
private_key = generate_private_key
|
||||||
public_key = extract_public_key(private_key)
|
public_key = extract_public_key(private_key)
|
||||||
|
|
||||||
KeyPair.new(private_key:, public_key:)
|
KeyPair.new(private_key: private_key, public_key: public_key)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Generates a private key
|
# Generates a private key
|
||||||
@@ -89,7 +89,7 @@ module Nostr
|
|||||||
def get_key_pair_from_private_key(private_key)
|
def get_key_pair_from_private_key(private_key)
|
||||||
validate_private_key(private_key)
|
validate_private_key(private_key)
|
||||||
public_key = extract_public_key(private_key)
|
public_key = extract_public_key(private_key)
|
||||||
KeyPair.new(private_key:, public_key:)
|
KeyPair.new(private_key: private_key, public_key: public_key)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|||||||
@@ -62,10 +62,10 @@ module Nostr
|
|||||||
)
|
)
|
||||||
event = Event.new(
|
event = Event.new(
|
||||||
pubkey: keypair.public_key,
|
pubkey: keypair.public_key,
|
||||||
kind:,
|
kind: kind,
|
||||||
content:,
|
content: content,
|
||||||
created_at:,
|
created_at: created_at,
|
||||||
tags:
|
tags: tags
|
||||||
)
|
)
|
||||||
event.sign(keypair.private_key)
|
event.sign(keypair.private_key)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|||||||
spec.description = 'Client and relay implementation of the Nostr protocol.'
|
spec.description = 'Client and relay implementation of the Nostr protocol.'
|
||||||
spec.homepage = 'https://nostr-ruby.com/'
|
spec.homepage = 'https://nostr-ruby.com/'
|
||||||
spec.license = 'MIT'
|
spec.license = 'MIT'
|
||||||
spec.required_ruby_version = '>= 3.2.0'
|
spec.required_ruby_version = '>= 2.7.2'
|
||||||
spec.metadata['rubygems_mfa_required'] = 'true'
|
spec.metadata['rubygems_mfa_required'] = 'true'
|
||||||
|
|
||||||
spec.metadata['homepage_uri'] = spec.homepage
|
spec.metadata['homepage_uri'] = spec.homepage
|
||||||
|
|||||||
Reference in New Issue
Block a user