immobilienscout 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8e8f0abea819ff2c7b1d778f3bf030a43144f64a6fe7e8798f0784ccd8fab08f
4
- data.tar.gz: ba8baca86a75ea2616ad5d89c6f5d75705dedd46252e4be2c765c7b508dc2fd9
3
+ metadata.gz: 11e1ff705d11d8a493b83fff1bf5d0cee946504d9f072d330aa2e846b8743aee
4
+ data.tar.gz: 32e6c61e113c141ae8fb4d74803b5959d9e3215d96d7da26bc5554080331c310
5
5
  SHA512:
6
- metadata.gz: b26da3ad4e1b863d7786878832c7fac80435087787c395f611a4e7e9e4765a29fcacaf14ce2d244307561e16c8f50b62cdbf4e4c2dde7248b60cb51e04b6de3e
7
- data.tar.gz: 8226a4ed2e777a9a0537fd07c28212b8734be7786ce6cbce3b931f1f0c2cf2a10fc21f9bc49e59bc212da252e2b47b8d0fa32068157bace45db1603f864b0122
6
+ metadata.gz: 0aeaa7f5f6deb29f1bdff81347a2eb070d8127fab79d5b7eb35fd99a291e8849d418f8cc119cc10f46f7f0cd2debb88d361e7123ea89cf7179b11d1245ff695e
7
+ data.tar.gz: 1a41f9065dd1f6134c9a7eff4d9fb0c1f21cfe5e72fbe7d470baca26f5f24257bd0c7245ba15135d026936efc22ac989022f32e2780a1a5c95eec0a18cbed1d5
@@ -0,0 +1,68 @@
1
+ require:
2
+ - rubocop-rspec
3
+ - rubocop-performance
4
+
5
+ AllCops:
6
+ DisabledByDefault: false
7
+ DisplayCopNames: true
8
+ TargetRubyVersion: 2.6
9
+ Exclude:
10
+ - bin/bundle
11
+ - 'vendor/**/*'
12
+ - 'gemfiles/vendor/**/*'
13
+
14
+ #################### Lint ################################
15
+
16
+ Style/Documentation:
17
+ Enabled: false
18
+
19
+ Metrics/ClassLength:
20
+ Enabled: true
21
+ Max: 100
22
+
23
+ Metrics/AbcSize:
24
+ Enabled: true
25
+ Max: 20
26
+
27
+ Layout/LineLength:
28
+ Enabled: true
29
+ Max: 120
30
+ Exclude:
31
+ - 'spec/**/*.rb'
32
+
33
+ Style/MixinUsage:
34
+ Enabled: true
35
+ Exclude:
36
+ - bin/setup
37
+ - bin/update
38
+
39
+ Style/ClassAndModuleChildren:
40
+ Enabled: false
41
+
42
+ Metrics/BlockLength:
43
+ Exclude:
44
+ - 'spec/**/*.rb'
45
+
46
+ Style/HashEachMethods:
47
+ Enabled: true
48
+
49
+ Style/HashTransformKeys:
50
+ Enabled: true
51
+
52
+ Style/HashTransformValues:
53
+ Enabled: true
54
+
55
+ RSpec/ContextWording:
56
+ Enabled: false
57
+
58
+ RSpec/ExampleLength:
59
+ Enabled: false
60
+
61
+ RSpec/FilePath:
62
+ Enabled: false
63
+
64
+ RSpec/MultipleExpectations:
65
+ Enabled: false
66
+
67
+ RSpec/NestedGroups:
68
+ Enabled: false
@@ -5,5 +5,7 @@ cache: bundler
5
5
  rvm:
6
6
  - 2.4.6
7
7
  - 2.5.5
8
- - 2.6.3
8
+ - 2.6.5
9
+ script:
10
+ - bundle exec rubocop
9
11
  before_install: gem install bundler -v 2.0.2
@@ -5,6 +5,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
+ Improve error handling.
8
9
 
9
10
  ## [0.0.6] - 2020-02-18
10
11
  Adding update endpoint to update a property
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gemspec
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- immobilienscout (0.0.6)
4
+ immobilienscout (0.0.7)
5
5
  activesupport
6
6
  json
7
7
  multipart-post
@@ -9,46 +9,67 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activesupport (5.2.4.1)
12
+ activesupport (5.2.4.2)
13
13
  concurrent-ruby (~> 1.0, >= 1.0.2)
14
14
  i18n (>= 0.7, < 2)
15
15
  minitest (~> 5.1)
16
16
  tzinfo (~> 1.1)
17
- addressable (2.6.0)
18
- public_suffix (>= 2.0.2, < 4.0)
17
+ addressable (2.7.0)
18
+ public_suffix (>= 2.0.2, < 5.0)
19
+ ast (2.4.0)
19
20
  byebug (9.1.0)
20
- concurrent-ruby (1.1.5)
21
+ concurrent-ruby (1.1.6)
21
22
  crack (0.4.3)
22
23
  safe_yaml (~> 1.0.0)
23
24
  diff-lcs (1.3)
24
- hashdiff (1.0.0)
25
+ hashdiff (1.0.1)
25
26
  i18n (1.8.2)
26
27
  concurrent-ruby (~> 1.0)
28
+ jaro_winkler (1.5.4)
27
29
  json (2.3.0)
28
30
  minitest (5.14.0)
29
31
  multipart-post (2.1.1)
30
- public_suffix (3.1.1)
32
+ parallel (1.19.1)
33
+ parser (2.7.0.5)
34
+ ast (~> 2.4.0)
35
+ public_suffix (4.0.3)
36
+ rainbow (3.0.0)
31
37
  rake (12.3.3)
32
- rspec (3.8.0)
33
- rspec-core (~> 3.8.0)
34
- rspec-expectations (~> 3.8.0)
35
- rspec-mocks (~> 3.8.0)
36
- rspec-core (3.8.2)
37
- rspec-support (~> 3.8.0)
38
- rspec-expectations (3.8.4)
38
+ rexml (3.2.4)
39
+ rspec (3.9.0)
40
+ rspec-core (~> 3.9.0)
41
+ rspec-expectations (~> 3.9.0)
42
+ rspec-mocks (~> 3.9.0)
43
+ rspec-core (3.9.1)
44
+ rspec-support (~> 3.9.1)
45
+ rspec-expectations (3.9.1)
39
46
  diff-lcs (>= 1.2.0, < 2.0)
40
- rspec-support (~> 3.8.0)
41
- rspec-mocks (3.8.1)
47
+ rspec-support (~> 3.9.0)
48
+ rspec-mocks (3.9.1)
42
49
  diff-lcs (>= 1.2.0, < 2.0)
43
- rspec-support (~> 3.8.0)
44
- rspec-support (3.8.2)
50
+ rspec-support (~> 3.9.0)
51
+ rspec-support (3.9.2)
52
+ rubocop (0.80.1)
53
+ jaro_winkler (~> 1.5.1)
54
+ parallel (~> 1.10)
55
+ parser (>= 2.7.0.1)
56
+ rainbow (>= 2.2.2, < 4.0)
57
+ rexml
58
+ ruby-progressbar (~> 1.7)
59
+ unicode-display_width (>= 1.4.0, < 1.7)
60
+ rubocop-performance (1.5.2)
61
+ rubocop (>= 0.71.0)
62
+ rubocop-rspec (1.38.1)
63
+ rubocop (>= 0.68.1)
64
+ ruby-progressbar (1.10.1)
45
65
  safe_yaml (1.0.5)
46
66
  thread_safe (0.3.6)
47
67
  timecop (0.8.1)
48
68
  tzinfo (1.2.6)
49
69
  thread_safe (~> 0.1)
50
- vcr (5.0.0)
51
- webmock (3.6.2)
70
+ unicode-display_width (1.6.1)
71
+ vcr (5.1.0)
72
+ webmock (3.8.3)
52
73
  addressable (>= 2.3.6)
53
74
  crack (>= 0.3.2)
54
75
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -62,6 +83,9 @@ DEPENDENCIES
62
83
  immobilienscout!
63
84
  rake (~> 12.0)
64
85
  rspec (~> 3.0)
86
+ rubocop (~> 0.72)
87
+ rubocop-performance
88
+ rubocop-rspec
65
89
  timecop (~> 0.8.1)
66
90
  vcr (~> 5.0)
67
91
  webmock (~> 3.6)
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "bundler/setup"
4
- require "immobilienscout"
4
+ require 'bundler/setup'
5
+ require 'immobilienscout'
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +11,5 @@ require "immobilienscout"
10
11
  # require "pry"
11
12
  # Pry.start
12
13
 
13
- require "irb"
14
+ require 'irb'
14
15
  IRB.start(__FILE__)
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'immobilienscout/version'
4
6
 
7
+ # rubocop:disable Metrics/BlockLength
5
8
  Gem::Specification.new do |spec|
6
9
  spec.name = 'immobilienscout'
7
10
  spec.version = Immobilienscout::VERSION
@@ -19,21 +22,25 @@ Gem::Specification.new do |spec|
19
22
 
20
23
  # Specify which files should be added to the gem when it is released.
21
24
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
22
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
25
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
23
26
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
24
27
  end
25
28
  spec.bindir = 'exe'
26
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
30
  spec.require_paths = ['lib']
28
31
 
32
+ spec.add_dependency 'activesupport'
29
33
  spec.add_dependency 'json'
30
34
  spec.add_dependency 'multipart-post'
31
- spec.add_dependency 'activesupport'
32
35
  spec.add_development_dependency 'bundler', '~> 2.0'
36
+ spec.add_development_dependency 'byebug', '~> 9.0'
33
37
  spec.add_development_dependency 'rake', '~> 12.0'
34
38
  spec.add_development_dependency 'rspec', '~> 3.0'
35
- spec.add_development_dependency 'byebug', '~> 9.0'
39
+ spec.add_development_dependency('rubocop', ['~>0.72'])
40
+ spec.add_development_dependency('rubocop-performance')
41
+ spec.add_development_dependency('rubocop-rspec')
36
42
  spec.add_development_dependency 'timecop', '~> 0.8.1'
37
43
  spec.add_development_dependency 'vcr', '~> 5.0'
38
44
  spec.add_development_dependency 'webmock', '~> 3.6'
39
45
  end
46
+ # rubocop:enable Metrics/BlockLength
@@ -1,13 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support'
2
4
  require 'active_support/core_ext'
3
5
  require 'immobilienscout/authenticator'
4
6
  require 'immobilienscout/request'
7
+ require 'immobilienscout/request_error_handler'
5
8
  require 'immobilienscout/response_parser'
6
9
  require 'immobilienscout/client'
7
10
  require 'immobilienscout/api/property'
8
11
  require 'immobilienscout/api/attachment'
9
12
  require 'immobilienscout/api/report'
10
13
  require 'immobilienscout/errors/invalid_request'
14
+ require 'immobilienscout/errors/common_resource_not_found'
15
+ require 'immobilienscout/errors/resource_not_found'
16
+ require 'immobilienscout/errors/resource_validation'
11
17
 
12
18
  module Immobilienscout
13
19
  class << self
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Immobilienscout
2
4
  module API
3
5
  class Attachment
@@ -10,7 +12,9 @@ module Immobilienscout
10
12
  params = { attachment: binary_file, metadata: metadata_file }
11
13
  parsed_response = Immobilienscout::Request.new(url, params).post_with_multipart
12
14
 
13
- raise Immobilienscout::Errors::InvalidRequest, parsed_response.messages.map(&:messages) unless parsed_response.success?
15
+ unless parsed_response.success?
16
+ raise Immobilienscout::Errors::InvalidRequest, parsed_response.messages.map(&:messages)
17
+ end
14
18
 
15
19
  parsed_response
16
20
  end
@@ -19,7 +23,9 @@ module Immobilienscout
19
23
  raise ArgumentError unless params.present?
20
24
 
21
25
  parsed_response = Immobilienscout::Request.new(put_order_url(is24_id), params).put
22
- raise Immobilienscout::Errors::InvalidRequest, parsed_response.messages.map(&:messages) unless parsed_response.success?
26
+ unless parsed_response.success?
27
+ raise Immobilienscout::Errors::InvalidRequest, parsed_response.messages.map(&:messages)
28
+ end
23
29
 
24
30
  parsed_response
25
31
  end
@@ -36,7 +42,8 @@ module Immobilienscout
36
42
  end
37
43
 
38
44
  def put_order_url(is24_id)
39
- "#{Immobilienscout::Client.api_url}/restapi/api/offer/v1.0/user/me/realestate/#{is24_id}/attachment/attachmentsorder"
45
+ "#{Immobilienscout::Client.api_url}/restapi/api/"\
46
+ "offer/v1.0/user/me/realestate/#{is24_id}/attachment/attachmentsorder"
40
47
  end
41
48
  end
42
49
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Immobilienscout
2
4
  module API
3
5
  module Property
@@ -42,28 +44,28 @@ module Immobilienscout
42
44
 
43
45
  def execute_post_request(url, params)
44
46
  parsed_response = Immobilienscout::Request.new(url, params).post
45
- raise Immobilienscout::Errors::InvalidRequest, parsed_response.messages.map(&:messages) unless parsed_response.success?
47
+ Immobilienscout::RequestErrorHandler.handle(parsed_response) unless parsed_response.success?
46
48
 
47
49
  parsed_response
48
50
  end
49
51
 
50
52
  def execute_put_request(url, params)
51
53
  parsed_response = Immobilienscout::Request.new(url, params).put
52
- raise Immobilienscout::Errors::InvalidRequest, parsed_response.messages.map(&:messages) unless parsed_response.success?
54
+ Immobilienscout::RequestErrorHandler.handle(parsed_response) unless parsed_response.success?
53
55
 
54
56
  parsed_response
55
57
  end
56
58
 
57
59
  def execute_delete_request(url)
58
60
  parsed_response = Immobilienscout::Request.new(url).delete
59
- raise Immobilienscout::Errors::InvalidRequest, parsed_response.messages.map(&:messages) unless parsed_response.success?
61
+ Immobilienscout::RequestErrorHandler.handle(parsed_response) unless parsed_response.success?
60
62
 
61
63
  parsed_response
62
64
  end
63
65
 
64
66
  def execute_get_request(url)
65
67
  parsed_response = Immobilienscout::Request.new(url).get
66
- raise Immobilienscout::Errors::InvalidRequest, parsed_response.messages.map(&:messages) unless parsed_response.success?
68
+ Immobilienscout::RequestErrorHandler.handle(parsed_response) unless parsed_response.success?
67
69
 
68
70
  parsed_response
69
71
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Immobilienscout
2
4
  module API
3
5
  class Report
@@ -15,7 +17,7 @@ module Immobilienscout
15
17
 
16
18
  def execute_get_request(url, query_params)
17
19
  parsed_response = Immobilienscout::Request.new(url, query_params).get
18
- raise Immobilienscout::Errors::InvalidRequest, Array.wrap(parsed_response.messages['message']) unless parsed_response.success?
20
+ Immobilienscout::RequestErrorHandler.handle(parsed_response) unless parsed_response.success?
19
21
 
20
22
  parsed_response
21
23
  end
@@ -1,11 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'open-uri'
2
4
 
3
5
  module Immobilienscout
4
6
  class Authenticator
5
- ALLOWED_METHODS = %w(POST GET DELETE PUT).freeze
6
- OAUTH_SIGNATURE_METHOD = 'HMAC-SHA1'.freeze
7
- OAUTH_VERSION = '1.0'.freeze
8
- HASH_DIGEST = 'sha1'.freeze
7
+ ALLOWED_METHODS = %w[POST GET DELETE PUT].freeze
8
+ OAUTH_SIGNATURE_METHOD = 'HMAC-SHA1'
9
+ OAUTH_VERSION = '1.0'
10
+ HASH_DIGEST = 'sha1'
9
11
 
10
12
  def initialize(url, method, query_params = nil)
11
13
  @url = url
@@ -40,14 +42,15 @@ module Immobilienscout
40
42
  end
41
43
 
42
44
  def signing_key
43
- "#{url_encode(Immobilienscout.configuration.consumer_secret)}&#{url_encode(Immobilienscout.configuration.access_token_secret)}"
45
+ "#{url_encode(Immobilienscout.configuration.consumer_secret)}&"\
46
+ "#{url_encode(Immobilienscout.configuration.access_token_secret)}"
44
47
  end
45
48
 
46
49
  def generate_nonce
47
50
  Base64.encode64(random_bytes).gsub(/\W/, '')
48
51
  end
49
52
 
50
- def random_bytes(size=7)
53
+ def random_bytes(size = 7)
51
54
  OpenSSL::Random.random_bytes(size)
52
55
  end
53
56
 
@@ -80,7 +83,7 @@ module Immobilienscout
80
83
  end
81
84
 
82
85
  def auth_header_string(params)
83
- header_params = params.each_with_object('OAuth ') do |(key, value), header|
86
+ header_params = params.each_with_object(+'OAuth ') do |(key, value), header|
84
87
  header << "#{key}=#{value},"
85
88
  end
86
89
  header_params.chop
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Immobilienscout
2
4
  class Client
3
- SANDBOX_URL = 'https://rest.sandbox-immobilienscout24.de'.freeze
4
- LIVE_URL = 'https://rest.immobilienscout24.de'.freeze
5
+ SANDBOX_URL = 'https://rest.sandbox-immobilienscout24.de'
6
+ LIVE_URL = 'https://rest.immobilienscout24.de'
5
7
 
6
8
  def self.api_url
7
9
  return SANDBOX_URL if Immobilienscout.configuration.use_sandbox
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Immobilienscout
4
+ module Errors
5
+ class CommonResourceNotFound < InvalidRequest
6
+ end
7
+ end
8
+ end
@@ -1,9 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Immobilienscout
2
4
  module Errors
3
5
  class InvalidRequest < StandardError
4
- def initialize(msg = message)
5
- super
6
- end
7
6
  end
8
7
  end
9
8
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Immobilienscout
4
+ module Errors
5
+ class ResourceNotFound < InvalidRequest
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Immobilienscout
4
+ module Errors
5
+ class ResourceValidation < InvalidRequest
6
+ end
7
+ end
8
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'net/http/post/multipart'
2
4
  require 'uri'
3
5
 
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Immobilienscout
4
+ module RequestErrorHandler
5
+ class << self
6
+ ERROR_RESOURCE_NOT_FOUND = 'ERROR_RESOURCE_NOT_FOUND'
7
+ ERROR_COMMON_RESOURCE_NOT_FOUND = 'ERROR_COMMON_RESOURCE_NOT_FOUND'
8
+ ERROR_RESOURCE_VALIDATION = 'ERROR_RESOURCE_VALIDATION'
9
+
10
+ def handle(parsed_response)
11
+ if parsed_response.messages.is_a?(Array)
12
+ error_code = parsed_response.messages&.first&.code
13
+ error_messages = parsed_response.messages.map(&:messages)
14
+ else
15
+ error_code = parsed_response.messages['messageCode']
16
+ error_messages = Array.wrap(parsed_response.messages['message'])
17
+ end
18
+
19
+ error_class = error_class(error_code)
20
+ raise error_class, error_messages
21
+ end
22
+
23
+ private
24
+
25
+ def error_class(error_code)
26
+ case error_code
27
+ when ERROR_RESOURCE_NOT_FOUND
28
+ Immobilienscout::Errors::ResourceNotFound
29
+ when ERROR_COMMON_RESOURCE_NOT_FOUND
30
+ Immobilienscout::Errors::CommonResourceNotFound
31
+ when ERROR_RESOURCE_VALIDATION
32
+ Immobilienscout::Errors::ResourceValidation
33
+ else
34
+ Immobilienscout::Errors::InvalidRequest
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Immobilienscout
2
4
  class ResponseParser
3
- HTTP_OK = %w(200 201).freeze
5
+ HTTP_OK = %w[200 201].freeze
4
6
 
5
7
  Message = Struct.new(:success?, :code, :messages, :id)
6
8
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Immobilienscout
2
- VERSION = '0.0.6'.freeze
4
+ VERSION = '0.0.7'
3
5
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: immobilienscout
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Homeday GmbH
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-18 00:00:00.000000000 Z
11
+ date: 2020-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: json
14
+ name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: multipart-post
28
+ name: json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: activesupport
42
+ name: multipart-post
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '9.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '9.0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rake
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -95,19 +109,47 @@ dependencies:
95
109
  - !ruby/object:Gem::Version
96
110
  version: '3.0'
97
111
  - !ruby/object:Gem::Dependency
98
- name: byebug
112
+ name: rubocop
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '9.0'
117
+ version: '0.72'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: '9.0'
124
+ version: '0.72'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-performance
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop-rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
111
153
  - !ruby/object:Gem::Dependency
112
154
  name: timecop
113
155
  requirement: !ruby/object:Gem::Requirement
@@ -160,6 +202,7 @@ extra_rdoc_files: []
160
202
  files:
161
203
  - ".gitignore"
162
204
  - ".rspec"
205
+ - ".rubocop.yml"
163
206
  - ".travis.yml"
164
207
  - CHANGELOG.md
165
208
  - CODE_OF_CONDUCT.md
@@ -177,8 +220,12 @@ files:
177
220
  - lib/immobilienscout/api/report.rb
178
221
  - lib/immobilienscout/authenticator.rb
179
222
  - lib/immobilienscout/client.rb
223
+ - lib/immobilienscout/errors/common_resource_not_found.rb
180
224
  - lib/immobilienscout/errors/invalid_request.rb
225
+ - lib/immobilienscout/errors/resource_not_found.rb
226
+ - lib/immobilienscout/errors/resource_validation.rb
181
227
  - lib/immobilienscout/request.rb
228
+ - lib/immobilienscout/request_error_handler.rb
182
229
  - lib/immobilienscout/response_parser.rb
183
230
  - lib/immobilienscout/version.rb
184
231
  homepage: https://github.com/homeday-de/immobilienscout