justimmo_client 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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