diff --git a/lib/ckb/api.rb b/lib/ckb/api.rb index 65997761..8d998b83 100644 --- a/lib/ckb/api.rb +++ b/lib/ckb/api.rb @@ -139,6 +139,15 @@ def get_current_epoch Types::Epoch.from_h(rpc.get_current_epoch) end + # @param number [Integer | String] + # + # @return [CKB::Types::Epoch] + def get_epoch_by_number(number) + Types::Epoch.from_h( + rpc.get_epoch_by_number(number) + ) + end + def inspect "\#" end diff --git a/lib/ckb/rpc.rb b/lib/ckb/rpc.rb index 23f769ef..c58838f1 100644 --- a/lib/ckb/rpc.rb +++ b/lib/ckb/rpc.rb @@ -78,6 +78,10 @@ def get_current_epoch rpc_request("get_current_epoch") end + def get_epoch_by_number(number) + rpc_request("get_epoch_by_number", params: [number.to_s]) + end + def inspect "\#" end diff --git a/lib/ckb/types/epoch.rb b/lib/ckb/types/epoch.rb index 65bbcbd2..0ff3310d 100644 --- a/lib/ckb/types/epoch.rb +++ b/lib/ckb/types/epoch.rb @@ -43,6 +43,7 @@ def to_h end def self.from_h(hash) + return if hash.nil? new( block_reward: hash[:block_reward], difficulty: hash[:difficulty], diff --git a/spec/ckb/api_spec.rb b/spec/ckb/api_spec.rb index a4fb67fd..d247829c 100644 --- a/spec/ckb/api_spec.rb +++ b/spec/ckb/api_spec.rb @@ -76,4 +76,11 @@ expect(result).not_to be nil expect(result).to be_a(Types::Epoch) end + + it "get epoch by number" do + number = 1 + result = api.get_epoch_by_number(number) + expect(result).to be_a(Types::Epoch) + expect(result.number).to eq number.to_s + end end diff --git a/spec/ckb/rpc_spec.rb b/spec/ckb/rpc_spec.rb index 92a423c6..9ce4a56f 100644 --- a/spec/ckb/rpc_spec.rb +++ b/spec/ckb/rpc_spec.rb @@ -100,4 +100,11 @@ result = rpc.get_transaction_trace(trace_tx_hash) expect(result).to be nil end + + it "get epoch by number" do + number = '1' + result = rpc.get_epoch_by_number(number) + expect(result).to be_a(Hash) + expect(result[:number]).to eq number + end end