diff --git a/lib/fog/dreamhost/dns.rb b/lib/fog/dreamhost/dns.rb index 2dc8b4f07..d93279f48 100644 --- a/lib/fog/dreamhost/dns.rb +++ b/lib/fog/dreamhost/dns.rb @@ -47,8 +47,6 @@ module Fog class Real def initialize(options={}) - require 'multi_json' - @dreamhost_api_key = options[:dreamhost_api_key] if options[:dreamhost_url] uri = URI.parse(options[:dreamhost_url]) @@ -68,12 +66,12 @@ module Fog end def request(params) - params[:query].merge!( { :key => @dreamhost_api_key, + params[:query].merge!( { :key => @dreamhost_api_key, :format => 'json' } ) response = @connection.request(params) unless response.body.empty? - response.body = MultiJson.decode(response.body) + response.body = Fog::JSON.decode(response.body) end if response.body['result'] != 'success' raise response.body['data'] diff --git a/lib/fog/hp.rb b/lib/fog/hp.rb index 080eb1f05..f21d9c88d 100644 --- a/lib/fog/hp.rb +++ b/lib/fog/hp.rb @@ -26,7 +26,7 @@ module Fog if message.nil? and !data.values.first.nil? message = data.values.first['message'] end - rescue MultiJson::DecodeError + rescue Fog::JSON::DecodeError message = error.response.body #### body is not in JSON format, so just return as is end end diff --git a/lib/fog/json.rb b/lib/fog/json.rb index 6c25588fd..9429a451e 100644 --- a/lib/fog/json.rb +++ b/lib/fog/json.rb @@ -10,10 +10,9 @@ module Fog # The intent is to provide common code for provider APIs using JSON but not # require it for those using XML. # - # @todo Add +require "fog/json" and/or +include Fog::JSON+ to providers using - # its services - # module JSON + class EncodeError < Fog::Errors::Error; end + class DecodeError < Fog::Errors::Error; end def self.sanitize(data) case data @@ -35,10 +34,14 @@ module Fog def self.encode(obj) MultiJson.encode(obj) + rescue => err + raise EncodeError.slurp(err) end def self.decode(obj) MultiJson.decode(obj) + rescue => err + raise DecodeError.slurp(err) end end end diff --git a/lib/fog/openstack/identity.rb b/lib/fog/openstack/identity.rb index e94a4d45d..ce43a4074 100644 --- a/lib/fog/openstack/identity.rb +++ b/lib/fog/openstack/identity.rb @@ -95,7 +95,6 @@ module Fog end def initialize(options={}) - require 'multi_json' @openstack_username = options[:openstack_username] || 'admin' @openstack_tenant = options[:openstack_tenant] || 'admin' @openstack_auth_uri = URI.parse(options[:openstack_auth_url]) @@ -245,7 +244,7 @@ module Fog end end unless response.body.empty? - response.body = MultiJson.decode(response.body) + response.body = Fog::JSON.decode(response.body) end response end @@ -292,4 +291,4 @@ module Fog end end end -end \ No newline at end of file +end diff --git a/lib/fog/openstack/image.rb b/lib/fog/openstack/image.rb index 57e5ceebc..147d69f15 100644 --- a/lib/fog/openstack/image.rb +++ b/lib/fog/openstack/image.rb @@ -46,7 +46,6 @@ module Fog end def initialize(options={}) - require 'multi_json' @openstack_username = options[:openstack_username] @openstack_tenant = options[:openstack_tenant] @openstack_auth_uri = URI.parse(options[:openstack_auth_url]) @@ -94,8 +93,6 @@ module Fog attr_reader :current_tenant def initialize(options={}) - require 'multi_json' - @openstack_auth_token = options[:openstack_auth_token] unless @openstack_auth_token @@ -167,7 +164,7 @@ module Fog end end unless response.body.empty? - response.body = MultiJson.decode(response.body) + response.body = Fog::JSON.decode(response.body) end response end diff --git a/lib/fog/openstack/metering.rb b/lib/fog/openstack/metering.rb index c2c41504f..65edbeedf 100644 --- a/lib/fog/openstack/metering.rb +++ b/lib/fog/openstack/metering.rb @@ -43,7 +43,6 @@ module Fog end def initialize(options={}) - require 'multi_json' @openstack_username = options[:openstack_username] @openstack_tenant = options[:openstack_tenant] @openstack_auth_uri = URI.parse(options[:openstack_auth_url]) @@ -90,8 +89,6 @@ module Fog attr_reader :current_tenant def initialize(options={}) - require 'multi_json' - @openstack_auth_token = options[:openstack_auth_token] unless @openstack_auth_token @@ -165,7 +162,7 @@ module Fog end end unless response.body.empty? - response.body = MultiJson.decode(response.body) + response.body = Fog::JSON.decode(response.body) end response end diff --git a/lib/fog/openstack/network.rb b/lib/fog/openstack/network.rb index 2c36ec11d..e62e7a823 100644 --- a/lib/fog/openstack/network.rb +++ b/lib/fog/openstack/network.rb @@ -179,8 +179,6 @@ module Fog attr_reader :current_tenant def initialize(options={}) - require 'multi_json' - @openstack_auth_token = options[:openstack_auth_token] unless @openstack_auth_token @@ -254,7 +252,7 @@ module Fog end end unless response.body.empty? - response.body = MultiJson.decode(response.body) + response.body = Fog::JSON.decode(response.body) end response end diff --git a/lib/fog/openstack/requests/compute/add_flavor_access.rb b/lib/fog/openstack/requests/compute/add_flavor_access.rb index 62ad70492..1e45ddf72 100644 --- a/lib/fog/openstack/requests/compute/add_flavor_access.rb +++ b/lib/fog/openstack/requests/compute/add_flavor_access.rb @@ -4,7 +4,7 @@ module Fog class Real def add_flavor_access(flavor_ref, tenant_id) request( - :body => MultiJson.encode({ + :body => Fog::JSON.encode({ "addTenantAccess" => { "tenant" => tenant_id } diff --git a/lib/fog/openstack/requests/compute/allocate_address.rb b/lib/fog/openstack/requests/compute/allocate_address.rb index a86f25662..5d1cb4085 100644 --- a/lib/fog/openstack/requests/compute/allocate_address.rb +++ b/lib/fog/openstack/requests/compute/allocate_address.rb @@ -6,7 +6,7 @@ module Fog def allocate_address(pool = nil) request( - :body => MultiJson.encode({'pool' => pool}), + :body => Fog::JSON.encode({'pool' => pool}), :expects => [200, 202], :method => 'POST', :path => 'os-floating-ips.json' diff --git a/lib/fog/openstack/requests/compute/attach_volume.rb b/lib/fog/openstack/requests/compute/attach_volume.rb index f29a45d9d..3a45abaa3 100644 --- a/lib/fog/openstack/requests/compute/attach_volume.rb +++ b/lib/fog/openstack/requests/compute/attach_volume.rb @@ -11,7 +11,7 @@ module Fog } } request( - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :expects => [200, 202], :method => 'POST', :path => "servers/%s/os-volume_attachments" % [server_id] diff --git a/lib/fog/openstack/requests/compute/boot_from_snapshot.rb b/lib/fog/openstack/requests/compute/boot_from_snapshot.rb index 7911239d1..a79fb0d81 100644 --- a/lib/fog/openstack/requests/compute/boot_from_snapshot.rb +++ b/lib/fog/openstack/requests/compute/boot_from_snapshot.rb @@ -29,7 +29,7 @@ module Fog end request( - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :expects => [200, 202], :method => 'POST', :path => '/os-volumes_boot.json' diff --git a/lib/fog/openstack/requests/compute/create_flavor.rb b/lib/fog/openstack/requests/compute/create_flavor.rb index 7d8fd924f..bd9166770 100644 --- a/lib/fog/openstack/requests/compute/create_flavor.rb +++ b/lib/fog/openstack/requests/compute/create_flavor.rb @@ -35,7 +35,7 @@ module Fog } request( - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :expects => 200, :method => 'POST', :path => 'flavors' diff --git a/lib/fog/openstack/requests/compute/create_key_pair.rb b/lib/fog/openstack/requests/compute/create_key_pair.rb index e8a601ab0..e53efb9cf 100644 --- a/lib/fog/openstack/requests/compute/create_key_pair.rb +++ b/lib/fog/openstack/requests/compute/create_key_pair.rb @@ -14,7 +14,7 @@ module Fog data['keypair']['public_key'] = public_key unless public_key.nil? request( - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :expects => 200, :method => 'POST', :path => 'os-keypairs.json' diff --git a/lib/fog/openstack/requests/compute/create_security_group.rb b/lib/fog/openstack/requests/compute/create_security_group.rb index 10fd45915..1a266e12c 100644 --- a/lib/fog/openstack/requests/compute/create_security_group.rb +++ b/lib/fog/openstack/requests/compute/create_security_group.rb @@ -12,7 +12,7 @@ module Fog } request( - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :expects => 200, :method => 'POST', :path => 'os-security-groups.json' diff --git a/lib/fog/openstack/requests/compute/create_security_group_rule.rb b/lib/fog/openstack/requests/compute/create_security_group_rule.rb index 84d3e5f6a..1903902ab 100644 --- a/lib/fog/openstack/requests/compute/create_security_group_rule.rb +++ b/lib/fog/openstack/requests/compute/create_security_group_rule.rb @@ -18,7 +18,7 @@ module Fog request( :expects => 200, :method => 'POST', - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :path => 'os-security-group-rules.json' ) end diff --git a/lib/fog/openstack/requests/compute/create_volume.rb b/lib/fog/openstack/requests/compute/create_volume.rb index c18003fd2..82906c0d1 100644 --- a/lib/fog/openstack/requests/compute/create_volume.rb +++ b/lib/fog/openstack/requests/compute/create_volume.rb @@ -17,7 +17,7 @@ module Fog data['volume'][key] = options[key] end request( - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :expects => [200, 202], :method => 'POST', :path => "os-volumes" diff --git a/lib/fog/openstack/requests/compute/create_volume_snapshot.rb b/lib/fog/openstack/requests/compute/create_volume_snapshot.rb index c5f9a9e47..f2e1ced98 100644 --- a/lib/fog/openstack/requests/compute/create_volume_snapshot.rb +++ b/lib/fog/openstack/requests/compute/create_volume_snapshot.rb @@ -14,7 +14,7 @@ module Fog } request( - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :expects => [200, 202], :method => 'POST', :path => "os-snapshots" diff --git a/lib/fog/openstack/requests/compute/list_tenants.rb b/lib/fog/openstack/requests/compute/list_tenants.rb index d840ebe57..ae37267ed 100644 --- a/lib/fog/openstack/requests/compute/list_tenants.rb +++ b/lib/fog/openstack/requests/compute/list_tenants.rb @@ -11,7 +11,7 @@ module Fog :method => 'GET', :path => '/v2.0/tenants' }) - response.body = MultiJson.decode(response.body) + response.body = Fog::JSON.decode(response.body) response end end diff --git a/lib/fog/openstack/requests/compute/remove_flavor_access.rb b/lib/fog/openstack/requests/compute/remove_flavor_access.rb index dae699fed..7f55e44d7 100644 --- a/lib/fog/openstack/requests/compute/remove_flavor_access.rb +++ b/lib/fog/openstack/requests/compute/remove_flavor_access.rb @@ -4,7 +4,7 @@ module Fog class Real def remove_flavor_access(flavor_ref, tenant_id) request( - :body => MultiJson.encode({ + :body => Fog::JSON.encode({ "removeTenantAccess" => { "tenant" => tenant_id.to_s } diff --git a/lib/fog/openstack/requests/compute/update_quota.rb b/lib/fog/openstack/requests/compute/update_quota.rb index f5217d490..51f59b296 100644 --- a/lib/fog/openstack/requests/compute/update_quota.rb +++ b/lib/fog/openstack/requests/compute/update_quota.rb @@ -6,7 +6,7 @@ module Fog def update_quota(tenant_id, options = {}) options['tenant_id'] = tenant_id request( - :body => MultiJson.encode({ 'quota_set' => options }), + :body => Fog::JSON.encode({ 'quota_set' => options }), :expects => 200, :method => 'PUT', :path => "/os-quota-sets/#{tenant_id}" diff --git a/lib/fog/openstack/requests/identity/create_ec2_credential.rb b/lib/fog/openstack/requests/identity/create_ec2_credential.rb index 2bf9e24a3..dc20e9896 100644 --- a/lib/fog/openstack/requests/identity/create_ec2_credential.rb +++ b/lib/fog/openstack/requests/identity/create_ec2_credential.rb @@ -26,7 +26,7 @@ module Fog data = { 'tenant_id' => tenant_id } request( - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :expects => [200, 202], :method => 'POST', :path => "users/#{user_id}/credentials/OS-EC2" diff --git a/lib/fog/openstack/requests/identity/create_role.rb b/lib/fog/openstack/requests/identity/create_role.rb index 1223128e3..79c25a66c 100644 --- a/lib/fog/openstack/requests/identity/create_role.rb +++ b/lib/fog/openstack/requests/identity/create_role.rb @@ -10,7 +10,7 @@ module Fog } request( - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :expects => [200, 202], :method => 'POST', :path => '/OS-KSADM/roles' diff --git a/lib/fog/openstack/requests/identity/create_user.rb b/lib/fog/openstack/requests/identity/create_user.rb index 1e0104898..c4996af8b 100644 --- a/lib/fog/openstack/requests/identity/create_user.rb +++ b/lib/fog/openstack/requests/identity/create_user.rb @@ -15,7 +15,7 @@ module Fog } request( - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :expects => [200, 202], :method => 'POST', :path => '/users' diff --git a/lib/fog/openstack/requests/identity/update_user.rb b/lib/fog/openstack/requests/identity/update_user.rb index 4a11bd44d..a1f8fbab1 100644 --- a/lib/fog/openstack/requests/identity/update_user.rb +++ b/lib/fog/openstack/requests/identity/update_user.rb @@ -6,7 +6,7 @@ module Fog def update_user(user_id, options = {}) url = options.delete('url') || "/users/#{user_id}" request( - :body => MultiJson.encode({ 'user' => options }), + :body => Fog::JSON.encode({ 'user' => options }), :expects => 200, :method => 'PUT', :path => url diff --git a/lib/fog/openstack/requests/image/update_image_members.rb b/lib/fog/openstack/requests/image/update_image_members.rb index a7010fd61..741cf9ad1 100644 --- a/lib/fog/openstack/requests/image/update_image_members.rb +++ b/lib/fog/openstack/requests/image/update_image_members.rb @@ -11,7 +11,7 @@ module Fog data = { 'memberships' => members } request( - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :expects => [200, 202], :method => 'PUT', :path => "images/#{image_id}/members" diff --git a/lib/fog/openstack/requests/orchestration/create_stack.rb b/lib/fog/openstack/requests/orchestration/create_stack.rb index 3deca4bac..ade690582 100644 --- a/lib/fog/openstack/requests/orchestration/create_stack.rb +++ b/lib/fog/openstack/requests/orchestration/create_stack.rb @@ -25,12 +25,12 @@ module Fog :expects => 201, :path => 'stacks', :method => 'POST', - :body => MultiJson.encode(params) + :body => Fog::JSON.encode(params) ) end end - + class Mock def create_stack(stack_name, options = {}) stack_id = Fog::Mock.random_hex(32) diff --git a/lib/fog/openstack/requests/orchestration/update_stack.rb b/lib/fog/openstack/requests/orchestration/update_stack.rb index eeccfaf26..f54892b6e 100644 --- a/lib/fog/openstack/requests/orchestration/update_stack.rb +++ b/lib/fog/openstack/requests/orchestration/update_stack.rb @@ -22,7 +22,7 @@ module Fog :expects => 202, :path => "stacks/#{stack_name}/#{stack_id}", :method => 'PUT', - :body => MultiJson.encode(params) + :body => Fog::JSON.encode(params) ) end diff --git a/lib/fog/openstack/requests/volume/create_volume.rb b/lib/fog/openstack/requests/volume/create_volume.rb index 62e01080a..3ccf4fd61 100644 --- a/lib/fog/openstack/requests/volume/create_volume.rb +++ b/lib/fog/openstack/requests/volume/create_volume.rb @@ -18,7 +18,7 @@ module Fog data['volume'][key] = options[key] end request( - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :expects => [200, 202], :method => 'POST', :path => "volumes" diff --git a/lib/fog/openstack/requests/volume/create_volume_snapshot.rb b/lib/fog/openstack/requests/volume/create_volume_snapshot.rb index 1d202eb04..ada07c8e9 100644 --- a/lib/fog/openstack/requests/volume/create_volume_snapshot.rb +++ b/lib/fog/openstack/requests/volume/create_volume_snapshot.rb @@ -14,7 +14,7 @@ module Fog } request( - :body => MultiJson.encode(data), + :body => Fog::JSON.encode(data), :expects => [200, 202], :method => 'POST', :path => "snapshots" diff --git a/lib/fog/openstack/volume.rb b/lib/fog/openstack/volume.rb index 418fbfc41..71840c9a9 100644 --- a/lib/fog/openstack/volume.rb +++ b/lib/fog/openstack/volume.rb @@ -61,7 +61,6 @@ module Fog end def initialize(options={}) - require 'multi_json' @openstack_username = options[:openstack_username] @openstack_tenant = options[:openstack_tenant] @openstack_auth_uri = URI.parse(options[:openstack_auth_url]) @@ -108,8 +107,6 @@ module Fog attr_reader :current_tenant def initialize(options={}) - require 'multi_json' - @openstack_auth_token = options[:openstack_auth_token] unless @openstack_auth_token @@ -181,7 +178,7 @@ module Fog end end unless response.body.empty? - response.body = MultiJson.decode(response.body) + response.body = Fog::JSON.decode(response.body) end response end diff --git a/lib/fog/rackspace/service.rb b/lib/fog/rackspace/service.rb index 1e6b51cdc..27754eac7 100644 --- a/lib/fog/rackspace/service.rb +++ b/lib/fog/rackspace/service.rb @@ -66,7 +66,7 @@ module Fog Fog::Rackspace.json_response?(response) begin response.body = Fog::JSON.decode(response.body) - rescue MultiJson::DecodeError => e + rescue Fog::JSON::DecodeError => e Fog::Logger.warning("Error Parsing response json - #{e}") response.body = {} end diff --git a/lib/fog/riakcs.rb b/lib/fog/riakcs.rb index d7e8e70b5..9d1d13324 100644 --- a/lib/fog/riakcs.rb +++ b/lib/fog/riakcs.rb @@ -71,9 +71,9 @@ module Fog module UserUtils def update_riakcs_user(key_id, user) - response = @s3_connection.put_object('riak-cs', "user/#{key_id}", MultiJson.encode(user), { 'Content-Type' => 'application/json' }) + response = @s3_connection.put_object('riak-cs', "user/#{key_id}", Fog::JSON.encode(user), { 'Content-Type' => 'application/json' }) if !response.body.empty? - response.body = MultiJson.decode(response.body) + response.body = Fog::JSON.decode(response.body) end response end diff --git a/lib/fog/riakcs/provisioning.rb b/lib/fog/riakcs/provisioning.rb index eecb8b35d..bcb2fcb76 100644 --- a/lib/fog/riakcs/provisioning.rb +++ b/lib/fog/riakcs/provisioning.rb @@ -47,8 +47,6 @@ module Fog include Utils def initialize(options = {}) - require 'multi_json' - configure_uri_options(options) @riakcs_access_key_id = options[:riakcs_access_key_id] @riakcs_secret_access_key = options[:riakcs_secret_access_key] @@ -89,7 +87,7 @@ module Fog end end if !response.body.empty? && parse_response - response.body = MultiJson.decode(response.body) + response.body = Fog::JSON.decode(response.body) end response end diff --git a/lib/fog/riakcs/requests/provisioning/create_user.rb b/lib/fog/riakcs/requests/provisioning/create_user.rb index b98fd9dc3..969331460 100644 --- a/lib/fog/riakcs/requests/provisioning/create_user.rb +++ b/lib/fog/riakcs/requests/provisioning/create_user.rb @@ -3,7 +3,7 @@ module Fog class Provisioning class Real def create_user(email, name, options = {}) - payload = MultiJson.encode({ :email => email, :name => name }) + payload = Fog::JSON.encode({ :email => email, :name => name }) headers = { 'Content-Type' => 'application/json' } if(options[:anonymous]) @@ -20,7 +20,7 @@ module Fog if !response.body.empty? case response.headers['Content-Type'] when 'application/json' - response.body = MultiJson.decode(response.body) + response.body = Fog::JSON.decode(response.body) end end response diff --git a/lib/fog/riakcs/requests/provisioning/get_user.rb b/lib/fog/riakcs/requests/provisioning/get_user.rb index 793dca95a..914861d7b 100644 --- a/lib/fog/riakcs/requests/provisioning/get_user.rb +++ b/lib/fog/riakcs/requests/provisioning/get_user.rb @@ -7,7 +7,7 @@ module Fog def get_user(key_id) response = @s3_connection.get_object('riak-cs', "user/#{key_id}", { 'Accept' => 'application/json' }) - response.body = MultiJson.decode(response.body) + response.body = Fog::JSON.decode(response.body) response end end diff --git a/lib/fog/riakcs/requests/provisioning/list_users.rb b/lib/fog/riakcs/requests/provisioning/list_users.rb index c747b8b2d..cd3a2dba6 100644 --- a/lib/fog/riakcs/requests/provisioning/list_users.rb +++ b/lib/fog/riakcs/requests/provisioning/list_users.rb @@ -10,7 +10,7 @@ module Fog boundary = extract_boundary(response.headers['Content-Type']) parts = parse(response.body, boundary) - decoded = parts.map { |part| MultiJson.decode(part[:body]) } + decoded = parts.map { |part| Fog::JSON.decode(part[:body]) } response.body = decoded.flatten diff --git a/lib/fog/riakcs/requests/usage/get_usage.rb b/lib/fog/riakcs/requests/usage/get_usage.rb index ee35357ed..78be7f797 100644 --- a/lib/fog/riakcs/requests/usage/get_usage.rb +++ b/lib/fog/riakcs/requests/usage/get_usage.rb @@ -37,7 +37,7 @@ module Fog response = @connection.get_object('riak-cs', ["usage", request_uri(access_key_id, options)].join("/")) if !response.body.empty? - response.body = MultiJson.decode(response.body) + response.body = Fog::JSON.decode(response.body) end response end diff --git a/lib/fog/riakcs/usage.rb b/lib/fog/riakcs/usage.rb index cfa815fa3..e15c6b5bb 100644 --- a/lib/fog/riakcs/usage.rb +++ b/lib/fog/riakcs/usage.rb @@ -41,8 +41,6 @@ module Fog include Utils def initialize(options = {}) - require 'multi_json' - configure_uri_options(options) @riakcs_access_key_id = options[:riakcs_access_key_id] @riakcs_secret_access_key = options[:riakcs_secret_access_key] diff --git a/lib/tasks/changelog_task.rb b/lib/tasks/changelog_task.rb index d16c33616..05987497e 100644 --- a/lib/tasks/changelog_task.rb +++ b/lib/tasks/changelog_task.rb @@ -14,7 +14,6 @@ module Fog changelog << ('=' * changelog[0].length) changelog << '' - require 'multi_json' github_repo_data = Fog::JSON.decode(Excon.get('https://api.github.com/repos/fog/fog', :headers => {'User-Agent' => 'geemus'}).body) data = github_repo_data.reject {|key, value| !['forks', 'open_issues', 'watchers'].include?(key)} github_collaborator_data = Fog::JSON.decode(Excon.get('https://api.github.com/repos/fog/fog/collaborators', :headers => {'User-Agent' => 'geemus'}).body)