Module: CopperEgg::Mixins::Persistence
- Included in:
- CustomDashboard, CopperEgg::MetricGroup, CopperEgg::MetricSample
- Defined in:
- lib/copperegg/mixins/persistence.rb
Instance Attribute Summary collapse
-
#error ⇒ Object
readonly
Returns the value of attribute error.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
Class Method Summary collapse
Instance Method Summary collapse
Instance Attribute Details
#error ⇒ Object (readonly)
Returns the value of attribute error.
69 70 71 |
# File 'lib/copperegg/mixins/persistence.rb', line 69 def error @error end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
69 70 71 |
# File 'lib/copperegg/mixins/persistence.rb', line 69 def id @id end |
Class Method Details
.included(klass) ⇒ Object
6 7 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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/copperegg/mixins/persistence.rb', line 6 def self.included(klass) klass.class_eval do class << self attr_reader :resource_name def find(*args) params = args.last.class == Hash ? args.pop : {} id = args.first response = request(params.merge(:request_type => "get", :id => id)) if response.code == "200" json = JSON.parse(response.body) if json.is_a?(Array) json.map {|attributes| new(attributes)} else new(json) end end end def create(params) params.delete(:id) params.delete("id") new(params).save end def delete(id) request(:id => id, :request_type => "delete") end def request(params={}) request_type = params.delete(:request_type) raise "invalid type" if !%w(get post put delete).include?(request_type) id = params.delete(:id) uri = id ? URI.parse("#{Api.uri}/#{self.resource_name}/#{id}.json") : URI.parse("#{Api.uri}/#{self.resource_name}.json") http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = uri.scheme == 'https' http.verify_mode = OpenSSL::SSL::VERIFY_NONE if !Api.ssl_verify_peer request = Net::HTTP.const_get(request_type.capitalize).new(uri.request_uri) request.body = JSON.generate(params) unless params.empty? request.basic_auth(Api.apikey, "U") request["Content-Type"] = "application/json" begin response = http.request(request) rescue Exception => e raise e end response end private def resource(value) @resource_name = value end end end end |
Instance Method Details
#delete ⇒ Object
89 90 91 |
# File 'lib/copperegg/mixins/persistence.rb', line 89 def delete self.class.request(:id => @id, :request_type => "delete") end |
#initialize(attributes = {}) ⇒ Object
71 72 73 |
# File 'lib/copperegg/mixins/persistence.rb', line 71 def initialize(attributes={}) load_attributes(attributes) end |
#persisted? ⇒ Boolean
93 94 95 |
# File 'lib/copperegg/mixins/persistence.rb', line 93 def persisted? !@id.nil? end |
#save ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/copperegg/mixins/persistence.rb', line 75 def save if valid? response = persisted? ? update : create attributes = JSON.parse(response.body) if response.code != "200" @error = attributes.merge("code" => response.code) else load_attributes(attributes) end else raise ValidationError.new(@error) end end |