Class: MLS::Account
Defined Under Namespace
Classes: Parser
Instance Attribute Summary collapse
Attributes inherited from Resource
#errors, #persisted
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Resource
#==, #create!, inherited, #initialize, #new_record?, #persisted?, #properties, #properties_excluded_from_comparison, #properties_for_comparison, #save, #save!, #set_default_values, #to_key, #update!, #update_attributes
Constructor Details
This class inherits a constructor from MLS::Resource
Instance Attribute Details
#favorites ⇒ Object
71
72
73
74
75
|
# File 'lib/mls/models/account.rb', line 71
def favorites
return @favorites if @favorites
response = MLS.get('/account/favorites')
@favorites = MLS::Listing::Parser.parse_collection(response.body, {:collection_root_element => :favorites})
end
|
#password_required ⇒ Object
Returns the value of attribute password_required.
40
41
42
|
# File 'lib/mls/models/account.rb', line 40
def password_required
@password_required
end
|
Class Method Details
.authenticate(attrs_or_email, password = nil) ⇒ Object
Authenticate and Account via email
and password
. Returns the Account
object if successfully authenticated. Returns nil
if the account could not be found, password was incorrect, or the account was revoked
Examples
Account.authenticate(:email => '[email protected]', :password => 'opensesame')
Account.authenticate('[email protected]', 'opensesame')
Account.authenticate('[email protected]', 'wrong')
126
127
128
129
130
131
132
133
134
|
# File 'lib/mls/models/account.rb', line 126
def authenticate(attrs_or_email, password=nil)
email = attrs_or_email.is_a?(Hash) ? attrs_or_email[:email] : attrs_or_email
password = attrs_or_email.is_a?(Hash) ? attrs_or_email[:password] : password
response = MLS.get('/account', {:email => email, :password => password})
MLS::Account::Parser.parse(response.body)
rescue MLS::Exception::Unauthorized => response
nil
end
|
.current ⇒ Object
109
110
111
112
|
# File 'lib/mls/models/account.rb', line 109
def current
response = MLS.get('/account')
MLS::Account::Parser.parse(response.body)
end
|
.find(id) ⇒ Object
153
154
155
156
|
# File 'lib/mls/models/account.rb', line 153
def find(id)
response = MLS.get("/account/find", :id => id)
MLS::Account::Parser.parse(response.body)
end
|
.reset_password!(email) ⇒ Object
136
137
138
139
140
|
# File 'lib/mls/models/account.rb', line 136
def reset_password!(email)
MLS.put('/account/reset_password', {:email => email}, 400, 404) do |response, code|
code == 200
end
end
|
.search(terms) ⇒ Object
148
149
150
151
|
# File 'lib/mls/models/account.rb', line 148
def search(terms)
response = MLS.get('/account/search', :query => terms)
MLS::Account::Parser.parse_collection(response.body)
end
|
.update_password!(params_hash) ⇒ Object
142
143
144
145
146
|
# File 'lib/mls/models/account.rb', line 142
def update_password!(params_hash)
MLS.put('/account/update_password', params_hash, 400) do |response, code|
MLS::Account::Parser.parse(response.body)
end
end
|
Instance Method Details
67
68
69
|
# File 'lib/mls/models/account.rb', line 67
def agent?
type == 'Agent'
end
|
#agent_profile ⇒ Object
77
78
79
|
# File 'lib/mls/models/account.rb', line 77
def agent_profile
@agent_profile ||= MLS.agent_profile id
end
|
#create ⇒ Object
Save the Account to the MLS. @errors will be set on the account if there are any errors. @persisted will also be set to true
if the Account was succesfully created
54
55
56
57
58
59
60
61
|
# File 'lib/mls/models/account.rb', line 54
def create
MLS.post('/account', {:account => to_hash}, 400) do |response, code|
raise MLS::Exception::UnexpectedResponse if ![201, 400].include?(code)
MLS::Account::Parser.update(self, response.body)
@persisted = true
code == 201
end
end
|
#display_name ⇒ Object
63
64
65
|
# File 'lib/mls/models/account.rb', line 63
def display_name
name || email
end
|
#favorite(listing) ⇒ Object
TODO: test me, i don’t work on failures
85
86
87
88
89
90
91
|
# File 'lib/mls/models/account.rb', line 85
def favorite(listing) params_hash = {:id => listing.is_a?(MLS::Listing) ? listing.id : listing }
MLS.post('/account/favorites', params_hash) do |response, code|
@favorites = nil
true
end
end
|
#favorited?(listing) ⇒ Boolean
81
82
83
|
# File 'lib/mls/models/account.rb', line 81
def favorited?(listing)
favorites.include?(listing)
end
|
#to_hash ⇒ Object
101
102
103
104
105
|
# File 'lib/mls/models/account.rb', line 101
def to_hash
hash = super
hash[:password_required] = password_required unless password_required.nil?
hash
end
|
#unfavorite(listing_id) ⇒ Object
TODO: test me, i don’t work on failures
93
94
95
96
97
98
99
|
# File 'lib/mls/models/account.rb', line 93
def unfavorite(listing_id) listing_id = listing_id.is_a?(MLS::Listing) ? listing_id.id : listing_id
MLS.delete("/account/favorites/#{listing_id}") do |response, code|
@favorites = nil
true
end
end
|
#update ⇒ Object
44
45
46
47
48
49
|
# File 'lib/mls/models/account.rb', line 44
def update
MLS.put('/account', {:account => to_hash}, 400) do |response, code|
MLS::Account::Parser.update(self, response.body)
code == 200
end
end
|