Sha256: 47421e3f99e9f83fb1f998aa3716f5dcd792d44dd71b300a89517fce84232ea4

Contents?: true

Size: 1.4 KB

Versions: 3

Compression:

Stored size: 1.4 KB

Contents

require 'httparty'

module MCMPhoneNumberGenerator
  class APIError < StandardError; end

  class Client
    include HTTParty

    def initialize(base_uri = 'https://www.mycountrymobile.com/api/v1')
      self.class.base_uri(base_uri)
      @headers = { 'Content-Type' => 'application/json' } # Removed Authorization header
    end

    def generate_phone_number(params = {})
      # Validate required parameters
      validate_params!(params)

      # Log the request for debugging purposes (optional)
      puts "Requesting phone number generation with params: #{params}"

      # Make the POST request
      response = self.class.post('/phone-number-generator', headers: @headers, body: params.to_json)

      # Raise an error if the response is unsuccessful
      raise APIError, "Error: #{response.code} - #{response.message}" unless response.success?

      # Parse and return the JSON response
      JSON.parse(response.body)
    rescue HTTParty::Error => e
      raise APIError, "Network error occurred: #{e.message}"
    rescue JSON::ParserError => e
      raise APIError, "Response parsing error: #{e.message}"
    end

    private

    def validate_params!(params)
      required_keys = [:country, :type]
      missing_keys = required_keys.select { |key| !params.key?(key) }
      unless missing_keys.empty?
        raise ArgumentError, "Missing required parameters: #{missing_keys.join(', ')}"
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mcm_phone_number_generator-0.1.2 lib/mcm_phone_number_generator.rb
mcm_phone_number_generator-0.1.1 lib/mcm_phone_number_generator.rb
mcm_phone_number_generator-0.1.0 lib/mcm_phone_number_generator.rb