Sha256: 39b61081d0debcf585ecfadbec955ba7dba3f1ecac60a905c75611277880bac3

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

module DLDInternet
  module AWS
    module EC2

      module Instance_Types
        DEBUG = true
        class AWSPricingAPIClient
          attr_reader :instance_types

          def initialize
            @instance_types = {}
          end

          # ---------------------------------------------------------------------------------------------------------------
          def get_instance_types(options={})
            unless @instance_types.size > 0
              require 'net/http'
              # url = options[:url] || 'https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/index.json'
              url = options[:url] || 'https://ec2instances.info/instances.json'

              uri = URI(url)
              # params = { :limit => 10, :page => 3 }
              # uri.query = URI.encode_www_form(params)

              while true
                response = Net::HTTP.get_response(uri)
                case response
                when Net::HTTPSuccess then
                  require 'json'
                  data = JSON.parse(response.body)
                  @instance_types = data
                  break
                when Net::HTTPRedirection then
                  uri = URI(response['location'])
                  # warn "redirected to #{location}"
                  # fetch(location, limit - 1)
                else
                  raise response.inspect
                end
              end
            end
            @instance_types
          end

        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aws-ec2-instance_types-2.0.0 lib/dldinternet/aws/ec2/instance_types/aws-pricing-api-client.rb