justimmo_client 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.simplecov +10 -0
  3. data/lib/justimmo_client/api/v1/interfaces/justimmo_interface.rb +1 -0
  4. data/lib/justimmo_client/api/v1/interfaces/realty_interface.rb +6 -5
  5. data/lib/justimmo_client/api/v1/models/attachment.rb +38 -0
  6. data/lib/justimmo_client/api/v1/models/city.rb +1 -1
  7. data/lib/justimmo_client/api/v1/models/country.rb +19 -10
  8. data/lib/justimmo_client/api/v1/models/employee.rb +26 -19
  9. data/lib/justimmo_client/api/v1/models/geo_location.rb +3 -5
  10. data/lib/justimmo_client/api/v1/models/justimmo_base.rb +1 -0
  11. data/lib/justimmo_client/api/v1/models/realty.rb +33 -36
  12. data/lib/justimmo_client/api/v1/models/realty_cost.rb +68 -0
  13. data/lib/justimmo_client/api/v1/models/realty_marketing.rb +1 -4
  14. data/lib/justimmo_client/api/v1/models/realty_price.rb +33 -57
  15. data/lib/justimmo_client/api/v1/models/realty_usage.rb +1 -5
  16. data/lib/justimmo_client/api/v1/representers/json/attachment_representer.rb +14 -0
  17. data/lib/justimmo_client/api/v1/representers/json/employee_representer.rb +3 -7
  18. data/lib/justimmo_client/api/v1/representers/json/realty_representer.rb +92 -37
  19. data/lib/justimmo_client/api/v1/representers/xml/attachment_representer.rb +31 -0
  20. data/lib/justimmo_client/api/v1/representers/xml/employee_representer.rb +11 -22
  21. data/lib/justimmo_client/api/v1/representers/xml/justimmo_representer.rb +1 -0
  22. data/lib/justimmo_client/api/v1/representers/xml/realty_price_representer.rb +4 -1
  23. data/lib/justimmo_client/api/v1/representers/xml/realty_representer.rb +192 -1
  24. data/lib/justimmo_client/api/v1/representers/xml/realty_type_representer.rb +2 -0
  25. data/lib/justimmo_client/autoload.rb +1 -0
  26. data/lib/justimmo_client/core/api_helpers.rb +29 -0
  27. data/lib/justimmo_client/core/config.rb +7 -1
  28. data/lib/justimmo_client/core/utils.rb +1 -25
  29. data/lib/justimmo_client/interface.rb +1 -0
  30. data/lib/justimmo_client/version.rb +1 -1
  31. data/locales/de.yml +3 -0
  32. metadata +8 -14
  33. data/lib/justimmo_client/api/v1/models/file.rb +0 -64
  34. data/lib/justimmo_client/api/v1/models/image.rb +0 -10
  35. data/lib/justimmo_client/api/v1/representers/json/contact_representer.rb +0 -15
  36. data/lib/justimmo_client/api/v1/representers/json/geo_location_representer.rb +0 -15
  37. data/lib/justimmo_client/api/v1/representers/json/realty_area_representer.rb +0 -27
  38. data/lib/justimmo_client/api/v1/representers/json/realty_price_representer.rb +0 -43
  39. data/lib/justimmo_client/api/v1/representers/json/realty_room_count_representer.rb +0 -21
  40. data/lib/justimmo_client/api/v1/representers/xml/contact_representer.rb +0 -15
  41. data/lib/justimmo_client/api/v1/representers/xml/realty_area_representer.rb +0 -28
  42. data/lib/justimmo_client/api/v1/representers/xml/realty_detail_representer.rb +0 -96
  43. data/lib/justimmo_client/api/v1/representers/xml/realty_list_representer.rb +0 -85
  44. data/lib/justimmo_client/api/v1/representers/xml/realty_room_count_representer.rb +0 -22
@@ -21,6 +21,8 @@ module JustimmoClient::V1
21
21
  "Parken" => :parking
22
22
  }.freeze
23
23
 
24
+ private_constant :TRANSLATION_MAPPING
25
+
24
26
  property :id
25
27
  property :name,
26
28
  parse_filter: ->(fragment, **) { TRANSLATION_MAPPING[fragment] }
@@ -10,6 +10,7 @@ module JustimmoClient
10
10
  autoload :Config, "justimmo_client/core/config"
11
11
  autoload :Logging, "justimmo_client/core/logging"
12
12
  autoload :Utils, "justimmo_client/core/utils"
13
+ autoload :API, "justimmo_client/core/api_helpers"
13
14
  autoload :Caching, "justimmo_client/core/caching"
14
15
  autoload :OptionParser, "justimmo_client/option_parser"
15
16
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JustimmoClient
4
+ module API
5
+ def versioned_api(*name)
6
+ (["JustimmoClient::V#{JustimmoClient::Config.api_ver}"] + name).join("::").constantize
7
+ end
8
+
9
+ def api(name)
10
+ "JustimmoClient::#{name.to_s.classify}".constantize
11
+ end
12
+
13
+ def representer(name, type = :xml)
14
+ versioned_api(type.to_s.classify, "#{name.to_s.classify}Representer")
15
+ end
16
+
17
+ def model(name)
18
+ versioned_api(name.to_s.classify)
19
+ end
20
+
21
+ def request(name)
22
+ versioned_api("#{name.to_s.classify}Request")
23
+ end
24
+
25
+ def interface(name)
26
+ versioned_api("#{name.to_s.classify}Interface")
27
+ end
28
+ end
29
+ end
@@ -3,6 +3,7 @@
3
3
  require "base64"
4
4
  require "active_support/configurable"
5
5
  require "justimmo_client/errors"
6
+ require "money"
6
7
 
7
8
  module JustimmoClient
8
9
  # Configuration options storage
@@ -23,6 +24,7 @@ module JustimmoClient
23
24
  config_accessor(:cache) { nil }
24
25
  config_accessor(:request_retries) { 3 }
25
26
  config_accessor(:proxy) { ENV.fetch("JUSTIMMO_PROXY", nil) }
27
+ config_accessor(:default_currency) { ::Money.default_currency = ::Money::Currency.new(:eur) }
26
28
 
27
29
  class << self
28
30
  def configure
@@ -41,8 +43,12 @@ module JustimmoClient
41
43
  raise JustimmoClient::UnsupportedAPIVersion, api_ver unless supported_ver
42
44
  end
43
45
 
44
- def url
46
+ def credentials
45
47
  validate_credentials
48
+ @_config[:credentials]
49
+ end
50
+
51
+ def url
46
52
  return "#{base_url}/v#{api_ver}" if self.base_url.start_with?("http")
47
53
  "#{secure ? 'https' : 'http'}://#{base_url}/v#{api_ver}"
48
54
  end
@@ -15,34 +15,10 @@ module JustimmoClient
15
15
  end
16
16
  end
17
17
 
18
- def versioned_api(*name)
19
- (["JustimmoClient::V#{JustimmoClient::Config.api_ver}"] + name).join("::").constantize
20
- end
21
-
22
- def api(name)
23
- "JustimmoClient::#{name.to_s.classify}".constantize
24
- end
25
-
26
- def representer(name, type = :xml)
27
- versioned_api(type.to_s.classify, "#{name.to_s.classify}Representer")
28
- end
29
-
30
- def model(name)
31
- versioned_api(name.to_s.classify)
32
- end
33
-
34
- def request(name)
35
- versioned_api("#{name.to_s.classify}Request")
36
- end
37
-
38
- def interface(name)
39
- versioned_api("#{name.to_s.classify}Interface")
40
- end
41
-
42
18
  def translate(text)
43
19
  I18n.translate("justimmo_client.#{text}", raise: true)
44
20
  rescue I18n::MissingTranslationData
45
- text.split(".").last.capitalize
21
+ text.split(".").last.titleize
46
22
  end
47
23
  end
48
24
  end
@@ -1,5 +1,6 @@
1
1
  module JustimmoClient
2
2
  extend JustimmoClient::Utils
3
+ extend JustimmoClient::API
3
4
 
4
5
  module_function
5
6
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JustimmoClient
4
- VERSION = "0.6.3"
4
+ VERSION = "0.6.4"
5
5
  end
data/locales/de.yml CHANGED
@@ -20,3 +20,6 @@ de:
20
20
  recreational_property_business: Freizeitimmobilie gewerblich
21
21
  yield: Zinshaus / Renditeobjekt
22
22
  parking: Parken
23
+
24
+ price:
25
+ on_demand: Auf Anfrage
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: justimmo_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Auernig
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-20 00:00:00.000000000 Z
11
+ date: 2017-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -195,6 +195,7 @@ files:
195
195
  - ".gitlab-ci.yml"
196
196
  - ".rspec"
197
197
  - ".rubocop.yml"
198
+ - ".simplecov"
198
199
  - Gemfile
199
200
  - LICENSE
200
201
  - README.md
@@ -208,17 +209,17 @@ files:
208
209
  - lib/justimmo_client/api/v1/interfaces/employee_interface.rb
209
210
  - lib/justimmo_client/api/v1/interfaces/justimmo_interface.rb
210
211
  - lib/justimmo_client/api/v1/interfaces/realty_interface.rb
212
+ - lib/justimmo_client/api/v1/models/attachment.rb
211
213
  - lib/justimmo_client/api/v1/models/city.rb
212
214
  - lib/justimmo_client/api/v1/models/country.rb
213
215
  - lib/justimmo_client/api/v1/models/employee.rb
214
216
  - lib/justimmo_client/api/v1/models/federal_state.rb
215
- - lib/justimmo_client/api/v1/models/file.rb
216
217
  - lib/justimmo_client/api/v1/models/geo_location.rb
217
- - lib/justimmo_client/api/v1/models/image.rb
218
218
  - lib/justimmo_client/api/v1/models/justimmo_base.rb
219
219
  - lib/justimmo_client/api/v1/models/realty.rb
220
220
  - lib/justimmo_client/api/v1/models/realty_area.rb
221
221
  - lib/justimmo_client/api/v1/models/realty_category.rb
222
+ - lib/justimmo_client/api/v1/models/realty_cost.rb
222
223
  - lib/justimmo_client/api/v1/models/realty_marketing.rb
223
224
  - lib/justimmo_client/api/v1/models/realty_price.rb
224
225
  - lib/justimmo_client/api/v1/models/realty_room_count.rb
@@ -226,42 +227,35 @@ files:
226
227
  - lib/justimmo_client/api/v1/models/realty_usage.rb
227
228
  - lib/justimmo_client/api/v1/models/region.rb
228
229
  - lib/justimmo_client/api/v1/representers/json.rb
230
+ - lib/justimmo_client/api/v1/representers/json/attachment_representer.rb
229
231
  - lib/justimmo_client/api/v1/representers/json/city_representer.rb
230
- - lib/justimmo_client/api/v1/representers/json/contact_representer.rb
231
232
  - lib/justimmo_client/api/v1/representers/json/country_representer.rb
232
233
  - lib/justimmo_client/api/v1/representers/json/employee_representer.rb
233
234
  - lib/justimmo_client/api/v1/representers/json/federal_state_representer.rb
234
- - lib/justimmo_client/api/v1/representers/json/geo_location_representer.rb
235
235
  - lib/justimmo_client/api/v1/representers/json/justimmo_representer.rb
236
- - lib/justimmo_client/api/v1/representers/json/realty_area_representer.rb
237
236
  - lib/justimmo_client/api/v1/representers/json/realty_category_representer.rb
238
- - lib/justimmo_client/api/v1/representers/json/realty_price_representer.rb
239
237
  - lib/justimmo_client/api/v1/representers/json/realty_representer.rb
240
- - lib/justimmo_client/api/v1/representers/json/realty_room_count_representer.rb
241
238
  - lib/justimmo_client/api/v1/representers/json/realty_type_representer.rb
242
239
  - lib/justimmo_client/api/v1/representers/json/region_representer.rb
243
240
  - lib/justimmo_client/api/v1/representers/xml.rb
241
+ - lib/justimmo_client/api/v1/representers/xml/attachment_representer.rb
244
242
  - lib/justimmo_client/api/v1/representers/xml/city_representer.rb
245
- - lib/justimmo_client/api/v1/representers/xml/contact_representer.rb
246
243
  - lib/justimmo_client/api/v1/representers/xml/country_representer.rb
247
244
  - lib/justimmo_client/api/v1/representers/xml/employee_list_representer.rb
248
245
  - lib/justimmo_client/api/v1/representers/xml/employee_representer.rb
249
246
  - lib/justimmo_client/api/v1/representers/xml/federal_state_representer.rb
250
247
  - lib/justimmo_client/api/v1/representers/xml/geo_location_representer.rb
251
248
  - lib/justimmo_client/api/v1/representers/xml/justimmo_representer.rb
252
- - lib/justimmo_client/api/v1/representers/xml/realty_area_representer.rb
253
249
  - lib/justimmo_client/api/v1/representers/xml/realty_category_representer.rb
254
- - lib/justimmo_client/api/v1/representers/xml/realty_detail_representer.rb
255
- - lib/justimmo_client/api/v1/representers/xml/realty_list_representer.rb
256
250
  - lib/justimmo_client/api/v1/representers/xml/realty_price_representer.rb
257
251
  - lib/justimmo_client/api/v1/representers/xml/realty_representer.rb
258
- - lib/justimmo_client/api/v1/representers/xml/realty_room_count_representer.rb
259
252
  - lib/justimmo_client/api/v1/representers/xml/realty_type_representer.rb
260
253
  - lib/justimmo_client/api/v1/representers/xml/region_representer.rb
261
254
  - lib/justimmo_client/api/v1/requests/employee_request.rb
262
255
  - lib/justimmo_client/api/v1/requests/justimmo_request.rb
263
256
  - lib/justimmo_client/api/v1/requests/realty_request.rb
264
257
  - lib/justimmo_client/autoload.rb
258
+ - lib/justimmo_client/core/api_helpers.rb
265
259
  - lib/justimmo_client/core/caching.rb
266
260
  - lib/justimmo_client/core/config.rb
267
261
  - lib/justimmo_client/core/logging.rb
@@ -1,64 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JustimmoClient::V1
4
- class File < JustimmoBase
5
- BASE_URL = "https://files.justimmo.at/public"
6
-
7
- # @!group Attributes
8
-
9
- # @!macro [attach] attribute
10
- # @return [$2]
11
- attribute :title, String
12
- attribute :category, Symbol
13
- attribute :origin, Symbol
14
- attribute :type, Symbol
15
- attribute :name, String
16
- attribute :format, String
17
-
18
- # @!group Instance Method Summary
19
-
20
- def initialize(**options)
21
- super(options)
22
- @settings = []
23
- end
24
-
25
- def category=(cat)
26
- @category =
27
- case cat
28
- when "BILD" then :image
29
- when "TITELBILD" then :title_image
30
- else nil
31
- end
32
- end
33
-
34
- def origin=(orig)
35
- @origin = orig&.downcase&.to_sym
36
- end
37
-
38
- def get(setting = nil)
39
- return nil if @default.nil? || @settings.empty?
40
- setting = (@settings.include?(setting) ? setting : @default)
41
- "#{BASE_URL}/#{@type}/#{setting}/#{@name}"
42
- end
43
-
44
- alias [] get
45
-
46
- def add_url(url, default: nil)
47
- uri_path = URI.parse(url).path
48
- @name ||= ::File.basename(uri_path)
49
- @format ||= ::File.extname(@name)
50
- @settings << ::URI.parse(url).path.split("/")[-2].to_sym
51
- @default = default || @settings.last
52
- end
53
-
54
- alias path= add_url
55
-
56
- def to_s
57
- get
58
- end
59
-
60
- def inspect
61
- "#<#{self.class} #{self}>"
62
- end
63
- end
64
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JustimmoClient::V1
4
- class Image < File
5
- def initialize(**options)
6
- super(options)
7
- @type = :pic
8
- end
9
- end
10
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JustimmoClient::V1
4
- module JSON
5
- class ContactRepresenter < EmployeeRepresenter
6
- property :email_feedback
7
- property :email
8
- property :last_name
9
- property :company
10
- property :salutation
11
- property :phone
12
- property :mobile
13
- end
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JustimmoClient::V1
4
- module JSON
5
- class GeoLocationRepresenter < JustimmoRepresenter
6
- property :zip_code
7
- property :location
8
- property :federal_state
9
- property :floor
10
- property :country
11
- property :latitude
12
- property :longitude
13
- end
14
- end
15
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JustimmoClient::V1
4
- module JSON
5
- class RealtyAreaRepresenter < JustimmoRepresenter
6
- %i[
7
- balcony_terrace
8
- balcony
9
- office
10
- garage
11
- garden
12
- total
13
- surface
14
- property
15
- basement
16
- storage
17
- loggia
18
- floor
19
- parking
20
- terrace
21
- buildable
22
- sales
23
- living
24
- ].each { |k| property k }
25
- end
26
- end
27
- end
@@ -1,43 +0,0 @@
1
- module JustimmoClient::V1
2
- module JSON
3
- class RealtyPriceRepresenter < JustimmoRepresenter
4
- %i[
5
- purcase
6
- purcase_net
7
- rent
8
- rent_net
9
- rent_cold
10
- rent_including_heating
11
- deposit
12
- rent_per_sqm
13
- operating_cost
14
- operating_cost_net
15
- operating_cost_per_sqm
16
- ].each do |k|
17
- property k,
18
- setter: ->(represented:, fragment:, **) { represented.public_send("#{k}=", fragment) },
19
- getter: ->(represented:, **) { represented.public_send(k)&.to_f }
20
- end
21
-
22
- property :currency,
23
- setter: ->(represented:, fragment:, **) { represented.currency = fragment },
24
- getter: ->(represented:, **) { represented.currency&.id }
25
-
26
- property :commission,
27
- setter: ->(represented:, fragment:, **) { represented.commission = fragment },
28
- getter: ->(represented:, **) { represented.instance_variable_get(:@commission) }
29
-
30
- property :rent_vat,
31
- setter: ->(represented:, fragment:, **) { represented.rent_vat = fragment },
32
- getter: ->(represented:, **) { represented.instance_variable_get(:@rent_vat) }
33
-
34
- property :provision
35
- property :including_vat
36
- property :on_demand
37
-
38
- property :real_estate_taxes
39
- property :land_registry
40
- property :operating_cost_vat
41
- end
42
- end
43
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JustimmoClient::V1
4
- module JSON
5
- class RealtyRoomCountRepresenter < JustimmoRepresenter
6
- %i[
7
- store
8
- bathroom
9
- balcony_terrace
10
- balcony
11
- garden
12
- garage
13
- loggia
14
- basement
15
- toilet
16
- parking_space
17
- total
18
- ].each { |k| property k }
19
- end
20
- end
21
- end
@@ -1,15 +0,0 @@
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