module Fog
  module Terremark
    module Shared
      module Real

        # Get list of organizations
        #
        # ==== Returns
        # * response<~Excon::Response>:
        #   * body<~Array>:
        #     * 'description'<~String> - Description of organization
        #     * 'links'<~Array> - An array of links to entities in the organization
        #     * 'name'<~String> - Name of organization
        def get_organizations
          request({
            :expects  => 200,
            :headers  => {
              'Authorization' => "Basic #{Base64.encode64("#{@terremark_username}:#{@terremark_password}").chomp!}",
              # Terremark said they're going to remove passing in the Content-Type to login in a future release
              'Content-Type'  => "application/vnd.vmware.vcloud.orgList+xml"
            },
            :method   => 'POST',
            :parser   => Fog::Parsers::Terremark::Shared::GetOrganizations.new,
            :path     => 'login'
          })
        end

      end

      module Mock

        def get_organizations
          response = Excon::Response.new
          org_list = self.data[:organizations].map do |organization|
            { "name" => organization[:info][:name],
              "href" => "#{@base_url}/org/#{organization[:info][:id]}",
              "type" => "application/vnd.vmware.vcloud.org+xml"
            }
          end
          response.body = { "OrgList" => org_list }
          response.status = 200
          response.headers = Fog::Terremark::Shared::Mock.headers(response.body, "application/vnd.vmware.vcloud.orgList+xml")
          response
        end

      end
    end
  end
end
