use Fog::JSON

This commit is contained in:
Brian D. Burns 2013-06-14 01:55:07 -04:00
parent 297a78e900
commit 40e8f458f2
39 changed files with 47 additions and 63 deletions

View File

@ -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']

View File

@ -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

View File

@ -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

View File

@ -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
end

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
}

View File

@ -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'

View File

@ -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]

View File

@ -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'

View File

@ -35,7 +35,7 @@ module Fog
}
request(
:body => MultiJson.encode(data),
:body => Fog::JSON.encode(data),
:expects => 200,
:method => 'POST',
:path => 'flavors'

View File

@ -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'

View File

@ -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'

View File

@ -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

View File

@ -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"

View File

@ -14,7 +14,7 @@ module Fog
}
request(
:body => MultiJson.encode(data),
:body => Fog::JSON.encode(data),
:expects => [200, 202],
:method => 'POST',
:path => "os-snapshots"

View File

@ -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

View File

@ -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
}

View File

@ -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}"

View File

@ -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"

View File

@ -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'

View File

@ -15,7 +15,7 @@ module Fog
}
request(
:body => MultiJson.encode(data),
:body => Fog::JSON.encode(data),
:expects => [200, 202],
:method => 'POST',
:path => '/users'

View File

@ -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

View File

@ -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"

View File

@ -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)

View File

@ -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

View File

@ -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"

View File

@ -14,7 +14,7 @@ module Fog
}
request(
:body => MultiJson.encode(data),
:body => Fog::JSON.encode(data),
:expects => [200, 202],
:method => 'POST',
:path => "snapshots"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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]

View File

@ -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)