Sha256: e2f6ec40773345a5b17a3c054fac40611c40a31677e69c937e404ec194b7eed9

Contents?: true

Size: 1.28 KB

Versions: 6

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

require 'net/http'
require 'json'
require 'uri'
require 'base64'
require 'base58'
require_relative 'base_client'
Dir[File.join(__dir__, 'http_methods', '*.rb')].each { |file| require file }

module SolanaRuby
  class HttpClient < BaseClient
    [HttpMethods::BasicMethods, HttpMethods::LookupTableMethods, HttpMethods::TransactionMethods,
      HttpMethods::SignatureMethods, HttpMethods::BlockhashMethods, HttpMethods::BlockMethods,
      HttpMethods::AccountMethods, HttpMethods::TokenMethods, HttpMethods::SlotMethods].each do |mod|
      include mod
    end
    BASE_URL = 'https://api.mainnet-beta.solana.com'

    def initialize(endpoint = BASE_URL)
      @uri = URI.parse(endpoint)
    end

    def request(method, params = [])
      http = Net::HTTP.new(@uri.host, @uri.port)
      local_hosts = ['localhost', '127.0.0.1', '[::1]']
      http.use_ssl = true unless local_hosts.include?(@uri.host.downcase)

      request = Net::HTTP::Post.new(@uri.request_uri, {'Content-Type' => 'application/json'})
      request.body = {
        jsonrpc: '2.0',
        id: 1,
        method: method,
        params: params
      }.to_json

      response = http.request(request)
      handle_http_response(response)
    rescue StandardError => e
      handle_error(e)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
solana-ruby-web3js-2.1.0 lib/solana_ruby/http_client.rb
solana-ruby-web3js-2.0.2 lib/solana_ruby/http_client.rb
solana-ruby-web3js-2.0.1 lib/solana_ruby/http_client.rb
solana-ruby-web3js-2.0.0beta2 lib/solana_ruby/http_client.rb
solana-ruby-web3js-2.0.0beta1 lib/solana_ruby/http_client.rb
solana-ruby-web3js-2.0.0 lib/solana_ruby/http_client.rb