Class: Fog::Storage::InternetArchive

Inherits:
Fog::Service show all
Defined in:
lib/fog/internet_archive/storage.rb,
lib/fog/internet_archive/models/storage/file.rb,
lib/fog/internet_archive/models/storage/files.rb,
lib/fog/internet_archive/models/storage/directory.rb,
lib/fog/internet_archive/models/storage/directories.rb,
lib/fog/internet_archive/requests/storage/acl_utils.rb,
lib/fog/internet_archive/requests/storage/cors_utils.rb,
lib/fog/internet_archive/requests/storage/get_bucket.rb,
lib/fog/internet_archive/requests/storage/get_object.rb,
lib/fog/internet_archive/requests/storage/list_parts.rb,
lib/fog/internet_archive/requests/storage/put_bucket.rb,
lib/fog/internet_archive/requests/storage/put_object.rb,
lib/fog/internet_archive/requests/storage/sync_clock.rb,
lib/fog/internet_archive/requests/storage/copy_object.rb,
lib/fog/internet_archive/requests/storage/get_service.rb,
lib/fog/internet_archive/requests/storage/head_object.rb,
lib/fog/internet_archive/requests/storage/upload_part.rb,
lib/fog/internet_archive/requests/storage/delete_bucket.rb,
lib/fog/internet_archive/requests/storage/delete_object.rb,
lib/fog/internet_archive/requests/storage/get_bucket_acl.rb,
lib/fog/internet_archive/requests/storage/get_object_acl.rb,
lib/fog/internet_archive/requests/storage/get_object_url.rb,
lib/fog/internet_archive/requests/storage/put_bucket_acl.rb,
lib/fog/internet_archive/requests/storage/put_object_acl.rb,
lib/fog/internet_archive/requests/storage/put_object_url.rb,
lib/fog/internet_archive/requests/storage/get_bucket_cors.rb,
lib/fog/internet_archive/requests/storage/put_bucket_cors.rb,
lib/fog/internet_archive/requests/storage/get_bucket_policy.rb,
lib/fog/internet_archive/requests/storage/put_bucket_policy.rb,
lib/fog/internet_archive/requests/storage/delete_bucket_cors.rb,
lib/fog/internet_archive/requests/storage/get_bucket_logging.rb,
lib/fog/internet_archive/requests/storage/get_bucket_website.rb,
lib/fog/internet_archive/requests/storage/get_object_torrent.rb,
lib/fog/internet_archive/requests/storage/put_bucket_logging.rb,
lib/fog/internet_archive/requests/storage/put_bucket_website.rb,
lib/fog/internet_archive/requests/storage/get_bucket_location.rb,
lib/fog/internet_archive/requests/storage/get_object_http_url.rb,
lib/fog/internet_archive/requests/storage/get_request_payment.rb,
lib/fog/internet_archive/requests/storage/put_request_payment.rb,
lib/fog/internet_archive/requests/storage/delete_bucket_policy.rb,
lib/fog/internet_archive/requests/storage/get_bucket_lifecycle.rb,
lib/fog/internet_archive/requests/storage/get_object_https_url.rb,
lib/fog/internet_archive/requests/storage/put_bucket_lifecycle.rb,
lib/fog/internet_archive/requests/storage/delete_bucket_website.rb,
lib/fog/internet_archive/requests/storage/abort_multipart_upload.rb,
lib/fog/internet_archive/requests/storage/list_multipart_uploads.rb,
lib/fog/internet_archive/requests/storage/delete_bucket_lifecycle.rb,
lib/fog/internet_archive/requests/storage/delete_multiple_objects.rb,
lib/fog/internet_archive/requests/storage/complete_multipart_upload.rb,
lib/fog/internet_archive/requests/storage/initiate_multipart_upload.rb,
lib/fog/internet_archive/requests/storage/post_object_hidden_fields.rb

Defined Under Namespace

Modules: GetObjectHttpUrl, GetObjectHttpsUrl, GetObjectUrl, PutObjectUrl, Utils Classes: Directories, Directory, File, Files, Mock, Real

Class Method Summary collapse

Methods inherited from Fog::Service

coerce_options, collection, collections, fetch_credentials, inherited, mocked_requests, model, model_path, models, new, recognized, recognizes, request, request_path, requests, requirements, requires, secrets, setup_requirements, validate_options

Class Method Details

.acl_to_hash(acl_xml) ⇒ Object



54
55
56
57
58
# File 'lib/fog/internet_archive/requests/storage/acl_utils.rb', line 54

def self.acl_to_hash(acl_xml)
  parser = Fog::Parsers::Storage::InternetArchive::AccessControlList.new
  Nokogiri::XML::SAX::Parser.new(parser).parse(acl_xml)
  parser.response
end

.cors_to_hash(cors_xml) ⇒ Object



33
34
35
36
37
# File 'lib/fog/internet_archive/requests/storage/cors_utils.rb', line 33

def self.cors_to_hash(cors_xml)
  parser = Fog::Parsers::Storage::InternetArchive::CorsConfiguration.new
  Nokogiri::XML::SAX::Parser.new(parser).parse(cors_xml)
  parser.response
end

.hash_to_acl(acl) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/fog/internet_archive/requests/storage/acl_utils.rb', line 8

def self.hash_to_acl(acl)
  data =  "<AccessControlPolicy>\n"

  if acl['Owner'] && (acl['Owner']['ID'] || acl['Owner']['DisplayName'])
    data << "  <Owner>\n"
    data << "    <ID>#{acl['Owner']['ID']}</ID>\n" if acl['Owner']['ID']
    data << "    <DisplayName>#{acl['Owner']['DisplayName']}</DisplayName>\n" if acl['Owner']['DisplayName']
    data << "  </Owner>\n"
  end

  grants = [acl['AccessControlList']].flatten.compact

  data << "  <AccessControlList>\n" if grants.any?
  grants.each do |grant|
    data << "    <Grant>\n"
    grantee = grant['Grantee']
    type = case
    when grantee.has_key?('ID')
      'CanonicalUser'
    when grantee.has_key?('EmailAddress')
      'AmazonCustomerByEmail'
    when grantee.has_key?('URI')
      'Group'
    end

    data << "      <Grantee xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"#{type}\">\n"
    case type
    when 'CanonicalUser'
      data << "        <ID>#{grantee['ID']}</ID>\n" if grantee['ID']
      data << "        <DisplayName>#{grantee['DisplayName']}</DisplayName>\n" if grantee['DisplayName']
    when 'AmazonCustomerByEmail'
      data << "        <EmailAddress>#{grantee['EmailAddress']}</EmailAddress>\n" if grantee['EmailAddress']
    when 'Group'
      data << "        <URI>#{grantee['URI']}</URI>\n" if grantee['URI']
    end
    data << "      </Grantee>\n"
    data << "      <Permission>#{grant['Permission']}</Permission>\n"
    data << "    </Grant>\n"
  end
  data << "  </AccessControlList>\n" if grants.any?

  data << "</AccessControlPolicy>"

  data
end

.hash_to_cors(cors) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/fog/internet_archive/requests/storage/cors_utils.rb', line 9

def self.hash_to_cors(cors)
  data =  "<CORSConfiguration>\n"

  [cors['CORSConfiguration']].flatten.compact.each do |rule|
    data << "  <CORSRule>\n"

    ['ID', 'MaxAgeSeconds'].each do |key|
      data << "    <#{key}>#{rule[key]}</#{key}>\n" if rule[key]
    end

    ['AllowedOrigin', 'AllowedMethod', 'AllowedHeader', 'ExposeHeader'].each do |key|
      [rule[key]].flatten.compact.each do |value|
        data << "    <#{key}>#{value}</#{key}>\n"
      end
    end

    data << "  </CORSRule>\n"
  end

  data << "</CORSConfiguration>"

  data
end