lib/fog/storage/google_json/models/directory.rb in fog-google-0.6.0 vs lib/fog/storage/google_json/models/directory.rb in fog-google-1.0.0
- old
+ new
@@ -1,24 +1,41 @@
module Fog
module Storage
class GoogleJSON
+ ##
+ # Represents a Google Storage bucket
class Directory < Fog::Model
- identity :key, :aliases => %w(Name name)
+ identity :key, :aliases => ["Name", "name", :name]
- def acl=(new_acl)
- valid_acls = %w(private projectPrivate publicRead publicReadWrite authenticatedRead)
- unless valid_acls.include?(new_acl)
- raise ArgumentError.new("acl must be one of [#{valid_acls.join(', ')}]")
- end
- @acl = new_acl
- end
+ attribute :acl
+ attribute :billing
+ attribute :cors
+ attribute :default_object_acl, aliases => "defaultObjectAcl"
+ attribute :etag
+ attribute :id
+ attribute :kind
+ attribute :labels
+ attribute :lifecycle
+ attribute :location
+ attribute :logging
+ attribute :metageneration
+ attribute :name
+ attribute :owner
+ attribute :project_number, aliases => "projectNumber"
+ attribute :self_link, aliases => "selfLink"
+ attribute :storage_class, aliases => "storageClass"
+ attribute :time_created, aliases => "timeCreated"
+ attribute :updated
+ attribute :versioning
+ attribute :website
def destroy
requires :key
service.delete_bucket(key)
true
- rescue Fog::Errors::NotFound
+ rescue ::Google::Apis::ClientError => e
+ raise e unless e.status_code == 404
false
end
def files
@files ||= begin
@@ -27,37 +44,17 @@
:service => service
)
end
end
- def public=(new_public)
- if new_public
- @acl = "publicRead"
- else
- @acl = "private"
- end
- new_public
- end
-
def public_url
requires :key
- acl = service.get_bucket_acl(key).body
- if acl["items"].detect { |entry| entry["entity"] == "allUsers" && entry["role"] == "READER" }
- if key.to_s =~ /^(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/
- "https://#{key}.storage.googleapis.com"
- else
- "https://storage.googleapis.com/#{key}"
- end
- end
+ "#{GOOGLE_STORAGE_BUCKET_BASE_URL}#{key}"
end
def save
requires :key
- options = {}
- options["predefinedAcl"] = @acl if @acl
- options["LocationConstraint"] = @location if @location
- options["StorageClass"] = attributes[:storage_class] if attributes[:storage_class]
- service.put_bucket(key, options)
+ service.put_bucket(key, attributes)
true
end
end
end
end