Skip to content

Commit 87248eb

Browse files
authored
Merge pull request #129 from sparkapi/extract-models
MWEB-1465 extract SharedLink and EmailLink
2 parents bab1946 + bf8e1c1 commit 87248eb

File tree

16 files changed

+260
-5
lines changed

16 files changed

+260
-5
lines changed

CHANGELOG

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
v1.4.10
2+
- add `id` method to SparkApi::Models::Base as a more familiar alias of `Id`
3+
- add SharedLink and EmailLink models, extracted from FBS internal code
4+
15
v1.4.9
26
- add AccountReport and AccountRoster models
37

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.4.9
1+
1.4.10

lib/spark_api/models.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
require 'spark_api/models/comment'
1616
require 'spark_api/models/custom_fields'
1717
require 'spark_api/models/document'
18+
require 'spark_api/models/email_link'
1819
require 'spark_api/models/fields'
1920
require 'spark_api/models/idx'
2021
require 'spark_api/models/idx_link'
@@ -34,6 +35,7 @@
3435
require 'spark_api/models/rental_calendar'
3536
require 'spark_api/models/saved_search'
3637
require 'spark_api/models/search_template/quick_search'
38+
require 'spark_api/models/shared_link'
3739
require 'spark_api/models/shared_listing'
3840
require 'spark_api/models/sort'
3941
require 'spark_api/models/standard_fields'

lib/spark_api/models/base.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ class Base
99

1010
attr_accessor :attributes, :errors, :parent
1111

12+
# More familiar accessor for our Spark API Id method
13+
def id
14+
self.Id
15+
end
16+
1217
# Name of the resource as related to the path name
1318
def self.element_name
1419
# TODO I'd love to pull in active model at this point to provide default naming

lib/spark_api/models/email_link.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module SparkApi
2+
module Models
3+
class EmailLink < Base
4+
5+
extend Finders
6+
7+
self.prefix = "/flexmls/"
8+
self.element_name = "emaillinks"
9+
10+
attr_accessor :template, :sort_id
11+
12+
def filter
13+
"EmailLink Eq '#{id}'"
14+
end
15+
16+
def listing_search_role
17+
:public
18+
end
19+
end
20+
end
21+
end

lib/spark_api/models/newsfeed.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@ module Models
33
class Newsfeed < Base
44

55
extend Finders
6-
include Concerns::Savable
6+
include Concerns::Destroyable,
7+
Concerns::Savable
78

89
self.element_name = 'newsfeeds'
910

11+
def listing_search_role
12+
:public
13+
end
1014
end
1115
end
1216
end

lib/spark_api/models/notification.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ def self.mark_read(notifications, arguments={})
3737
result = connection.put "#{self.path}/#{ids.join(',')}", {'Read' => true}, arguments
3838
end
3939

40+
def listing_search_role
41+
:public
42+
end
4043
end
4144
end
4245
end

lib/spark_api/models/saved_search.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ class SavedSearch < Base
66
include Concerns::Savable,
77
Concerns::Destroyable
88

9-
109
self.element_name="savedsearches"
1110

1211
def self.provided()
@@ -89,6 +88,10 @@ def has_inactive_newsfeed?
8988
end
9089
end
9190

91+
def listing_search_role
92+
:public if path =~ /contact/
93+
end
94+
9295
private
9396

9497
def resource_pluralized; "SavedSearches" end

lib/spark_api/models/shared_link.rb

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
module SparkApi
2+
module Models
3+
class SharedLink < Base
4+
extend Finders
5+
6+
attr_accessor :sort_id
7+
attr_writer :name
8+
9+
self.element_name = "sharedlinks"
10+
11+
def self.create(data)
12+
SharedLink.new SparkApi.client.post("#{path}/#{resource_type(data)}", data).first
13+
rescue SparkApi::BadResourceRequest
14+
false
15+
end
16+
17+
def name
18+
if @name
19+
@name
20+
elsif respond_to?(:ListingCart) && self.ListingCart.respond_to?(:Name)
21+
self.ListingCart.Name
22+
elsif respond_to?(:SavedSearch) && self.SavedSearch.respond_to?(:Name)
23+
self.SavedSearch.Name
24+
end
25+
end
26+
27+
def template
28+
if respond_to?(:SavedSearch) && self.SavedSearch.respond_to?(:template)
29+
self.SavedSearch.template
30+
end
31+
end
32+
33+
def filter
34+
"SharedLink Eq '#{id}'"
35+
end
36+
37+
def listing_search_role
38+
self.Mode.downcase.to_sym
39+
end
40+
41+
private
42+
43+
def self.resource_type(data)
44+
case data.keys[0].to_sym
45+
when :ListingIds; "listings"
46+
when :SearchId; "search"
47+
when :CartId; "cart"
48+
end
49+
end
50+
51+
end
52+
end
53+
end
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"D": {
3+
"Success": true,
4+
"Results": [
5+
{
6+
"ResourceUri": "/sharedlinks/YUNO"
7+
}
8+
]
9+
}
10+
}

0 commit comments

Comments
 (0)