immoscout 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +30 -0
  3. data/.gitignore +14 -0
  4. data/.reek +6 -0
  5. data/.rspec +2 -0
  6. data/.rubocop.yml +15 -0
  7. data/.simplecov +3 -0
  8. data/.travis.yml +20 -0
  9. data/CODE_OF_CONDUCT.md +74 -0
  10. data/Gemfile +8 -0
  11. data/LICENSE +21 -0
  12. data/README.md +250 -0
  13. data/Rakefile +8 -0
  14. data/bin/console +14 -0
  15. data/bin/setup +8 -0
  16. data/doc/assets/logo.png +0 -0
  17. data/doc/assets/project.png +0 -0
  18. data/doc/assets/project.xcf +0 -0
  19. data/immoscout.gemspec +47 -0
  20. data/lib/immoscout.rb +27 -0
  21. data/lib/immoscout/api/client.rb +27 -0
  22. data/lib/immoscout/api/connection.rb +34 -0
  23. data/lib/immoscout/api/request.rb +33 -0
  24. data/lib/immoscout/configuration.rb +27 -0
  25. data/lib/immoscout/errors/failed.rb +11 -0
  26. data/lib/immoscout/models.rb +9 -0
  27. data/lib/immoscout/models/actions/attachment.rb +82 -0
  28. data/lib/immoscout/models/actions/contact.rb +75 -0
  29. data/lib/immoscout/models/actions/publish.rb +33 -0
  30. data/lib/immoscout/models/actions/real_estate.rb +122 -0
  31. data/lib/immoscout/models/apartment_buy.rb +90 -0
  32. data/lib/immoscout/models/base.rb +48 -0
  33. data/lib/immoscout/models/concerns/modelable.rb +55 -0
  34. data/lib/immoscout/models/concerns/propertiable.rb +56 -0
  35. data/lib/immoscout/models/concerns/renderable.rb +63 -0
  36. data/lib/immoscout/models/contact.rb +59 -0
  37. data/lib/immoscout/models/document.rb +31 -0
  38. data/lib/immoscout/models/house_buy.rb +87 -0
  39. data/lib/immoscout/models/parts/address.rb +26 -0
  40. data/lib/immoscout/models/parts/api_search_data.rb +19 -0
  41. data/lib/immoscout/models/parts/contact.rb +18 -0
  42. data/lib/immoscout/models/parts/coordinate.rb +18 -0
  43. data/lib/immoscout/models/parts/courtage.rb +19 -0
  44. data/lib/immoscout/models/parts/energy_certificate.rb +19 -0
  45. data/lib/immoscout/models/parts/energy_source.rb +17 -0
  46. data/lib/immoscout/models/parts/firing_type.rb +17 -0
  47. data/lib/immoscout/models/parts/geo_code.rb +18 -0
  48. data/lib/immoscout/models/parts/geo_hierarchy.rb +23 -0
  49. data/lib/immoscout/models/parts/price.rb +20 -0
  50. data/lib/immoscout/models/parts/publish_channel.rb +17 -0
  51. data/lib/immoscout/models/parts/real_estate.rb +17 -0
  52. data/lib/immoscout/models/parts/url.rb +18 -0
  53. data/lib/immoscout/models/parts/urls.rb +18 -0
  54. data/lib/immoscout/models/picture.rb +33 -0
  55. data/lib/immoscout/models/publish.rb +23 -0
  56. data/lib/immoscout/version.rb +5 -0
  57. metadata +268 -0
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'concerns/renderable'
4
+ require_relative 'concerns/propertiable'
5
+ require_relative 'actions/attachment'
6
+
7
+ module Immoscout
8
+ module Models
9
+ class Document < Base
10
+ include Immoscout::Models::Concerns::Renderable
11
+ include Immoscout::Models::Concerns::Propertiable
12
+ include Immoscout::Models::Actions::Attachment
13
+
14
+ attr_accessor :attachable, :file
15
+
16
+ self.json_wrapper = "common.attachment"
17
+
18
+ property :id, alias: :@id
19
+ property :type, alias: :'@xsi.type'
20
+ property :href, alias: :'@xlink.href'
21
+ property :publish_date, alias: :@publish_date
22
+ property :creation, alias: :@creation
23
+ property :modification, alias: :@modification
24
+ property :title
25
+ property :external_id
26
+ property :external_check_sum
27
+ property :floorplan
28
+ property :url
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'concerns/renderable'
4
+ require_relative 'concerns/propertiable'
5
+ require_relative 'actions/real_estate'
6
+ require_relative 'parts/api_search_data'
7
+ require_relative 'parts/address'
8
+ require_relative 'parts/contact'
9
+ require_relative 'parts/price'
10
+ require_relative 'parts/courtage'
11
+ require_relative 'parts/energy_source'
12
+ require_relative 'parts/energy_certificate'
13
+ require_relative 'parts/firing_type'
14
+
15
+ module Immoscout
16
+ module Models
17
+ class HouseBuy < Base
18
+ include Immoscout::Models::Concerns::Renderable
19
+ include Immoscout::Models::Concerns::Propertiable
20
+ include Immoscout::Models::Actions::RealEstate
21
+
22
+ self.json_wrapper = "realestates.houseBuy"
23
+
24
+ property :id, alias: :@id
25
+ property :external_id
26
+ property :title
27
+ property :creation_date
28
+ property :last_modification_date
29
+ property :type, alias: :'@xsi.type'
30
+ property :href, alias: :'@xlink.href'
31
+ property :publish_date, alias: :@publish_date
32
+ property :creation, alias: :@creation
33
+ property :modification, alias: :@modification
34
+ property :group_number
35
+ property :real_estate_project_id
36
+ property :address, coerce: Immoscout::Models::Parts::Address
37
+ property :api_search_data, coerce: Immoscout::Models::Parts::ApiSearchData
38
+ property :real_estate_state
39
+ property :description_note
40
+ property :furnishing_note
41
+ property :location_note
42
+ property :other_note
43
+ property :show_address
44
+ property :contact, coerce: Immoscout::Models::Parts::Contact
45
+ property :building_type
46
+ property :price, coerce: Immoscout::Models::Parts::Price
47
+ property :courtage, coerce: Immoscout::Models::Parts::Courtage
48
+ property :energy_sources_enev2014,
49
+ coerce: Immoscout::Models::Parts::EnergySource
50
+ property :energy_certificate,
51
+ coerce: Immoscout::Models::Parts::EnergyCertificate
52
+ property :firing_types,
53
+ coerce: Immoscout::Models::Parts::FiringType, array: true
54
+ property :cellar
55
+ property :handicapped_accessible
56
+ property :number_of_parking_spaces
57
+ property :condition
58
+ property :last_refurbishment
59
+ property :interior_quality
60
+ property :construction_year
61
+ property :free_from
62
+ property :heating_type
63
+ property :heating_type_enev2014
64
+ property :building_energy_rating_type
65
+ property :thermal_characteristic
66
+ property :energy_consumption_contains_warm_water
67
+ property :number_of_floors
68
+ property :usable_floor_space
69
+ property :number_of_bed_rooms
70
+ property :number_of_bath_rooms
71
+ property :guest_toilet
72
+ property :parking_space_type
73
+ property :rented
74
+ property :rental_income
75
+ property :listed
76
+ property :parking_space_price
77
+ property :summer_residence_practical
78
+ property :living_space
79
+ property :number_of_rooms
80
+ property :energy_performance_certificate
81
+ # house specific properties
82
+ property :lodger_flat
83
+ property :construction_phase
84
+ property :plot_area
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../parts/coordinate'
5
+ require_relative '../parts/geo_hierarchy'
6
+ require_relative '../concerns/propertiable'
7
+ require_relative '../concerns/renderable'
8
+
9
+ module Immoscout
10
+ module Models
11
+ module Parts
12
+ class Address < Base
13
+ include Immoscout::Models::Concerns::Renderable
14
+ include Immoscout::Models::Concerns::Propertiable
15
+ property :street
16
+ property :house_number
17
+ property :postcode
18
+ property :city
19
+ property :wgs84_coordinate, coerce: Immoscout::Models::Parts::Coordinate
20
+ property :geo_hierarchy,
21
+ coerce: Immoscout::Models::Parts::GeoHierarchy,
22
+ readonly: true
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+
7
+ module Immoscout
8
+ module Models
9
+ module Parts
10
+ class ApiSearchData < Base
11
+ include Immoscout::Models::Concerns::Renderable
12
+ include Immoscout::Models::Concerns::Propertiable
13
+ property :search_field1
14
+ property :search_field2
15
+ property :search_field3
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+
7
+ module Immoscout
8
+ module Models
9
+ module Parts
10
+ class Contact < Base
11
+ include Immoscout::Models::Concerns::Renderable
12
+ include Immoscout::Models::Concerns::Propertiable
13
+ property :id, alias: :@id
14
+ property :external_id, alias: :@external_id
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+
7
+ module Immoscout
8
+ module Models
9
+ module Parts
10
+ class Coordinate < Base
11
+ include Immoscout::Models::Concerns::Renderable
12
+ include Immoscout::Models::Concerns::Propertiable
13
+ property :latitude
14
+ property :longitude
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+
7
+ module Immoscout
8
+ module Models
9
+ module Parts
10
+ class Courtage < Base
11
+ include Immoscout::Models::Concerns::Renderable
12
+ include Immoscout::Models::Concerns::Propertiable
13
+ property :has_courtage
14
+ property :courtage
15
+ property :courtage_note
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+
7
+ module Immoscout
8
+ module Models
9
+ module Parts
10
+ class EnergyCertificate < Base
11
+ include Immoscout::Models::Concerns::Renderable
12
+ include Immoscout::Models::Concerns::Propertiable
13
+ property :energy_certificate_availability
14
+ property :energy_certificate_creation_date
15
+ property :energy_efficiency_class
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+
7
+ module Immoscout
8
+ module Models
9
+ module Parts
10
+ class EnergySource < Base
11
+ include Immoscout::Models::Concerns::Renderable
12
+ include Immoscout::Models::Concerns::Propertiable
13
+ property :energy_source_enev2014
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+
7
+ module Immoscout
8
+ module Models
9
+ module Parts
10
+ class FiringType < Base
11
+ include Immoscout::Models::Concerns::Renderable
12
+ include Immoscout::Models::Concerns::Propertiable
13
+ property :firing_type
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+
7
+ module Immoscout
8
+ module Models
9
+ module Parts
10
+ class GeoCode < Base
11
+ include Immoscout::Models::Concerns::Renderable
12
+ include Immoscout::Models::Concerns::Propertiable
13
+ property :geo_code_id
14
+ property :full_geo_code_id
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+ require_relative 'geo_code'
7
+
8
+ module Immoscout
9
+ module Models
10
+ module Parts
11
+ class GeoHierarchy < Base
12
+ include Immoscout::Models::Concerns::Renderable
13
+ include Immoscout::Models::Concerns::Propertiable
14
+ property :continent, coerce: Immoscout::Models::Parts::GeoCode
15
+ property :country, coerce: Immoscout::Models::Parts::GeoCode
16
+ property :region, coerce: Immoscout::Models::Parts::GeoCode
17
+ property :city, coerce: Immoscout::Models::Parts::GeoCode
18
+ property :quarter, coerce: Immoscout::Models::Parts::GeoCode
19
+ property :neighbourhood, coerce: Immoscout::Models::Parts::GeoCode
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+
7
+ module Immoscout
8
+ module Models
9
+ module Parts
10
+ class Price < Base
11
+ include Immoscout::Models::Concerns::Renderable
12
+ include Immoscout::Models::Concerns::Propertiable
13
+ property :value
14
+ property :currency
15
+ property :marketing_type
16
+ property :price_interval_type
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+
7
+ module Immoscout
8
+ module Models
9
+ module Parts
10
+ class PublishChannel < Base
11
+ include Immoscout::Models::Concerns::Renderable
12
+ include Immoscout::Models::Concerns::Propertiable
13
+ property :id, alias: :@id, default: 10_000
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+
7
+ module Immoscout
8
+ module Models
9
+ module Parts
10
+ class RealEstate < Base
11
+ include Immoscout::Models::Concerns::Renderable
12
+ include Immoscout::Models::Concerns::Propertiable
13
+ property :id, alias: :@id
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+
7
+ module Immoscout
8
+ module Models
9
+ module Parts
10
+ class Url < Base
11
+ include Immoscout::Models::Concerns::Renderable
12
+ include Immoscout::Models::Concerns::Propertiable
13
+ property :scale, alias: :@scale
14
+ property :href, alias: :@href
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base'
4
+ require_relative '../concerns/propertiable'
5
+ require_relative '../concerns/renderable'
6
+ require_relative 'url'
7
+
8
+ module Immoscout
9
+ module Models
10
+ module Parts
11
+ class Urls < Base
12
+ include Immoscout::Models::Concerns::Renderable
13
+ include Immoscout::Models::Concerns::Propertiable
14
+ property :url, coerce: Immoscout::Models::Parts::Url, array: true
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'concerns/renderable'
4
+ require_relative 'concerns/propertiable'
5
+ require_relative 'parts/urls'
6
+ require_relative 'actions/attachment'
7
+
8
+ module Immoscout
9
+ module Models
10
+ class Picture < Base
11
+ include Immoscout::Models::Concerns::Renderable
12
+ include Immoscout::Models::Concerns::Propertiable
13
+ include Immoscout::Models::Actions::Attachment
14
+
15
+ attr_accessor :attachable, :file
16
+
17
+ self.json_wrapper = "common.attachment"
18
+
19
+ property :id, alias: :@id
20
+ property :type, alias: :'@xsi.type', default: "common:Picture"
21
+ property :href, alias: :'@xlink.href'
22
+ property :publish_date, alias: :@publish_date
23
+ property :creation, alias: :@creation
24
+ property :modification, alias: :@modification
25
+ property :title
26
+ property :external_id
27
+ property :external_check_sum
28
+ property :floorplan
29
+ property :title_picture
30
+ property :urls, coerce: Immoscout::Models::Parts::Urls, array: true
31
+ end
32
+ end
33
+ end