Class: OpenID::Store::CouchDB::Association
- Inherits:
-
Object
- Object
- OpenID::Store::CouchDB::Association
- Defined in:
- lib/openid/store/couchdb/association.rb
Constant Summary collapse
- DESIGN_DOCUMENT =
{ 'version' => 1, 'language' => 'javascript', 'views' => {} }
Instance Attribute Summary collapse
-
#association ⇒ Object
Returns the value of attribute association.
Class Method Summary collapse
- .create(server_url, association) ⇒ Object
- .create_design_document ⇒ Object
- .destroy(server_url, handle) ⇒ Object
- .document_name(server_url, handle) ⇒ Object
- .json_create(attributes) ⇒ Object
- .load(server_url, handle) ⇒ Object
Instance Method Summary collapse
- #destroy ⇒ Object
- #expired? ⇒ Boolean
-
#initialize(name, association, couchdb_rev = nil) ⇒ Association
constructor
A new instance of Association.
- #save ⇒ Object
- #to_json(*args) ⇒ Object
Constructor Details
#initialize(name, association, couchdb_rev = nil) ⇒ Association
Returns a new instance of Association.
39 40 41 42 43 44 |
# File 'lib/openid/store/couchdb/association.rb', line 39 def initialize(name, association, couchdb_rev = nil) @name = name @association = association @couchdb_rev = couchdb_rev @couchdb = Chef::CouchDB.new end |
Instance Attribute Details
#association ⇒ Object
Returns the value of attribute association.
37 38 39 |
# File 'lib/openid/store/couchdb/association.rb', line 37 def association @association end |
Class Method Details
.create(server_url, association) ⇒ Object
17 18 19 |
# File 'lib/openid/store/couchdb/association.rb', line 17 def create(server_url, association) new(document_name(server_url, association.handle), association).save end |
.create_design_document ⇒ Object
13 14 15 |
# File 'lib/openid/store/couchdb/association.rb', line 13 def create_design_document Chef::CouchDB.new.create_design_document('associations', DESIGN_DOCUMENT) end |
.destroy(server_url, handle) ⇒ Object
27 28 29 30 |
# File 'lib/openid/store/couchdb/association.rb', line 27 def destroy(server_url, handle) document = load(server_url, handle) document ? document.destroy : false end |
.document_name(server_url, handle) ⇒ Object
32 33 34 |
# File 'lib/openid/store/couchdb/association.rb', line 32 def document_name(server_url, handle) Base64.encode64("#{server_url}-#{handle}").chomp end |
.json_create(attributes) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/openid/store/couchdb/association.rb', line 63 def self.json_create(attributes) name = attributes['name'] handle = attributes['handle'] secret = Base64.decode64(attributes['secret']) issued = Time.at(attributes['issued']) lifetime = attributes['lifetime'] assoc_type = attributes['assoc_type'] couchdb_rev = attributes['_rev'] association = OpenID::Association.new(handle, secret, issued, lifetime, assoc_type) new(name, association, couchdb_rev) end |
.load(server_url, handle) ⇒ Object
21 22 23 24 25 |
# File 'lib/openid/store/couchdb/association.rb', line 21 def load(server_url, handle) Chef::CouchDB.new.load('association', document_name(server_url, handle)) rescue Net::HTTPServerException nil end |
Instance Method Details
#destroy ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/openid/store/couchdb/association.rb', line 46 def destroy @couchdb.delete('association', @name, @couchdb_rev) rescue Net::HTTPServerException false else true end |
#expired? ⇒ Boolean
54 55 56 |
# File 'lib/openid/store/couchdb/association.rb', line 54 def expired? @association.expires_in <= 0 end |
#save ⇒ Object
58 59 60 61 |
# File 'lib/openid/store/couchdb/association.rb', line 58 def save results = @couchdb.store('association', @name, self) @couchdb_rev = results['rev'] end |
#to_json(*args) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/openid/store/couchdb/association.rb', line 76 def to_json(*args) result = { 'name' => @name, 'json_class' => self.class.name, 'chef_type' => 'association', 'handle' => @association.handle, 'secret' => Base64.encode64(@association.secret).chomp, 'issued' => @association.issued.to_i, 'lifetime' => @association.lifetime, 'assoc_type' => @association.assoc_type, } result['_rev'] = @couchdb_rev if @couchdb_rev result.to_json(*args) end |