Skip to content

Commit

Permalink
add hex utils
Browse files Browse the repository at this point in the history
  • Loading branch information
classicalliu committed Aug 7, 2018
1 parent 6ed8dec commit 9b9ea8d
Show file tree
Hide file tree
Showing 8 changed files with 50 additions and 44 deletions.
2 changes: 1 addition & 1 deletion app/controllers/api/status_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ def index
render json: {
result: {
status: process ? "running" : "not running",
currentBlockNumber: CitaSync::Basic.number_to_hex_str(Block.current_block_number || 0),
currentBlockNumber: HexUtils.to_hex(Block.current_block_number || 0),
currentChainBlockNumber: CitaSync::Api.block_number["result"]
}
}
Expand Down
8 changes: 4 additions & 4 deletions app/controllers/local_infos_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ class << self
# @return [ActiveModelSerializers::SerializableResource, nil] BlockSerializer, return nil if not found.
def get_block_by_number(params)
block_number_hex, flag = params
block_number = CitaSync::Basic.hex_str_to_number(block_number_hex)
block_number = HexUtils.to_decimal(block_number_hex)
block = Block.find_by(block_number: block_number)
return nil if block.nil?
# BlockSerializer.new(block).as_json
Expand Down Expand Up @@ -43,7 +43,7 @@ def get_transaction(params)
# @return [ActiveModelSerializers::SerializableResource, nil] MetaDataSerializer, return nil if not found.
def get_meta_data(params)
block_number_hex, = params
block_number = CitaSync::Basic.hex_str_to_number(block_number_hex)
block_number = HexUtils.to_decimal(block_number_hex)
meta_data = MetaData.find_by(block_number: block_number)
return nil if meta_data.nil?
# MetaDataSerializer.new(meta_data, key_transform: :camel_lower).as_json
Expand All @@ -57,7 +57,7 @@ def get_meta_data(params)
def get_balance(params)
address, block_number_hex = params
address_downcase = address.downcase
block_number = CitaSync::Basic.hex_str_to_number(block_number_hex)
block_number = HexUtils.to_decimal(block_number_hex)
balance = Balance.find_by(address: address_downcase, block_number: block_number)
balance&.value
end
Expand All @@ -69,7 +69,7 @@ def get_balance(params)
def get_abi(params)
address, block_number_hex = params
address_downcase = address.downcase
block_number = CitaSync::Basic.hex_str_to_number(block_number_hex)
block_number = HexUtils.to_decimal(block_number_hex)
abi = Abi.find_by(address: address_downcase, block_number: block_number)
abi&.value
end
Expand Down
17 changes: 0 additions & 17 deletions app/models/cita_sync/basic.rb
Original file line number Diff line number Diff line change
@@ -1,23 +1,6 @@
module CitaSync
module Basic
class << self

# convert decimal number to hex string with "0x" prefix
#
# @param number [Integer]
# @return [String]
def number_to_hex_str(number)
"0x" + number.to_s(16)
end

# convert hex string to decimal number
#
# @param str [String] hex string
# @return [Integer] decimal number
def hex_str_to_number(str)
str.to_i(16)
end

# post params to cita and get response
#
# @param method [String, Symbol]
Expand Down
14 changes: 7 additions & 7 deletions app/models/cita_sync/persist.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def save_block(hex_num_str)
result = data["result"]
return if result.nil?
block_number_hex_str = result.dig("header", "number")
block_number = Basic.hex_str_to_number(block_number_hex_str)
block_number = HexUtils.to_decimal(block_number_hex_str)
Block.create(
version: result["version"],
cita_hash: result["hash"],
Expand All @@ -32,7 +32,7 @@ def save_transaction(hash, block = nil)
data = CitaSync::Api.get_transaction(hash)
result = data["result"]
return if result.nil?
block ||= Block.find_by_block_number(CitaSync::Basic.hex_str_to_number(result["blockNumber"]))
block ||= Block.find_by_block_number(HexUtils.to_decimal(result["blockNumber"]))
content = result["content"]
message = Message.new(content)
transaction = Transaction.new(
Expand Down Expand Up @@ -68,7 +68,7 @@ def save_meta_data(block_number, block = nil)
result = data["result"]
return if result.nil?
# block number in decimal system
block_number_decimal = CitaSync::Basic.hex_str_to_number(block_number)
block_number_decimal = HexUtils.to_decimal(block_number)
block ||= Block.find_by_block_number(block_number_decimal)
MetaData.create(
chain_id: result["chainId"],
Expand Down Expand Up @@ -98,7 +98,7 @@ def save_balance(addr, block_number)
value = data["result"]
balance = Balance.create(
address: addr_downcase,
block_number: CitaSync::Basic.hex_str_to_number(block_number),
block_number: HexUtils.to_decimal(block_number),
value: value
)
[balance, data]
Expand All @@ -117,7 +117,7 @@ def save_abi(addr, block_number)
value = data["result"]
abi = Abi.create(
address: addr_downcase,
block_number: CitaSync::Basic.hex_str_to_number(block_number),
block_number: HexUtils.to_decimal(block_number),
value: value
)
[abi, data]
Expand All @@ -144,13 +144,13 @@ def save_block_with_infos(block_number_hex_str)
# @return [void]
def save_blocks_with_infos
block_number_hex_str = CitaSync::Api.block_number["result"]
block_number = CitaSync::Basic.hex_str_to_number(block_number_hex_str)
block_number = HexUtils.to_decimal(block_number_hex_str)

# current biggest block number in database
last_block = ::Block.order(block_number: :desc).first
last_block_number = last_block&.block_number || -1
((last_block_number + 1)..block_number).each do |num|
hex_str = CitaSync::Basic.number_to_hex_str(num)
hex_str = HexUtils.to_hex(num)
save_block_with_infos(hex_str)
end
end
Expand Down
19 changes: 19 additions & 0 deletions app/utils/hex_utils.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
class HexUtils
class << self
# convert decimal number to hex string with "0x" prefix
#
# @param number [Integer]
# @return [String]
def to_hex(number)
"0x" + number.to_s(16)
end

# convert hex string to decimal number
#
# @param str [String] hex string
# @return [Integer] decimal number
def to_decimal(str)
str.hex
end
end
end
1 change: 1 addition & 0 deletions config/spring.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
.rbenv-vars
tmp/restart.txt
tmp/caching-dev.txt
app/utils/**
].each { |path| Spring.watch(path) }
15 changes: 0 additions & 15 deletions spec/models/cita_sync/basic_spec.rb
Original file line number Diff line number Diff line change
@@ -1,19 +1,4 @@
require 'rails_helper'

RSpec.describe CitaSync::Basic, type: :model do
let(:number) { 100 }
let(:hex_str) { "0x64" }

context "number_to_hex_str" do
it 'convert decimal number to hex number string' do
expect(CitaSync::Basic.number_to_hex_str(100)).to eq hex_str
end
end

context "hex_str_to_number" do
it "convert hex number string to decimal number" do
expect(CitaSync::Basic.hex_str_to_number(hex_str)).to eq number
end
end

end
18 changes: 18 additions & 0 deletions spec/utils/hex_utils_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
require 'rails_helper'

RSpec.describe HexUtils do
let(:number) { 100 }
let(:hex_str) { "0x64" }

context "to_hex" do
it 'convert decimal number to hex number string' do
expect(HexUtils.to_hex(100)).to eq hex_str
end
end

context "to_decimal" do
it "convert hex number string to decimal number" do
expect(HexUtils.to_decimal(hex_str)).to eq number
end
end
end

0 comments on commit 9b9ea8d

Please sign in to comment.