diff --git a/fog.gemspec b/fog.gemspec index a90fb5da4..24330d9b7 100644 --- a/fog.gemspec +++ b/fog.gemspec @@ -39,7 +39,7 @@ Gem::Specification.new do |s| s.add_dependency('builder') s.add_dependency('excon', '~>0.6.4') s.add_dependency('formatador', '~>0.1.5') - s.add_dependency('json') + s.add_dependency('multi_json', '~> 1.0') s.add_dependency('mime-types') s.add_dependency('net-scp', '~>1.0.4') s.add_dependency('net-ssh', '~>2.1.4') diff --git a/lib/fog/aws/cloud_formation.rb b/lib/fog/aws/cloud_formation.rb index d8bf6ad00..091f94abc 100644 --- a/lib/fog/aws/cloud_formation.rb +++ b/lib/fog/aws/cloud_formation.rb @@ -43,7 +43,7 @@ module Fog # * CloudFormation object with connection to AWS. def initialize(options={}) require 'fog/core/parser' - require 'json' + require 'multi_json' @aws_access_key_id = options[:aws_access_key_id] @aws_secret_access_key = options[:aws_secret_access_key] diff --git a/lib/fog/aws/iam.rb b/lib/fog/aws/iam.rb index b3555f243..3d1b91a72 100644 --- a/lib/fog/aws/iam.rb +++ b/lib/fog/aws/iam.rb @@ -98,7 +98,7 @@ module Fog # * IAM object with connection to AWS. def initialize(options={}) require 'fog/core/parser' - require 'json' + require 'multi_json' @aws_access_key_id = options[:aws_access_key_id] @aws_secret_access_key = options[:aws_secret_access_key] diff --git a/lib/fog/cdn/rackspace.rb b/lib/fog/cdn/rackspace.rb index 1d6197422..04a393d47 100644 --- a/lib/fog/cdn/rackspace.rb +++ b/lib/fog/cdn/rackspace.rb @@ -42,7 +42,7 @@ module Fog class Real def initialize(options={}) - require 'json' + require 'multi_json' credentials = Fog::Rackspace.authenticate(options) @auth_token = credentials['X-Auth-Token'] @enabled = false @@ -85,7 +85,7 @@ module Fog end end if !response.body.empty? && parse_json && response.headers['Content-Type'] =~ %r{application/json} - response.body = JSON.parse(response.body) + response.body = ::MultiJson.decode(response.body) end response end diff --git a/lib/fog/compute/bluebox.rb b/lib/fog/compute/bluebox.rb index 42e423d94..c13ffc4f3 100644 --- a/lib/fog/compute/bluebox.rb +++ b/lib/fog/compute/bluebox.rb @@ -53,7 +53,7 @@ module Fog class Real def initialize(options={}) - require 'json' + require 'multi_json' @bluebox_api_key = options[:bluebox_api_key] @bluebox_customer_id = options[:bluebox_customer_id] @host = options[:bluebox_host] || "boxpanel.bluebox.net" @@ -83,7 +83,7 @@ module Fog end end unless response.body.empty? - response.body = JSON.parse(response.body) + response.body = ::MultiJson.decode(response.body) end response end diff --git a/lib/fog/compute/brightbox.rb b/lib/fog/compute/brightbox.rb index d3f6084e9..b36b348ea 100644 --- a/lib/fog/compute/brightbox.rb +++ b/lib/fog/compute/brightbox.rb @@ -88,7 +88,7 @@ module Fog class Real def initialize(options) - require "json" + require 'multi_json' # Currently authentication and api endpoints are the same but may change @auth_url = options[:brightbox_auth_url] || Fog.credentials[:brightbox_auth_url] || API_URL @api_url = options[:brightbox_api_url] || Fog.credentials[:brightbox_api_url] || API_URL @@ -106,7 +106,7 @@ module Fog response = authenticated_request(params) end unless response.body.empty? - response = JSON.parse(response.body) + response = ::MultiJson.decode(response.body) end end @@ -131,7 +131,7 @@ module Fog :method => 'POST', :body => @authentication_body }) - @oauth_token = JSON.parse(response.body)["access_token"] + @oauth_token = ::MultiJson.decode(response.body)["access_token"] return @oauth_token end diff --git a/lib/fog/compute/go_grid.rb b/lib/fog/compute/go_grid.rb index e3eb0a6fa..3601d0700 100644 --- a/lib/fog/compute/go_grid.rb +++ b/lib/fog/compute/go_grid.rb @@ -58,7 +58,7 @@ module Fog def initialize(options={}) require 'digest/md5' - require 'json' + require 'multi_json' @go_grid_api_key = options[:go_grid_api_key] @go_grid_shared_secret = options[:go_grid_shared_secret] @host = options[:host] || "api.gogrid.com" @@ -100,7 +100,7 @@ module Fog end unless response.body.empty? - response.body = JSON.parse(response.body) + response.body = ::MultiJson.decode(response.body) end response diff --git a/lib/fog/compute/linode.rb b/lib/fog/compute/linode.rb index ef9ffc84f..f834596a2 100644 --- a/lib/fog/compute/linode.rb +++ b/lib/fog/compute/linode.rb @@ -77,7 +77,7 @@ module Fog class Real def initialize(options={}) - require 'json' + require 'multi_json' @linode_api_key = options[:linode_api_key] @host = options[:host] || "api.linode.com" @port = options[:port] || 443 @@ -96,7 +96,7 @@ module Fog response = @connection.request(params.merge!({:host => @host})) unless response.body.empty? - response.body = JSON.parse(response.body) + response.body = ::MultiJson.decode(response.body) if data = response.body['ERRORARRAY'].first error = case data['ERRORCODE'] when 5 diff --git a/lib/fog/compute/models/aws/server.rb b/lib/fog/compute/models/aws/server.rb index a931f8b44..b2ef5c1cc 100644 --- a/lib/fog/compute/models/aws/server.rb +++ b/lib/fog/compute/models/aws/server.rb @@ -172,7 +172,7 @@ module Fog def setup(credentials = {}) requires :identity, :public_ip_address, :username - require 'json' + require 'multi_json' commands = [ %{mkdir .ssh}, diff --git a/lib/fog/compute/ninefold.rb b/lib/fog/compute/ninefold.rb index 3e321c43d..d7b89de64 100644 --- a/lib/fog/compute/ninefold.rb +++ b/lib/fog/compute/ninefold.rb @@ -60,7 +60,7 @@ module Fog class Mock def initialize(options) - require "json" + require 'multi_json' @api_url = options[:ninefold_api_url] || Fog.credentials[:ninefold_api_url] || API_URL @ninefold_compute_key = options[:ninefold_compute_key] || Fog.credentials[:ninefold_compute_key] @@ -76,7 +76,7 @@ module Fog class Real def initialize(options) - require "json" + require 'multi_json' @api_url = options[:ninefold_api_url] || Fog.credentials[:ninefold_api_url] || API_URL @ninefold_compute_key = options[:ninefold_compute_key] || Fog.credentials[:ninefold_compute_key] @@ -104,7 +104,7 @@ module Fog # Because the response is some weird xml-json thing, we need to try and mung # the values out with a prefix, and if there is an empty data entry return an # empty version of the expected type (if provided) - response = JSON.parse(response.body) + response = ::MultiJson.decode(response.body) if options.has_key? :response_prefix keys = options[:response_prefix].split('/') keys.each do |k| diff --git a/lib/fog/compute/rackspace.rb b/lib/fog/compute/rackspace.rb index dede43ed4..11295a3a8 100644 --- a/lib/fog/compute/rackspace.rb +++ b/lib/fog/compute/rackspace.rb @@ -58,7 +58,7 @@ module Fog end def initialize(options={}) - require 'json' + require 'multi_json' @rackspace_username = options[:rackspace_username] end @@ -75,7 +75,7 @@ module Fog class Real def initialize(options={}) - require 'json' + require 'multi_json' @rackspace_api_key = options[:rackspace_api_key] @rackspace_username = options[:rackspace_username] @rackspace_auth_url = options[:rackspace_auth_url] @@ -120,7 +120,7 @@ module Fog end end unless response.body.empty? - response.body = JSON.parse(response.body) + response.body = ::MultiJson.decode(response.body) end response end diff --git a/lib/fog/compute/storm_on_demand.rb b/lib/fog/compute/storm_on_demand.rb index 0c98e6f1f..cb88317cd 100644 --- a/lib/fog/compute/storm_on_demand.rb +++ b/lib/fog/compute/storm_on_demand.rb @@ -82,7 +82,7 @@ module Fog class Real def initialize(options={}) - require 'json' + require 'multi_json' uri = URI.parse(options[:storm_on_demand_auth_url] ||= API_URL) @host = uri.host @path = uri.path @@ -118,7 +118,7 @@ module Fog end end unless response.body.empty? - response.body = JSON.parse(response.body) + response.body = ::MultiJson.decode(response.body) end if response.body.keys.include?('full_error') raise(Fog::Compute::StormOnDemand::Error, response.body.inspect) diff --git a/lib/fog/core/collection.rb b/lib/fog/core/collection.rb index 0af9d33e3..15d6f26e0 100644 --- a/lib/fog/core/collection.rb +++ b/lib/fog/core/collection.rb @@ -116,7 +116,7 @@ module Fog end def to_json(options = {}) - require 'json' + require 'multi_json' self.map {|member| member.attributes}.to_json(options) end diff --git a/lib/fog/core/model.rb b/lib/fog/core/model.rb index c663e97c3..fd5531265 100644 --- a/lib/fog/core/model.rb +++ b/lib/fog/core/model.rb @@ -38,7 +38,7 @@ module Fog end def to_json(options = {}) - require 'json' + require 'multi_json' attributes.to_json(options) end diff --git a/lib/fog/dns/dnsimple.rb b/lib/fog/dns/dnsimple.rb index 3c536facf..c6fdd878c 100644 --- a/lib/fog/dns/dnsimple.rb +++ b/lib/fog/dns/dnsimple.rb @@ -52,7 +52,7 @@ module Fog class Real def initialize(options={}) - require 'json' + require 'multi_json' @dnsimple_email = options[:dnsimple_email] @dnsimple_password = options[:dnsimple_password] @@ -82,7 +82,7 @@ module Fog response = @connection.request(params.merge!({:host => @host})) unless response.body.empty? - response.body = JSON.parse(response.body) + response.body = ::MultiJson.decode(response.body) end response end diff --git a/lib/fog/dns/dnsmadeeasy.rb b/lib/fog/dns/dnsmadeeasy.rb index e31e7752f..08ceb9c86 100644 --- a/lib/fog/dns/dnsmadeeasy.rb +++ b/lib/fog/dns/dnsmadeeasy.rb @@ -77,7 +77,7 @@ module Fog # * dns object with connection to aws. def initialize(options={}) require 'fog/core/parser' - require 'json' + require 'multi_json' @dnsmadeeasy_api_key = options[:dnsmadeeasy_api_key] @dnsmadeeasy_secret_key = options[:dnsmadeeasy_secret_key] @@ -117,7 +117,7 @@ module Fog end unless response.body.empty? - response.body = JSON.parse(response.body) + response.body = ::MultiJson.decode(response.body) end response diff --git a/lib/fog/dns/linode.rb b/lib/fog/dns/linode.rb index 48f5c1ade..25e1cce82 100644 --- a/lib/fog/dns/linode.rb +++ b/lib/fog/dns/linode.rb @@ -50,7 +50,7 @@ module Fog class Real def initialize(options={}) - require 'json' + require 'multi_json' @linode_api_key = options[:linode_api_key] @host = options[:host] || "api.linode.com" @port = options[:port] || 443 @@ -69,7 +69,7 @@ module Fog response = @connection.request(params.merge!({:host => @host})) unless response.body.empty? - response.body = JSON.parse(response.body) + response.body = ::MultiJson.decode(response.body) if data = response.body['ERRORARRAY'].first error = case data['ERRORCODE'] when 5 diff --git a/lib/fog/storage/rackspace.rb b/lib/fog/storage/rackspace.rb index 49203b6b5..b77c90986 100644 --- a/lib/fog/storage/rackspace.rb +++ b/lib/fog/storage/rackspace.rb @@ -75,7 +75,7 @@ module Fog def initialize(options={}) require 'mime/types' - require 'json' + require 'multi_json' @rackspace_api_key = options[:rackspace_api_key] @rackspace_username = options[:rackspace_username] @rackspace_cdn_ssl = options[:rackspace_cdn_ssl] @@ -115,7 +115,7 @@ module Fog end end if !response.body.empty? && parse_json && response.headers['Content-Type'] =~ %r{application/json} - response.body = JSON.parse(response.body) + response.body = ::MultiJson.decode(response.body) end response end diff --git a/lib/fog/storage/requests/aws/get_bucket_policy.rb b/lib/fog/storage/requests/aws/get_bucket_policy.rb index 77d75d55d..f0d2e32ad 100644 --- a/lib/fog/storage/requests/aws/get_bucket_policy.rb +++ b/lib/fog/storage/requests/aws/get_bucket_policy.rb @@ -27,7 +27,7 @@ module Fog :method => 'GET', :query => {'policy' => nil} }) - response.body = JSON.parse(response.body) unless response.body.nil? + response.body = ::MultiJson.decode(response.body) unless response.body.nil? end end