mits 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/README.md +4 -4
- data/lib/mits.rb +4 -1
- data/lib/mits/base_mapper.rb +20 -0
- data/lib/mits/document.rb +16 -5
- data/lib/mits/saxerator_ext.rb +8 -1
- data/lib/mits/v3.0/address.rb +20 -0
- data/lib/mits/v3.0/amenity.rb +12 -0
- data/lib/mits/v3.0/company.rb +13 -0
- data/lib/mits/v3.0/deposit.rb +13 -0
- data/lib/mits/v3.0/fees.rb +17 -0
- data/lib/mits/v3.0/file.rb +18 -0
- data/lib/mits/v3.0/floorplan.rb +13 -0
- data/lib/mits/v3.0/mapper.rb +50 -0
- data/lib/mits/v3.0/mapper/address_mapper.rb +35 -0
- data/lib/mits/v3.0/mapper/amenities_mapper.rb +19 -0
- data/lib/mits/v3.0/mapper/company_mapper.rb +15 -0
- data/lib/mits/v3.0/mapper/deposit_mapper.rb +32 -0
- data/lib/mits/v3.0/mapper/fees_mapper.rb +19 -0
- data/lib/mits/v3.0/mapper/files_mapper.rb +25 -0
- data/lib/mits/v3.0/mapper/floorplan_mapper.rb +27 -0
- data/lib/mits/v3.0/mapper/pet_policy_mapper.rb +37 -0
- data/lib/mits/v3.0/mapper/policy_mapper.rb +12 -0
- data/lib/mits/v3.0/mapper/property_mapper.rb +57 -0
- data/lib/mits/v3.0/pet.rb +13 -0
- data/lib/mits/v3.0/pet_policy.rb +17 -0
- data/lib/mits/v3.0/policy.rb +10 -0
- data/lib/mits/v3.0/property.rb +23 -0
- data/lib/mits/v4.1/address.rb +21 -0
- data/lib/mits/v4.1/amenity.rb +21 -0
- data/lib/mits/v4.1/company.rb +8 -0
- data/lib/mits/v4.1/deposit.rb +8 -0
- data/lib/mits/v4.1/fees.rb +8 -0
- data/lib/mits/v4.1/file.rb +8 -0
- data/lib/mits/v4.1/mapper.rb +45 -0
- data/lib/mits/v4.1/mapper/address_mapper.rb +29 -0
- data/lib/mits/v4.1/mapper/company_mapper.rb +9 -0
- data/lib/mits/v4.1/mapper/property_mapper.rb +48 -0
- data/lib/mits/v4.1/mapper/units_mapper.rb +26 -0
- data/lib/mits/v4.1/pet.rb +8 -0
- data/lib/mits/v4.1/pet_policy.rb +8 -0
- data/lib/mits/v4.1/policy.rb +8 -0
- data/lib/mits/v4.1/property.rb +22 -0
- data/lib/mits/v4.1/unit.rb +13 -0
- data/lib/mits/version.rb +1 -1
- data/mits.gemspec +5 -4
- data/spec/fixtures/MITS_3.0_Property.yml +583 -0
- data/spec/fixtures/MITS_3.0_Sample.xml +589 -0
- data/spec/fixtures/{property.yml → MITS_4.1_Property.yml} +0 -0
- data/spec/fixtures/{mits.xml → MITS_4.1_Sample.xml} +0 -0
- data/spec/lib/mits/document_spec.rb +3 -3
- data/spec/lib/mits/v3.0/address_spec.rb +21 -0
- data/spec/lib/mits/v3.0/amenity_spec.rb +13 -0
- data/spec/lib/mits/{entities → v3.0}/company_spec.rb +0 -0
- data/spec/lib/mits/v3.0/deposit_spec.rb +14 -0
- data/spec/lib/mits/v3.0/fees_spec.rb +18 -0
- data/spec/lib/mits/v3.0/file_spec.rb +20 -0
- data/spec/lib/mits/v3.0/floorplan_spec.rb +14 -0
- data/spec/lib/mits/v3.0/mapper_spec.rb +198 -0
- data/spec/lib/mits/v3.0/pet_policy_spec.rb +17 -0
- data/spec/lib/mits/v3.0/pet_spec.rb +15 -0
- data/spec/lib/mits/v3.0/property_spec.rb +23 -0
- data/spec/lib/mits/v4.1/address_spec.rb +22 -0
- data/spec/lib/mits/v4.1/amenity_spec.rb +11 -0
- data/spec/lib/mits/v4.1/company_spec.rb +0 -0
- data/spec/lib/mits/v4.1/deposit_spec.rb +14 -0
- data/spec/lib/mits/v4.1/fees_spec.rb +18 -0
- data/spec/lib/mits/v4.1/file_spec.rb +20 -0
- data/spec/lib/mits/v4.1/mapper_spec.rb +194 -0
- data/spec/lib/mits/v4.1/pet_policy_spec.rb +16 -0
- data/spec/lib/mits/v4.1/pet_spec.rb +15 -0
- data/spec/lib/mits/v4.1/property_spec.rb +23 -0
- data/spec/lib/mits/v4.1/unit_spec.rb +14 -0
- metadata +112 -53
- data/lib/mits/entities/address.rb +0 -16
- data/lib/mits/entities/amenity.rb +0 -8
- data/lib/mits/entities/company.rb +0 -11
- data/lib/mits/entities/deposit.rb +0 -11
- data/lib/mits/entities/fees.rb +0 -15
- data/lib/mits/entities/file.rb +0 -16
- data/lib/mits/entities/pet.rb +0 -11
- data/lib/mits/entities/pet_policy.rb +0 -15
- data/lib/mits/entities/property.rb +0 -20
- data/lib/mits/entities/unit.rb +0 -11
- data/lib/mits/mapper.rb +0 -48
- data/lib/mits/mappers/address_mapper.rb +0 -29
- data/lib/mits/mappers/amenities_mapper.rb +0 -14
- data/lib/mits/mappers/company_mapper.rb +0 -11
- data/lib/mits/mappers/deposit_mapper.rb +0 -24
- data/lib/mits/mappers/fees_mapper.rb +0 -15
- data/lib/mits/mappers/files_mapper.rb +0 -19
- data/lib/mits/mappers/pet_policy_mapper.rb +0 -28
- data/lib/mits/mappers/property_mapper.rb +0 -41
- data/lib/mits/mappers/units_mapper.rb +0 -22
- data/spec/lib/mits/entities/address_spec.rb +0 -16
- data/spec/lib/mits/entities/amenity_spec.rb +0 -8
- data/spec/lib/mits/entities/deposit_spec.rb +0 -11
- data/spec/lib/mits/entities/fees_spec.rb +0 -15
- data/spec/lib/mits/entities/file_spec.rb +0 -17
- data/spec/lib/mits/entities/pet_policy_spec.rb +0 -14
- data/spec/lib/mits/entities/pet_spec.rb +0 -12
- data/spec/lib/mits/entities/property_spec.rb +0 -20
- data/spec/lib/mits/entities/unit_spec.rb +0 -11
- data/spec/lib/mits/mapper_spec.rb +0 -180
@@ -1,16 +0,0 @@
|
|
1
|
-
module MITS
|
2
|
-
class Address
|
3
|
-
include SimpleObjects::Base
|
4
|
-
|
5
|
-
attribute :address1
|
6
|
-
attribute :address2
|
7
|
-
attribute :city
|
8
|
-
attribute :country
|
9
|
-
attribute :description
|
10
|
-
attribute :latitude
|
11
|
-
attribute :longitude
|
12
|
-
attribute :postal_code
|
13
|
-
attribute :state
|
14
|
-
attribute :type
|
15
|
-
end
|
16
|
-
end
|
data/lib/mits/entities/fees.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
module MITS
|
2
|
-
class Fees
|
3
|
-
include SimpleObjects::Base
|
4
|
-
|
5
|
-
attribute :admin_fee
|
6
|
-
attribute :application_fee
|
7
|
-
attribute :broker_fee
|
8
|
-
attribute :late_fee_per_day
|
9
|
-
attribute :late_min_fee
|
10
|
-
attribute :late_percent
|
11
|
-
attribute :late_type
|
12
|
-
attribute :non_refundable_hold_fee
|
13
|
-
attribute :prorate_type
|
14
|
-
end
|
15
|
-
end
|
data/lib/mits/entities/file.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
module MITS
|
2
|
-
class File
|
3
|
-
include SimpleObjects::Base
|
4
|
-
|
5
|
-
attribute :active
|
6
|
-
attribute :caption
|
7
|
-
attribute :description
|
8
|
-
attribute :format
|
9
|
-
attribute :height
|
10
|
-
attribute :id
|
11
|
-
attribute :name
|
12
|
-
attribute :rank
|
13
|
-
attribute :source
|
14
|
-
attribute :width
|
15
|
-
end
|
16
|
-
end
|
data/lib/mits/entities/pet.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
module MITS
|
2
|
-
class PetPolicy
|
3
|
-
include SimpleObjects::Base
|
4
|
-
|
5
|
-
attribute :allowed
|
6
|
-
attribute :care
|
7
|
-
attribute :deposit
|
8
|
-
attribute :fee
|
9
|
-
attribute :pets
|
10
|
-
attribute :rent
|
11
|
-
attribute :restrictions
|
12
|
-
|
13
|
-
alias_method :allowed?, :allowed
|
14
|
-
end
|
15
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module MITS
|
2
|
-
class Property
|
3
|
-
include SimpleObjects::Base
|
4
|
-
|
5
|
-
attribute :address
|
6
|
-
attribute :amenities
|
7
|
-
attribute :company_id
|
8
|
-
attribute :deposit
|
9
|
-
attribute :description
|
10
|
-
attribute :fees
|
11
|
-
attribute :files
|
12
|
-
attribute :id
|
13
|
-
attribute :name
|
14
|
-
attribute :pet_policy
|
15
|
-
attribute :summary
|
16
|
-
attribute :type
|
17
|
-
attribute :units
|
18
|
-
attribute :website
|
19
|
-
end
|
20
|
-
end
|
data/lib/mits/entities/unit.rb
DELETED
data/lib/mits/mapper.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'mits/entities/address'
|
2
|
-
require 'mits/entities/amenity'
|
3
|
-
require 'mits/entities/company'
|
4
|
-
require 'mits/entities/deposit'
|
5
|
-
require 'mits/entities/fees'
|
6
|
-
require 'mits/entities/file'
|
7
|
-
require 'mits/entities/pet'
|
8
|
-
require 'mits/entities/pet_policy'
|
9
|
-
require 'mits/entities/property'
|
10
|
-
require 'mits/entities/unit'
|
11
|
-
|
12
|
-
require 'mits/mappers/address_mapper'
|
13
|
-
require 'mits/mappers/amenities_mapper'
|
14
|
-
require 'mits/mappers/company_mapper'
|
15
|
-
require 'mits/mappers/deposit_mapper'
|
16
|
-
require 'mits/mappers/fees_mapper'
|
17
|
-
require 'mits/mappers/files_mapper'
|
18
|
-
require 'mits/mappers/pet_policy_mapper'
|
19
|
-
require 'mits/mappers/property_mapper'
|
20
|
-
require 'mits/mappers/units_mapper'
|
21
|
-
|
22
|
-
module MITS
|
23
|
-
module Mapper
|
24
|
-
extend AddressMapper
|
25
|
-
extend AmenitiesMapper
|
26
|
-
extend CompanyMapper
|
27
|
-
extend DepositMapper
|
28
|
-
extend FeesMapper
|
29
|
-
extend FilesMapper
|
30
|
-
extend PetPolicyMapper
|
31
|
-
extend PropertyMapper
|
32
|
-
extend UnitsMapper
|
33
|
-
|
34
|
-
extend self
|
35
|
-
|
36
|
-
protected
|
37
|
-
|
38
|
-
def bool(value)
|
39
|
-
value == 'true'
|
40
|
-
end
|
41
|
-
|
42
|
-
def try(value, method)
|
43
|
-
return nil unless value
|
44
|
-
value.send(method)
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module MITS
|
2
|
-
module AddressMapper
|
3
|
-
def address(tag, secondary_tag = nil)
|
4
|
-
attrs = address_attributes(tag)
|
5
|
-
|
6
|
-
if secondary_tag
|
7
|
-
attrs[:latitude] = try(secondary_tag[:Latitude], :to_f)
|
8
|
-
attrs[:longitude] = try(secondary_tag[:Longitude], :to_f)
|
9
|
-
end
|
10
|
-
|
11
|
-
Address.new(attrs)
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def address_attributes(tag)
|
17
|
-
{
|
18
|
-
type: tag[:AddressType],
|
19
|
-
description: tag[:Description],
|
20
|
-
address1: tag[:AddressLine1],
|
21
|
-
address2: tag[:AddressLine2],
|
22
|
-
city: tag[:City],
|
23
|
-
state: tag[:State],
|
24
|
-
postal_code: tag[:PostalCode],
|
25
|
-
country: tag[:Country],
|
26
|
-
}
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module MITS
|
2
|
-
module AmenitiesMapper
|
3
|
-
def amenities(tags)
|
4
|
-
if tags
|
5
|
-
tags = [tags] unless tags.is_a? Array
|
6
|
-
tags.map { |tag| amenity(tag) }
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def amenity(tag)
|
11
|
-
Amenity.new(description: tag[:Description], type: tag[:AmenityType])
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module MITS
|
2
|
-
module DepositMapper
|
3
|
-
def deposit(tag)
|
4
|
-
Deposit.new(amount: deposit_amount(tag[:Amount][:ValueRange]),
|
5
|
-
description: tag[:Description],
|
6
|
-
percent_refundable: try(tag[:PercentRefundable], :to_f),
|
7
|
-
portion_refundable: try(tag[:PortionRefundable], :to_f),
|
8
|
-
type: tag[:DepositType])
|
9
|
-
end
|
10
|
-
|
11
|
-
private
|
12
|
-
|
13
|
-
def deposit_amount(tag)
|
14
|
-
if tag[:Exact]
|
15
|
-
amount = tag[:Exact].to_f
|
16
|
-
else
|
17
|
-
min = tag[:Min].to_f
|
18
|
-
max = tag[:Max].to_f
|
19
|
-
amount = Range.new(min, max)
|
20
|
-
end
|
21
|
-
amount
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module MITS
|
2
|
-
module FeesMapper
|
3
|
-
def fees(tag)
|
4
|
-
Fees.new(admin_fee: try(tag[:AdminFee], :to_f),
|
5
|
-
application_fee: try(tag[:ApplicationFee], :to_f),
|
6
|
-
broker_fee: try(tag[:BrokerFee], :to_f),
|
7
|
-
late_fee_per_day: try(tag[:LateFeePerDay], :to_f),
|
8
|
-
late_min_fee: try(tag[:LateMinFee], :to_f),
|
9
|
-
late_percent: try(tag[:LatePercent], :to_f),
|
10
|
-
late_type: tag[:LateType],
|
11
|
-
non_refundable_hold_fee: try(tag[:NonRefundableHoldFee], :to_f),
|
12
|
-
prorate_type: tag[:ProrateType])
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module MITS
|
2
|
-
module FilesMapper
|
3
|
-
def files(tags)
|
4
|
-
tags = [tags] unless tags.is_a? Array
|
5
|
-
tags.map do |tag|
|
6
|
-
File.new(active: bool(tag[:Active]),
|
7
|
-
caption: tag[:Caption],
|
8
|
-
description: tag[:Description],
|
9
|
-
format: tag[:Format],
|
10
|
-
height: try(tag[:Height], :to_i),
|
11
|
-
id: tag[:FileID],
|
12
|
-
name: tag[:Name],
|
13
|
-
rank: tag[:Rank],
|
14
|
-
source: tag[:Src],
|
15
|
-
width: tag[:Width])
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module MITS
|
2
|
-
module PetPolicyMapper
|
3
|
-
def pet_policy(tag)
|
4
|
-
if bool(tag[:Allowed])
|
5
|
-
PetPolicy.new(allowed: true,
|
6
|
-
care: bool(tag[:PetCare]),
|
7
|
-
deposit: try(tag[:Deposit], :to_f),
|
8
|
-
fee: try(tag[:Fee], :to_f),
|
9
|
-
pets: pets(tag[:Pets]),
|
10
|
-
rent: try(tag[:Rent], :to_f),
|
11
|
-
restrictions: tag[:Restrictions])
|
12
|
-
else
|
13
|
-
PetPolicy.new(allowed: false)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def pets(tags)
|
18
|
-
tags = [tags] unless tags.is_a? Array
|
19
|
-
tags.map do |tag|
|
20
|
-
Pet.new(count: tag[:Count].to_i,
|
21
|
-
description: tag[:Description],
|
22
|
-
size: tag[:Size],
|
23
|
-
weight: tag[:Weight],
|
24
|
-
type: tag[:PetType])
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module MITS
|
2
|
-
module PropertyMapper
|
3
|
-
def property(tag)
|
4
|
-
basics = property_basics(tag)
|
5
|
-
details = property_details(tag)
|
6
|
-
Property.new(basics.merge(details))
|
7
|
-
end
|
8
|
-
|
9
|
-
private
|
10
|
-
|
11
|
-
def property_basics(tag)
|
12
|
-
propId = tag[:PropertyID]
|
13
|
-
{
|
14
|
-
company_id: company_id(propId[:Identification]),
|
15
|
-
description: tag[:Information][:LongDescription],
|
16
|
-
id: tag[:IDValue],
|
17
|
-
name: propId[:MarketingName],
|
18
|
-
summary: tag[:Information][:ShortDescription],
|
19
|
-
type: tag[:ILS_Identification][:ILS_IdentificationType],
|
20
|
-
website: propId[:WebSite]
|
21
|
-
}
|
22
|
-
end
|
23
|
-
|
24
|
-
def property_details(tag)
|
25
|
-
{
|
26
|
-
address: address(tag[:PropertyID][:Address], tag[:ILS_Identification]),
|
27
|
-
amenities: amenities(tag[:ILS_Unit][:Amenity]),
|
28
|
-
deposit: deposit(tag[:Deposit]),
|
29
|
-
fees: fees(tag[:Fee]),
|
30
|
-
files: files(tag[:File]),
|
31
|
-
pet_policy: pet_policy(tag[:Policy][:Pet]),
|
32
|
-
units: units(tag[:ILS_Unit][:Units][:Unit])
|
33
|
-
}
|
34
|
-
end
|
35
|
-
|
36
|
-
def company_id(tags)
|
37
|
-
tag = tags.find { |t| t[:IDType].downcase == 'company' }
|
38
|
-
tag[:IDValue] if tag
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module MITS
|
2
|
-
module UnitsMapper
|
3
|
-
def units(tags)
|
4
|
-
tags = [tags] unless tags.is_a? Array
|
5
|
-
tags.map do |tag|
|
6
|
-
Unit.new(bathrooms: try(tag[:UnitBathrooms], :to_f),
|
7
|
-
bedrooms: try(tag[:UnitBedrooms], :to_f),
|
8
|
-
name: tag[:MarketingName],
|
9
|
-
rent: try(tag[:UnitRent], :to_f),
|
10
|
-
sqft: unit_sqft(tag))
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def unit_sqft(tag)
|
17
|
-
min = tag[:MinSquareFeet]
|
18
|
-
max = tag[:MaxSquareFeet]
|
19
|
-
Range.new(min.to_i, max.to_i)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module MITS
|
4
|
-
describe Address do
|
5
|
-
it { is_expected.to respond_to(:address1) }
|
6
|
-
it { is_expected.to respond_to(:address2) }
|
7
|
-
it { is_expected.to respond_to(:city) }
|
8
|
-
it { is_expected.to respond_to(:country) }
|
9
|
-
it { is_expected.to respond_to(:description) }
|
10
|
-
it { is_expected.to respond_to(:latitude) }
|
11
|
-
it { is_expected.to respond_to(:longitude) }
|
12
|
-
it { is_expected.to respond_to(:postal_code) }
|
13
|
-
it { is_expected.to respond_to(:state) }
|
14
|
-
it { is_expected.to respond_to(:type) }
|
15
|
-
end
|
16
|
-
end
|