Sha256: 7057abb6f4cb5fdc636c942464705ceecf6265e56b59575ca7131673a6c755e4

Contents?: true

Size: 1.16 KB

Versions: 5

Compression:

Stored size: 1.16 KB

Contents

module GoodData
  class ProjectMetadata

    class << self

      def keys
        ProjectMetadata[:all].keys
      end

      def [](key)
        if key == :all
          res = GoodData.get("/gdc/projects/#{GoodData.project.pid}/dataload/metadata")
          res["metadataItems"]["items"].reduce({}) {|memo, i| memo[i["metadataItem"]["key"]] = i["metadataItem"]["value"]; memo}
        else 
          res = GoodData.get("/gdc/projects/#{GoodData.project.pid}/dataload/metadata/#{key}")
          res["metadataItem"]["value"]
        end
      end

      alias_method :get, :[]
      alias_method :get_key, :[]

      def has_key?(key)
        begin
          ProjectMetadata[key]
          true
        rescue RestClient::ResourceNotFound => e
          false
        end
      end

      def []=(key, val)
        data = {
          :metadataItem => {
           :key => key,
           :value => val
         }
        }
        uri = "/gdc/projects/#{GoodData.project.pid}/dataload/metadata/"
        update_uri = uri + key

        if has_key?(key)
          GoodData.put(update_uri, data)
        else
          GoodData.post(uri, data)
        end
      end

    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
gooddata-0.6.0.pre11 lib/gooddata/models/project_metadata.rb
gooddata-0.6.0.pre10 lib/gooddata/models/project_metadata.rb
gooddata-0.6.0.pre9 lib/gooddata/models/project_metadata.rb
gooddata-0.6.0.pre8 lib/gooddata/models/project_metadata.rb
gooddata-0.6.0.pre7 lib/gooddata/models/project_metadata.rb