sfsekaran/awesm

View on GitHub
lib/awesm/project.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Awesm
  class Project < Hashie::Mash
    PATH = '/projects'

    def self.create(attributes)
      project = self.new(attributes)
      project.save ? project : nil
    end

    def self.list
      response = Awesm.http_client.post("#{Awesm::HOST}#{PATH}/list", { :application_key => Awesm.application_key, :subscription_key => Awesm.subscription_key})
      unless response.status == 200
        nil
      else
        projects = []
        json = JSON.parse response.content
        json['response']['projects'].each do |project|
          projects << new(project)
        end
        projects
      end
    end

    ####################
    # Instance Methods #
    ####################

    def save
      response = Awesm.http_client.post("#{Awesm::HOST}#{PATH}/new", :application_key => Awesm.application_key, :subscription_key => Awesm.subscription_key, :json => self.to_hash.to_json)
      json = JSON.parse response.content
      unless response.status.between? 200, 230
        # use mash to update error code and message
        update(json)
        false
      else
        update(json['response']['project'])
        true
      end
    end

    def destroy
      response = Awesm.http_client.post("#{Awesm::HOST}#{PATH}/#{api_key}/destroy", { :application_key => Awesm.application_key, :subscription_key => Awesm.subscription_key })
      response.status == 200
    end
  end
end