justimmo_client 0.4.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 (76) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +15 -0
  3. data/.gitignore +15 -0
  4. data/.gitlab-ci.yml +67 -0
  5. data/.rspec +2 -0
  6. data/.rubocop.yml +90 -0
  7. data/.ruby-version +1 -0
  8. data/Gemfile +21 -0
  9. data/LICENSE +21 -0
  10. data/README.md +72 -0
  11. data/Rakefile +14 -0
  12. data/bin/console +21 -0
  13. data/bin/setup +8 -0
  14. data/examples/client.rb +16 -0
  15. data/justimmo_client.gemspec +41 -0
  16. data/lib/justimmo_client/api/v1/models/city.rb +16 -0
  17. data/lib/justimmo_client/api/v1/models/country.rb +44 -0
  18. data/lib/justimmo_client/api/v1/models/employee.rb +45 -0
  19. data/lib/justimmo_client/api/v1/models/federal_state.rb +15 -0
  20. data/lib/justimmo_client/api/v1/models/file.rb +64 -0
  21. data/lib/justimmo_client/api/v1/models/geo_location.rb +47 -0
  22. data/lib/justimmo_client/api/v1/models/image.rb +10 -0
  23. data/lib/justimmo_client/api/v1/models/justimmo_base.rb +15 -0
  24. data/lib/justimmo_client/api/v1/models/realty.rb +82 -0
  25. data/lib/justimmo_client/api/v1/models/realty_area.rb +49 -0
  26. data/lib/justimmo_client/api/v1/models/realty_category.rb +13 -0
  27. data/lib/justimmo_client/api/v1/models/realty_marketing.rb +12 -0
  28. data/lib/justimmo_client/api/v1/models/realty_price.rb +94 -0
  29. data/lib/justimmo_client/api/v1/models/realty_room_count.rb +35 -0
  30. data/lib/justimmo_client/api/v1/models/realty_type.rb +12 -0
  31. data/lib/justimmo_client/api/v1/models/realty_usage.rb +24 -0
  32. data/lib/justimmo_client/api/v1/models/region.rb +12 -0
  33. data/lib/justimmo_client/api/v1/representers/json/attachment_image_representer.rb +16 -0
  34. data/lib/justimmo_client/api/v1/representers/json/attachment_representer.rb +15 -0
  35. data/lib/justimmo_client/api/v1/representers/json/contact_representer.rb +30 -0
  36. data/lib/justimmo_client/api/v1/representers/json/justimmo_representer.rb +13 -0
  37. data/lib/justimmo_client/api/v1/representers/json/location_representer.rb +14 -0
  38. data/lib/justimmo_client/api/v1/representers/json/realty_category_representer.rb +21 -0
  39. data/lib/justimmo_client/api/v1/representers/json/realty_detail_representer.rb +69 -0
  40. data/lib/justimmo_client/api/v1/representers/json.rb +10 -0
  41. data/lib/justimmo_client/api/v1/representers/xml/city_representer.rb +18 -0
  42. data/lib/justimmo_client/api/v1/representers/xml/contact_representer.rb +15 -0
  43. data/lib/justimmo_client/api/v1/representers/xml/country_representer.rb +15 -0
  44. data/lib/justimmo_client/api/v1/representers/xml/employee_list_representer.rb +15 -0
  45. data/lib/justimmo_client/api/v1/representers/xml/employee_representer.rb +46 -0
  46. data/lib/justimmo_client/api/v1/representers/xml/federal_state_representer.rb +17 -0
  47. data/lib/justimmo_client/api/v1/representers/xml/geo_location_representer.rb +24 -0
  48. data/lib/justimmo_client/api/v1/representers/xml/justimmo_representer.rb +13 -0
  49. data/lib/justimmo_client/api/v1/representers/xml/realty_area_representer.rb +28 -0
  50. data/lib/justimmo_client/api/v1/representers/xml/realty_category_representer.rb +15 -0
  51. data/lib/justimmo_client/api/v1/representers/xml/realty_detail_representer.rb +92 -0
  52. data/lib/justimmo_client/api/v1/representers/xml/realty_list_representer.rb +85 -0
  53. data/lib/justimmo_client/api/v1/representers/xml/realty_price_representer.rb +53 -0
  54. data/lib/justimmo_client/api/v1/representers/xml/realty_representer.rb +32 -0
  55. data/lib/justimmo_client/api/v1/representers/xml/realty_room_count_representer.rb +22 -0
  56. data/lib/justimmo_client/api/v1/representers/xml/realty_type_representer.rb +14 -0
  57. data/lib/justimmo_client/api/v1/representers/xml/region_representer.rb +14 -0
  58. data/lib/justimmo_client/api/v1/representers/xml.rb +11 -0
  59. data/lib/justimmo_client/api/v1/requests/employee_request.rb +24 -0
  60. data/lib/justimmo_client/api/v1/requests/justimmo_request.rb +64 -0
  61. data/lib/justimmo_client/api/v1/requests/realty_request.rb +209 -0
  62. data/lib/justimmo_client/api/v1.rb +16 -0
  63. data/lib/justimmo_client/autoload.rb +17 -0
  64. data/lib/justimmo_client/core/caching.rb +55 -0
  65. data/lib/justimmo_client/core/config.rb +46 -0
  66. data/lib/justimmo_client/core/logging.rb +46 -0
  67. data/lib/justimmo_client/core/utils.rb +38 -0
  68. data/lib/justimmo_client/employee.rb +39 -0
  69. data/lib/justimmo_client/errors.rb +58 -0
  70. data/lib/justimmo_client/misc.rb +10 -0
  71. data/lib/justimmo_client/option_parser.rb +107 -0
  72. data/lib/justimmo_client/realty.rb +150 -0
  73. data/lib/justimmo_client/version.rb +5 -0
  74. data/lib/justimmo_client.rb +22 -0
  75. data/notes.md +19 -0
  76. metadata +271 -0
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ class Realty < JustimmoBase
5
+ # @!group Attributes
6
+
7
+ # @!macro [attach] attribute
8
+ # @return [$2]
9
+ attribute :id, Integer
10
+ attribute :number, Integer
11
+ attribute :title, String
12
+ attribute :description, String, default: ""
13
+ attribute :teaser, String, default: ""
14
+ attribute :usage, RealtyUsage
15
+ attribute :marketing, RealtyMarketing
16
+ attribute :type_id, Integer
17
+ attribute :sub_type_id, Integer
18
+ attribute :geo, GeoLocation
19
+ attribute :area, RealtyArea
20
+ attribute :room_count, RealtyRoomCount
21
+ attribute :price, RealtyPrice
22
+ attribute :status_id, Integer
23
+ attribute :floor, String
24
+ attribute :openimmo_id, String
25
+ attribute :contact, Employee
26
+ attribute :description_furniture, Array[String]
27
+ attribute :furniture, Array[String]
28
+ attribute :images, Array[Image]
29
+ attribute :documents, Array
30
+ attribute :videos, Array
31
+ attribute :images360, Array
32
+ attribute :links, Array
33
+ attribute :available, DateTime
34
+ attribute :created_at, DateTime
35
+ attribute :updated_at, DateTime
36
+
37
+ # @!group Instance Method Summary
38
+
39
+ def initialize(**options)
40
+ super(options)
41
+ @area = RealtyArea.new
42
+ @room_count = RealtyRoomCount.new
43
+ @geo = GeoLocation.new
44
+ @usage = RealtyUsage.new
45
+ @marketing = RealtyMarketing.new
46
+ @price = RealtyPrice.new
47
+ end
48
+
49
+ # @param date [String]
50
+ # @return [String, DateTime]
51
+ def available=(date)
52
+ @available = DateTime.parse(date)
53
+ rescue ArgumentError
54
+ log.error("Failed to convert date: #{date}")
55
+ @available = date
56
+ end
57
+
58
+ def description=(desc)
59
+ @description =
60
+ if @teaser.empty?
61
+ parts = desc.partition("</ul>\n")
62
+ @teaser = parts[0..1].join
63
+ parts.last.empty? ? @teaser : parts.last
64
+ else
65
+ desc
66
+ end
67
+ end
68
+
69
+ def add_image(url, **options)
70
+ @images ||= []
71
+ image = Image.new
72
+ image.add_url(url, options)
73
+ @images << image
74
+ end
75
+
76
+ def type
77
+ end
78
+
79
+ def sub_type
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ class RealtyArea < JustimmoBase
5
+ # @!group Attributes
6
+
7
+ # @!macro [attach] attribute
8
+ # @return [$2]
9
+ attribute :balcony_terrace, Float
10
+ attribute :balcony, Float
11
+ attribute :office, Float
12
+ attribute :garage, Float
13
+ attribute :garden, Float
14
+ attribute :total, Float
15
+ attribute :surface, Float
16
+ attribute :property, Float
17
+ attribute :basement, Float
18
+ attribute :storage, Float
19
+ attribute :loggia, Float
20
+ attribute :floor, Float
21
+ attribute :parking, Float
22
+ attribute :terrace, Float
23
+ attribute :buildable, Float
24
+ attribute :sales, Float
25
+ attribute :living, Float
26
+
27
+ # @!group Instance Method Summary
28
+
29
+ def to_f
30
+ living || floor
31
+ end
32
+
33
+ def to_s
34
+ to_f.to_s
35
+ end
36
+
37
+ def inspect
38
+ "#<#{self.class} #{self}>"
39
+ end
40
+
41
+ def each(&block)
42
+ attributes.each(&block)
43
+ end
44
+
45
+ def map(&block)
46
+ attributes.map(&block)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ class RealtyCategory < JustimmoBase
5
+ # @!group Attributes
6
+
7
+ # @!macro [attach] attribute
8
+ # @return [$2]
9
+ attribute :id, Integer
10
+ attribute :name, String
11
+ attribute :sortablerank, Boolean
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ class RealtyMarketing < JustimmoBase
5
+ # @!group Attributes
6
+
7
+ # @!macro [attach] attribute
8
+ # @return [$2]
9
+ attribute :buy, Boolean
10
+ attribute :rent, Boolean
11
+ end
12
+ end
@@ -0,0 +1,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "monetize"
4
+
5
+ module JustimmoClient::V1
6
+ class RealtyPrice < JustimmoBase
7
+ # @!group Attributes
8
+
9
+ # @!macro [attach] attribute
10
+ # @return [$2]
11
+ attribute :currency, Money::Currency
12
+ attribute :provision, Boolean
13
+ attribute :including_vat, Boolean
14
+ attribute :on_demand, Boolean
15
+ attribute :real_estate_taxes, Float
16
+ attribute :land_registry, Float
17
+ attribute :commission, Integer
18
+ attribute :purcase, Money
19
+ attribute :purcase_net, Money
20
+ attribute :rent_vat, Integer
21
+ attribute :rent, Money
22
+ attribute :rent_net, Money
23
+ attribute :rent_cold, Money
24
+ attribute :rent_including_heating, Money
25
+ attribute :rent_per_sqm, Money
26
+ attribute :deposit, Money
27
+ attribute :operating_cost_vat, Integer
28
+ attribute :operating_cost, Money
29
+ attribute :operating_cost_net, Money
30
+ attribute :operating_cost_per_sqm, Money
31
+
32
+ # @!group Instance Method Summary
33
+
34
+ %w[purcase purcase_net
35
+ operating_cost operating_cost_net operating_cost_per_sqm
36
+ rent rent_net rent_cold rent_including_heating rent_per_sqm deposit
37
+ ].each do |meth|
38
+ define_method("#{meth}=") do |amount|
39
+ log.debug("Using currency #{currency.name} for #{meth}")
40
+ instance_variable_set("@#{meth}", Monetize.parse(amount))
41
+ end
42
+ end
43
+
44
+ def on_demand?
45
+ return on_demand unless on_demand.nil?
46
+ return purcase.zero? unless purcase.nil?
47
+ return rent.zero? unless rent.nil?
48
+ true
49
+ end
50
+
51
+ def rent?
52
+ !rent.nil?
53
+ end
54
+
55
+ def purcase?
56
+ !purcase.nil?
57
+ end
58
+
59
+ def currency=(cur)
60
+ @currency = Money::Currency.new(cur)
61
+ Money.default_currency = @currency
62
+ log.debug("Set currency to #{currency.name}")
63
+ end
64
+
65
+ # FIXME: this needs some proper analysis of the input string
66
+ def commission=(text)
67
+ @commission = text.to_i
68
+ end
69
+
70
+ def commission
71
+ if purcase?
72
+ (get / 100 * @commission) * 1.20
73
+ else
74
+ (get * @commission) * 1.20
75
+ end
76
+ end
77
+
78
+ def rent_vat
79
+ rent_net / 100 * @rent_vat
80
+ end
81
+
82
+ def get
83
+ @purcase || @rent
84
+ end
85
+
86
+ def to_s
87
+ on_demand? ? "on demand" : "#{get} #{get.symbol}"
88
+ end
89
+
90
+ def inspect
91
+ "#<#{self.class} #{self}>"
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ class RealtyRoomCount < JustimmoBase
5
+ # @!group Attributes
6
+
7
+ # @!macro [attach] attribute
8
+ # @return [$2]
9
+ attribute :store, Integer
10
+ attribute :bathroom, Integer
11
+ attribute :balcony_terrace, Integer
12
+ attribute :balcony, Integer
13
+ attribute :garden, Integer
14
+ attribute :garage, Integer
15
+ attribute :loggia, Integer
16
+ attribute :basement, Integer
17
+ attribute :toilet, Integer
18
+ attribute :parking_space, Integer
19
+ attribute :total, Integer
20
+
21
+ # @!group Instance Method Summary
22
+
23
+ def to_i
24
+ total
25
+ end
26
+
27
+ def to_s
28
+ to_i.to_s
29
+ end
30
+
31
+ def inspect
32
+ "#<#{self.class} #{self}>"
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ class RealtyType < JustimmoBase
5
+ # @!group Attributes
6
+
7
+ # @!macro [attach] attribute
8
+ # @return [$2]
9
+ attribute :id, Integer
10
+ attribute :name, String
11
+ end
12
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+ module JustimmoClient::V1
3
+ class RealtyUsage < JustimmoBase
4
+ # @!group Attributes
5
+
6
+ # @!method living?
7
+ # @api private
8
+ # @return [Boolean]
9
+
10
+ # @!method business?
11
+ # @api private
12
+ # @return [Boolean]
13
+
14
+ # @!method investment?
15
+ # @api private
16
+ # @return [Boolean]
17
+
18
+ # @!macro [attach] attribute
19
+ # @return [$2]
20
+ attribute :living, Boolean
21
+ attribute :business, Boolean
22
+ attribute :investment, Boolean
23
+ end
24
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ class Region < JustimmoBase
5
+ # @!group Attributes
6
+
7
+ # @!macro [attach] attribute
8
+ # @return [$2]
9
+ attribute :id, Integer
10
+ attribute :name, String
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ module JSON
5
+ class AttachmentImageRepresenter < JustimmoRepresenter
6
+ property :small
7
+ property :small2
8
+ property :medium
9
+ property :medium2
10
+ property :big
11
+ property :big2
12
+ property :fullhd
13
+ property :path
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ module JSON
5
+ class AttachmentRepresenter < JustimmoRepresenter
6
+ property :category
7
+ property :origin
8
+ property :title
9
+ property :format
10
+ property :data,
11
+ decorator: AttachmentImageRepresenter,
12
+ class: AttachmentImage
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ module JSON
5
+ class ContactRepresenter < JustimmoRepresenter
6
+ property :id
7
+ property :number
8
+ property :last_name
9
+ property :first_name
10
+ property :phone
11
+ property :phone_mobile
12
+ property :salutation
13
+ property :email
14
+ property :email_feedback
15
+ property :company
16
+ property :street
17
+ property :zip_code
18
+ property :location
19
+ property :website
20
+
21
+ property :picture,
22
+ decorator: AttachmentImageRepresenter,
23
+ class: AttachmentImage
24
+
25
+ property :attachment,
26
+ decorator: AttachmentRepresenter,
27
+ class: Attachment
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "representable/json"
4
+
5
+ module JustimmoClient::V1
6
+ module JSON
7
+ class JustimmoRepresenter < Representable::Decorator
8
+ include Representable::JSON
9
+
10
+ defaults render_nil: true
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ module JSON
5
+ class LocationRepresenter < JustimmoRepresenter
6
+ property :zip_code
7
+ property :location
8
+ property :federal_state
9
+ property :country
10
+ property :latitude
11
+ property :longitude
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ module JSON
5
+ class RealtyCategoryRepresenter < JustimmoRepresenter
6
+ property :usage, class: RealtyUsage do
7
+ property :living
8
+ property :business
9
+ property :investment
10
+ end
11
+
12
+ property :marketing, class: RealtyMarketing do
13
+ property :buy
14
+ property :rent
15
+ end
16
+
17
+ property :type_id
18
+ property :sub_type_id
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ module JSON
5
+ class RealtyDetailRepresenter < JustimmoRepresenter
6
+ property :category,
7
+ decorator: RealtyCategoryRepresenter,
8
+ class: RealtyCategory
9
+
10
+ property :location,
11
+ decorator: LocationRepresenter,
12
+ class: Location
13
+
14
+ property :contact,
15
+ decorator: ContactRepresenter,
16
+ class: Contact
17
+
18
+ property :documents
19
+ property :images360
20
+ property :videos
21
+ property :links
22
+
23
+ property :title
24
+ property :description
25
+ property :description_furniture
26
+ property :furniture
27
+
28
+ property :balcony_terrace_area, as: :balkon_terrasse_flaeche
29
+ property :balcony_area, as: :balkons_flaeche
30
+ property :office_area, as: :bueroflaeche
31
+ property :garage_area, as: :garagen_flaeche
32
+ property :garden_area, as: :gartenflaeche
33
+ property :total_area, as: :gesamtflaeche
34
+ property :surface_area, as: :grundflaeche
35
+ property :property_area, as: :grundstueksflaeche
36
+ property :basement_area, as: :kellerflaeche
37
+ property :storage_area, as: :lagerflaeche
38
+ property :loggia_area, as: :loggias_flaeche
39
+ property :floor_area, as: :nutzflaeche
40
+ property :parking_area, as: :stellplatz_flaeche
41
+ property :terrace_area, as: :terrassen_flaeche
42
+ property :buildable_area, as: :verbaubare_flaeche
43
+ property :sales_area, as: :verkaufsflaeche
44
+ property :living_area, as: :wohnflaeche
45
+ property :store_rooms, as: :anzahl_abstellraum
46
+ property :bathrooms, as: :anzahl_badezimmer
47
+ property :balconies_terraces, as: :anzahl_balkon_terrassen
48
+ property :balconies, as: :anzahl_balkone
49
+ property :balconies, as: :anzahl_balkons
50
+ property :gardens, as: :anzahl_garten
51
+ property :garages, as: :anzahl_garagen
52
+ property :loggias, as: :anzahl_loggias
53
+ property :basements, as: :anzahl_keller
54
+ property :toilet_rooms, as: :anzahl_sep_wc
55
+ property :parking_spaces, as: :anzahl_stellplaetze
56
+ property :rooms, as: :anzahl_zimmer
57
+
58
+ property :available_from
59
+ property :status_id
60
+ property :id
61
+ property :number
62
+ property :openimmo_id
63
+
64
+ collection :attachments,
65
+ decorator: AttachmentRepresenter,
66
+ class: Attachment
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ # @api private
5
+ module JSON
6
+ extend JustimmoClient::Utils
7
+
8
+ autoload_dir "#{__dir__}/json/*_representer.rb"
9
+ end
10
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ module XML
5
+ class CityRepresenter < JustimmoRepresenter
6
+ self.representation_wrap = :postleitzahl
7
+
8
+ property :id
9
+ property :country_id, as: :landid
10
+ property :region_id, as: :regionid
11
+ property :zip_code, as: :plz
12
+ property :location, as: :ort
13
+ property :federal_state_id, as: :bundeslandid
14
+
15
+ collection_representer class: City
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ module XML
5
+ class ContactRepresenter < EmployeeRepresenter
6
+ property :email_feedback
7
+ property :email, as: :email_direkt
8
+ property :last_name, as: :name
9
+ property :company, as: :firma
10
+ property :salutation, as: :anrede
11
+ property :phone, as: :tel_zentrale
12
+ property :mobile, as: :tel_handy
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ module XML
5
+ class CountryRepresenter < JustimmoRepresenter
6
+ self.representation_wrap = :land
7
+
8
+ property :id
9
+ property :alpha2, as: :iso2
10
+ property :alpha3, as: :iso3
11
+
12
+ collection_representer class: Country
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ module XML
5
+ class EmployeeListRepresenter < JustimmoRepresenter
6
+ nested :kategorie do
7
+ collection :employees,
8
+ as: :mitarbeiter,
9
+ wraps: :mitarbeiter,
10
+ class: Employee,
11
+ decorator: EmployeeRepresenter
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ module XML
5
+ class EmployeeRepresenter < JustimmoRepresenter
6
+ property :id
7
+ property :number, as: :personennummer
8
+ property :first_name, as: :vorname
9
+ property :last_name, as: :nachname
10
+ property :salutation, as: :titel
11
+ property :position
12
+ property :phone, as: :tel
13
+ property :mobile, as: :handy
14
+ property :fax
15
+ property :email
16
+ property :street, as: :strasse
17
+ property :zip_code, as: :plz
18
+ property :location, as: :ort
19
+ property :website, as: :url
20
+
21
+ property :picture,
22
+ as: :bild,
23
+ class: Image do
24
+ %i[small medium big pfad_medium].each do |size|
25
+ property size, setter: ->(represented:, fragment:, **) { represented.add_url(fragment, default: :user_big) }
26
+ end
27
+ end
28
+
29
+ # NOTE: Just contains the picture again
30
+ # Comment it out for now in case we still need it later.
31
+ #
32
+ # nested :user_defined_anyfield do
33
+ # property :attachment,
34
+ # as: :anhang,
35
+ # class: Image do
36
+ # property :category, as: :gruppe, attribute: true
37
+ # property :origin, as: :location, attribute: true
38
+ # property :title, as: :anhangtitel
39
+ # nested :daten do
40
+ # property :path, as: :pfad, setter: ->(represented:, fragment:, **) { represented.add_url(fragment, default: :user_big) }
41
+ # end
42
+ # end
43
+ # end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient::V1
4
+ module XML
5
+ class FederalStateRepresenter < JustimmoRepresenter
6
+ self.representation_wrap = :bundesland
7
+
8
+ property :id
9
+ property :name
10
+ property :country_id, as: :landid
11
+ property :fips, as: :fipscode
12
+ property :iso, as: :iso31662code
13
+
14
+ collection_representer class: FederalState
15
+ end
16
+ end
17
+ end