Class: ERPC::PriceClient
- Inherits:
-
Object
- Object
- ERPC::PriceClient
- Defined in:
- lib/erpc_sdk/rest.rb
Instance Method Summary collapse
- #get_latest_price_updates(ids:, encoding: nil, parsed: nil, ignore_invalid_price_ids: nil) ⇒ Object
- #get_latest_publisher_stake_caps(encoding: nil, parsed: nil) ⇒ Object
- #get_price_feeds(asset_type: nil, query: nil) ⇒ Object
- #get_price_updates_at_timestamp(publish_time, ids:, encoding: nil, parsed: nil, ignore_invalid_price_ids: nil) ⇒ Object
-
#initialize(transport) ⇒ PriceClient
constructor
A new instance of PriceClient.
- #stream_price_updates(ids:, encoding: nil, parsed: nil, ignore_invalid_price_ids: nil, allow_unordered: nil, benchmarks_only: nil) ⇒ Object
Constructor Details
#initialize(transport) ⇒ PriceClient
Returns a new instance of PriceClient.
124 125 126 |
# File 'lib/erpc_sdk/rest.rb', line 124 def initialize(transport) @transport = transport end |
Instance Method Details
#get_latest_price_updates(ids:, encoding: nil, parsed: nil, ignore_invalid_price_ids: nil) ⇒ Object
146 147 148 149 150 151 152 |
# File 'lib/erpc_sdk/rest.rb', line 146 def get_latest_price_updates(ids:, encoding: nil, parsed: nil, ignore_invalid_price_ids: nil) value = @transport.get( "/v2/updates/price/latest", update_query(ids, encoding, parsed, ignore_invalid_price_ids) ) price_update(value) end |
#get_latest_publisher_stake_caps(encoding: nil, parsed: nil) ⇒ Object
163 164 165 166 167 168 169 170 171 |
# File 'lib/erpc_sdk/rest.rb', line 163 def get_latest_publisher_stake_caps(encoding: nil, parsed: nil) Validation.mapping( @transport.get( "/v2/updates/publisher_stake_caps/latest", "encoding" => encoding, "parsed" => parsed ) ) end |
#get_price_feeds(asset_type: nil, query: nil) ⇒ Object
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/erpc_sdk/rest.rb', line 128 def get_price_feeds(asset_type: nil, query: nil) value = @transport.get("/v2/price_feeds", "query" => query, "asset_type" => asset_type) raise InvalidResponseError, "ERPC returned invalid price feed metadata" unless value.is_a?(Array) value.each do |raw| = Validation.mapping(raw) Validation.string(["id"]) attributes = ["attributes"] next if attributes.nil? unless attributes.is_a?(Hash) && attributes.all? { |key, item| key.is_a?(String) && item.is_a?(String) } raise InvalidResponseError, "ERPC returned invalid price feed metadata" end end value rescue InvalidResponseError raise InvalidResponseError, "ERPC returned invalid price feed metadata" end |
#get_price_updates_at_timestamp(publish_time, ids:, encoding: nil, parsed: nil, ignore_invalid_price_ids: nil) ⇒ Object
154 155 156 157 158 159 160 161 |
# File 'lib/erpc_sdk/rest.rb', line 154 def (publish_time, ids:, encoding: nil, parsed: nil, ignore_invalid_price_ids: nil) value = @transport.get( "/v2/updates/price/#{URLs.escape_path(publish_time)}", update_query(ids, encoding, parsed, ignore_invalid_price_ids) ) price_update(value) end |
#stream_price_updates(ids:, encoding: nil, parsed: nil, ignore_invalid_price_ids: nil, allow_unordered: nil, benchmarks_only: nil) ⇒ Object
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
# File 'lib/erpc_sdk/rest.rb', line 173 def stream_price_updates(ids:, encoding: nil, parsed: nil, ignore_invalid_price_ids: nil, allow_unordered: nil, benchmarks_only: nil) query = update_query(ids, encoding, parsed, ignore_invalid_price_ids).merge( "allow_unordered" => allow_unordered, "benchmarks_only" => benchmarks_only ) chunks = @transport.stream("/v2/updates/price/stream", query) Enumerator.new do |yielder| buffer = +"" chunks.each do |chunk| buffer << chunk while (boundary = buffer.match(/\r?\n\r?\n/)) block = buffer.slice!(0, boundary.end(0)) event = parse_sse_block(block.sub(/\r?\n\r?\n\z/, "")) yielder << event if event end end event = parse_sse_block(buffer) yielder << event if event end end |