immoscout 1.3.1 → 1.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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/documentation.yml +39 -0
  3. data/.github/workflows/test.yml +63 -0
  4. data/.rspec +2 -1
  5. data/.rubocop.yml +23 -4
  6. data/.simplecov +12 -0
  7. data/.yardopts +6 -0
  8. data/Appraisals +1 -5
  9. data/CHANGELOG.md +14 -0
  10. data/Dockerfile +2 -3
  11. data/Envfile +0 -3
  12. data/Gemfile +1 -1
  13. data/Guardfile +44 -0
  14. data/LICENSE +1 -1
  15. data/Makefile +47 -17
  16. data/README.md +4 -4
  17. data/Rakefile +18 -2
  18. data/gemfiles/rails_5.2.gemfile +1 -1
  19. data/immoscout.gemspec +45 -44
  20. data/lib/immoscout/api/client.rb +5 -2
  21. data/lib/immoscout/api/connection.rb +12 -11
  22. data/lib/immoscout/api/request.rb +10 -5
  23. data/lib/immoscout/configuration.rb +15 -9
  24. data/lib/immoscout/errors/failed.rb +3 -0
  25. data/lib/immoscout/models/actions/attachment.rb +22 -9
  26. data/lib/immoscout/models/actions/contact.rb +7 -10
  27. data/lib/immoscout/models/actions/publish.rb +4 -4
  28. data/lib/immoscout/models/actions/real_estate.rb +12 -12
  29. data/lib/immoscout/models/apartment_buy.rb +4 -1
  30. data/lib/immoscout/models/base.rb +3 -1
  31. data/lib/immoscout/models/concerns/modelable.rb +8 -3
  32. data/lib/immoscout/models/concerns/propertiable.rb +8 -2
  33. data/lib/immoscout/models/concerns/renderable.rb +18 -5
  34. data/lib/immoscout/models/contact.rb +3 -1
  35. data/lib/immoscout/models/document.rb +3 -1
  36. data/lib/immoscout/models/house_buy.rb +4 -1
  37. data/lib/immoscout/models/parts/address.rb +3 -0
  38. data/lib/immoscout/models/parts/api_search_data.rb +3 -0
  39. data/lib/immoscout/models/parts/contact.rb +3 -0
  40. data/lib/immoscout/models/parts/coordinate.rb +3 -0
  41. data/lib/immoscout/models/parts/courtage.rb +3 -0
  42. data/lib/immoscout/models/parts/energy_certificate.rb +3 -0
  43. data/lib/immoscout/models/parts/energy_source.rb +3 -0
  44. data/lib/immoscout/models/parts/firing_type.rb +3 -0
  45. data/lib/immoscout/models/parts/geo_code.rb +3 -0
  46. data/lib/immoscout/models/parts/geo_hierarchy.rb +3 -0
  47. data/lib/immoscout/models/parts/international_country_region.rb +3 -0
  48. data/lib/immoscout/models/parts/price.rb +3 -0
  49. data/lib/immoscout/models/parts/publish_channel.rb +3 -0
  50. data/lib/immoscout/models/parts/real_estate.rb +3 -0
  51. data/lib/immoscout/models/parts/url.rb +3 -0
  52. data/lib/immoscout/models/parts/urls.rb +3 -0
  53. data/lib/immoscout/models/picture.rb +4 -2
  54. data/lib/immoscout/models/publish.rb +3 -1
  55. data/lib/immoscout/models.rb +2 -1
  56. data/lib/immoscout/version.rb +19 -1
  57. data/lib/immoscout.rb +2 -1
  58. metadata +99 -71
  59. data/.travis.yml +0 -23
  60. data/gemfiles/rails_6.0.gemfile +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 664b02a2761664c3d3e226fab5dbf936dc8b5043a1e539a7547dff443c9a2dda
4
- data.tar.gz: 007bf6cc3f73a1c4f9083e1302dd7cccdbc665756684d7c03497bf8501f8ac32
3
+ metadata.gz: d4cd53b266de26d3e819cdfedba39ced10517813e4aed918c7bb9eb243a1c9e2
4
+ data.tar.gz: 4e9e75201da0c3a21da12f1c162f078c71fc393e4e350837fd39beca00dc83db
5
5
  SHA512:
6
- metadata.gz: a55de5d7f9f0ae64219a2fb9e23247a5f4aaec923cefd880fe4464882233b8d28c30d7bd4d6005652134cabb880aa445df581a6e6977a95674026bf28d20ed6c
7
- data.tar.gz: 8ed4b442d44937622d0a87c55751a581063d1a7212c914a230b8acd2f8a4839e7aafc885e34c064b19ac6936c914267e0b2e8d0477248f21300c04e426ac331e
6
+ metadata.gz: 519df9e86e1f3bf3616c24ff3684b5be431a4261e9b2521afa807ae8ae15f23913552bb543b664559242d5f74bb23b4d6aff34bc2cda1fdf2e8d0086c77cd8c9
7
+ data.tar.gz: 145b56aea60a069fb70b29d7e46774f9f72f05ff50b10df6579d34760939f19c4ff44d7df7ebf089d9c32f2f1d3a3b4beb11b37dc6844d9514b9eb71cfc024ec
@@ -0,0 +1,39 @@
1
+ name: Build Documentation
2
+ on:
3
+ repository_dispatch:
4
+ types: [documentation]
5
+
6
+ concurrency:
7
+ group: 'docs'
8
+
9
+ jobs:
10
+ docs:
11
+ name: Build gem documentation
12
+ runs-on: ubuntu-22.04
13
+ timeout-minutes: 5
14
+ steps:
15
+ - uses: actions/checkout@v3
16
+
17
+ - name: Install the correct Ruby version
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: 2.5
21
+ bundler-cache: true
22
+ rubygems: '3.3.26'
23
+
24
+ - name: Prepare the virtual environment
25
+ uses: hausgold/actions/ci@master
26
+ with:
27
+ clone_token: '${{ secrets.CLONE_TOKEN }}'
28
+ settings: '${{ github.repository }}'
29
+ target: ci/gem-test
30
+
31
+ - name: Build gem documentation
32
+ run: make docs
33
+
34
+ - name: Upload the code coverage report
35
+ run: coverage
36
+
37
+ - name: Add this job to the commit status
38
+ run: commit-status '${{ job.status }}'
39
+ if: always()
@@ -0,0 +1,63 @@
1
+ name: Test
2
+ on:
3
+ push:
4
+ branches:
5
+ - '**'
6
+ schedule:
7
+ - cron: '0 0 * * MON'
8
+
9
+ concurrency:
10
+ group: '${{ github.ref }}'
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ test:
15
+ name: 'Test the gem (Ruby ${{ matrix.ruby }}, Rails ${{ matrix.rails }})'
16
+ runs-on: ubuntu-22.04
17
+ timeout-minutes: 5
18
+ strategy:
19
+ fail-fast: false
20
+ matrix:
21
+ ruby: ['2.5', '2.7']
22
+ rails: ['5.2']
23
+ env:
24
+ BUNDLE_GEMFILE: 'gemfiles/rails_${{ matrix.rails }}.gemfile'
25
+ steps:
26
+ - uses: actions/checkout@v3
27
+
28
+ - name: Install the correct Ruby version
29
+ uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: ${{ matrix.ruby }}
32
+ bundler-cache: true
33
+ rubygems: '3.3.26'
34
+
35
+ - name: Prepare the virtual environment
36
+ uses: hausgold/actions/ci@master
37
+ with:
38
+ clone_token: '${{ secrets.CLONE_TOKEN }}'
39
+ settings: '${{ github.repository }}'
40
+ target: ci/gem-test
41
+
42
+ - name: Run the gem tests
43
+ run: make test
44
+
45
+ - name: Upload the code coverage report
46
+ run: coverage
47
+
48
+ trigger-docs:
49
+ name: Trigger the documentation upload
50
+ runs-on: ubuntu-22.04
51
+ timeout-minutes: 2
52
+ needs: test
53
+ if: github.ref == 'refs/heads/master'
54
+ steps:
55
+ - name: Prepare the virtual environment
56
+ uses: hausgold/actions/ci@master
57
+ with:
58
+ clone_token: '${{ secrets.CLONE_TOKEN }}'
59
+ settings: '${{ github.repository }}'
60
+ target: ci/noop
61
+
62
+ - name: Trigger the documentation upload
63
+ run: workflow documentation
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
+ --backtrace
2
+ --force-color
1
3
  --format documentation
2
- --color
data/.rubocop.yml CHANGED
@@ -1,14 +1,24 @@
1
- Documentation:
2
- Enabled: false
1
+ require:
2
+ - rubocop-rspec
3
+ - rubocop-rails
4
+
5
+ Rails:
6
+ Enabled: true
7
+
8
+ Style/Documentation:
9
+ Enabled: true
3
10
 
4
11
  AllCops:
12
+ NewCops: enable
13
+ SuggestExtensions: false
5
14
  DisplayCopNames: true
6
15
  TargetRubyVersion: 2.5
16
+ TargetRailsVersion: 5.2
7
17
  Exclude:
8
18
  - bin/**/*
9
19
  - vendor/**/*
10
20
  - build/**/*
11
- - gemfiles/vendor/**/*
21
+ - gemfiles/**/*
12
22
 
13
23
  Metrics/BlockLength:
14
24
  Exclude:
@@ -20,5 +30,14 @@ Metrics/BlockLength:
20
30
 
21
31
  # We stay at 80 characters per line.
22
32
  # See: https://rubystyle.guide/#max-line-length
23
- Metrics/LineLength:
33
+ Layout/LineLength:
24
34
  Max: 80
35
+
36
+ # MFA is not yet enabled for our gems yet.
37
+ Gemspec/RequireMFA:
38
+ Enabled: false
39
+
40
+ # We use memoized helpers all over the place to construct inputs and output
41
+ # which can be customized at nested contexts easily.
42
+ RSpec/MultipleMemoizedHelpers:
43
+ Enabled: false
data/.simplecov CHANGED
@@ -1,3 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'simplecov-html'
4
+ require 'simplecov_json_formatter'
5
+
6
+ SimpleCov.formatters = SimpleCov::Formatter::MultiFormatter.new(
7
+ [
8
+ SimpleCov::Formatter::HTMLFormatter,
9
+ SimpleCov::Formatter::JSONFormatter
10
+ ]
11
+ )
12
+
1
13
  SimpleCov.start 'test_frameworks' do
2
14
  add_filter '/vendor/bundle/'
3
15
  end
data/.yardopts ADDED
@@ -0,0 +1,6 @@
1
+ --output-dir=doc/api
2
+ --plugin activesupport-concern
3
+ --markup=rdoc
4
+ -
5
+ README.md
6
+ lib/**/*.rb
data/Appraisals CHANGED
@@ -1,9 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  appraise 'rails-5.2' do
4
- gem 'activesupport', '~> 5.2.2'
5
- end
6
-
7
- appraise 'rails-6.0' do
8
- gem 'activesupport', '~> 6.0.0'
4
+ gem 'activesupport', '~> 5.2.0'
9
5
  end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ### 1.4.0
2
+
3
+ * Bundler >= 2.3 is from now on required as minimal version (#10)
4
+ * Dropped support for Ruby < 2.5 (#10)
5
+ * Dropped support for Rails < 5.2 (#10)
6
+ * Updated all development/runtime gems to their latest
7
+ Ruby 2.5 compatible version (#10)
8
+
9
+ ### 1.3.2
10
+
11
+ * Migrated to Github Actions
12
+ * Migrated to our own coverage reporting
13
+ * Added the code statistics to the test process
14
+
1
15
  ### 1.3.1
2
16
 
3
17
  * Corrected the GNU Make release target
data/Dockerfile CHANGED
@@ -2,7 +2,7 @@ FROM hausgold/ruby:2.5
2
2
  MAINTAINER Hermann Mayer <hermann.mayer@hausgold.de>
3
3
 
4
4
  # Update system gem
5
- RUN gem update --system
5
+ RUN gem update --system '3.3.26'
6
6
 
7
7
  # Install system packages and the latest bundler
8
8
  RUN apt-get update -yqqq && \
@@ -11,8 +11,7 @@ RUN apt-get update -yqqq && \
11
11
  ca-certificates \
12
12
  bash-completion inotify-tools && \
13
13
  echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen && /usr/sbin/locale-gen && \
14
- gem install bundler -v '~> 2.0' --no-document --no-prerelease && \
15
- gem install bundler -v '~> 1.0' --no-document --no-prerelease
14
+ gem install bundler -v '~> 2.3.0' --no-document --no-prerelease
16
15
 
17
16
  # Add new web user
18
17
  RUN mkdir /app && \
data/Envfile CHANGED
@@ -1,6 +1,3 @@
1
1
  LANG=en_US.UTF-8
2
2
  LANGUAGE=en_US.UTF-8
3
3
  LC_ALL=en_US.UTF-8
4
-
5
- # Just fix this, so Appraisals with Rails 4 are working fine
6
- BUNDLER_VERSION=1.17.3
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
data/Guardfile ADDED
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # A sample Guardfile
4
+ # More info at https://github.com/guard/guard#readme
5
+
6
+ ## Uncomment and set this to only include directories you want to watch
7
+ (directories %w[lib spec]).select do |d|
8
+ if Dir.exist?(d)
9
+ d
10
+ else
11
+ UI.warning("Directory #{d} does not exist")
12
+ end
13
+ end
14
+
15
+ ## Note: if you are using the `directories` clause above and you are not
16
+ ## watching the project directory ('.'), then you will want to move
17
+ ## the Guardfile to a watched dir and symlink it back, e.g.
18
+ #
19
+ # $ mkdir config
20
+ # $ mv Guardfile config/
21
+ # $ ln -s config/Guardfile .
22
+ #
23
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
24
+
25
+ # NOTE: The cmd option is now required due to the increasing number of ways
26
+ # rspec may be run, below are examples of the most common uses.
27
+ # * bundler: 'bundle exec rspec'
28
+ # * bundler binstubs: 'bin/rspec'
29
+ # * spring: 'bin/rspec' (This will use spring if running and you have
30
+ # installed the spring binstubs per the docs)
31
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
32
+ # * 'just' rspec: 'rspec'
33
+
34
+ guard :rspec, cmd: 'bundle exec rspec' do
35
+ watch('spec/spec_helper.rb') { 'spec' }
36
+ watch(%r{^lib/immoscout.rb}) { 'spec' }
37
+ watch(%r{^spec/.+_spec\.rb$})
38
+ watch(%r{^lib/immoscout/([^\\]+)\.rb$}) do |m|
39
+ "spec/immoscout/#{m[1]}_spec.rb"
40
+ end
41
+ watch(%r{^lib/immoscout/([^\\]+)/(.*)\.rb$}) do |m|
42
+ "spec/#{m[1]}/#{m[2]}_spec.rb"
43
+ end
44
+ end
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2017 HAUSGOLD
3
+ Copyright (c) 2023 HAUSGOLD | talocasa GmbH
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/Makefile CHANGED
@@ -9,6 +9,7 @@ SHELL := bash
9
9
  # Environment switches
10
10
  MAKE_ENV ?= docker
11
11
  COMPOSE_RUN_SHELL_FLAGS ?= --rm
12
+ BASH_RUN_SHELL_FLAGS ?=
12
13
 
13
14
  # Directories
14
15
  VENDOR_DIR ?= vendor/bundle
@@ -26,13 +27,14 @@ RM ?= rm
26
27
  XARGS ?= xargs
27
28
 
28
29
  # Container binaries
29
- BUNDLE ?= bundle
30
30
  APPRAISAL ?= appraisal
31
+ BUNDLE ?= bundle
31
32
  GEM ?= gem
33
+ GUARD ?= guard
32
34
  RAKE ?= rake
33
- YARD ?= yard
34
- RAKE ?= rake
35
+ RSPEC ?= rspec
35
36
  RUBOCOP ?= rubocop
37
+ YARD ?= yard
36
38
 
37
39
  # Files
38
40
  GEMFILES ?= $(subst _,-,$(patsubst $(GEMFILES_DIR)/%.gemfile,%,\
@@ -46,7 +48,8 @@ define run-shell
46
48
  $(COMPOSE) run $(COMPOSE_RUN_SHELL_FLAGS) \
47
49
  -e LANG=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e LC_ALL=en_US.UTF-8 \
48
50
  -e HOME=/home/web -e BUNDLE_APP_CONFIG=/app/.bundle \
49
- -u `$(ID) -u` test bash -c 'sleep 0.1; echo; $(1)'
51
+ -u `$(ID) -u` test \
52
+ bash $(BASH_RUN_SHELL_FLAGS) -c 'sleep 0.1; echo; $(1)'
50
53
  endef
51
54
  else ifeq ($(MAKE_ENV),baremetal)
52
55
  define run-shell
@@ -58,33 +61,52 @@ all:
58
61
  # Immoscout
59
62
  #
60
63
  # install Install the dependencies
61
- # test Run the whole test suite
64
+ # update Update the local Gemset dependencies
62
65
  # clean Clean the dependencies
63
66
  #
67
+ # test Run the whole test suite
68
+ # test-style Test the code styles
69
+ # watch Watch for code changes and rerun the test suite
70
+ #
71
+ # docs Generate the Ruby documentation of the library
72
+ # stats Print the code statistics (library and test suite)
73
+ # notes Print all the notes from the code
74
+ # release Release a new Gem version (maintainers only)
75
+ #
64
76
  # shell Run an interactive shell on the container
65
77
  # shell-irb Run an interactive IRB shell on the container
66
78
 
79
+ .interactive:
80
+ @$(eval BASH_RUN_SHELL_FLAGS = --login)
81
+
67
82
  install:
68
83
  # Install the dependencies
69
84
  @$(MKDIR) -p $(VENDOR_DIR)
70
85
  @$(call run-shell,$(BUNDLE) check || $(BUNDLE) install --path $(VENDOR_DIR))
71
- @$(call run-shell,GEM_HOME=vendor/bundle/ruby/$${RUBY_MAJOR}.0 \
72
- $(GEM) install bundler -v "~> 1.0")
73
86
  @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) install)
74
87
 
75
- update: install
88
+ update:
76
89
  # Install the dependencies
77
90
  @$(MKDIR) -p $(VENDOR_DIR)
91
+ @$(call run-shell,$(BUNDLE) update)
78
92
  @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) update)
79
93
 
80
- test: #install
94
+ watch: install .interactive
95
+ # Watch for code changes and rerun the test suite
96
+ @$(call run-shell,$(BUNDLE) exec $(GUARD))
97
+
98
+ test: \
99
+ test-specs \
100
+ test-style
101
+
102
+ test-specs:
81
103
  # Run the whole test suite
82
- @$(call run-shell,$(BUNDLE) exec $(RAKE))
104
+ @$(call run-shell,$(BUNDLE) exec $(RAKE) stats spec)
83
105
 
84
106
  $(TEST_GEMFILES): GEMFILE=$(@:test-%=%)
85
107
  $(TEST_GEMFILES):
86
108
  # Run the whole test suite ($(GEMFILE))
87
- @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) $(GEMFILE) $(RAKE))
109
+ @$(call run-shell,$(BUNDLE) exec $(APPRAISAL) $(GEMFILE) $(RSPEC))
88
110
 
89
111
  test-style: \
90
112
  test-style-ruby
@@ -99,8 +121,8 @@ clean:
99
121
  @$(RM) -rf $(VENDOR_DIR)/Gemfile.lock
100
122
  @$(RM) -rf $(GEMFILES_DIR)/vendor
101
123
  @$(RM) -rf $(GEMFILES_DIR)/*.lock
102
- @$(RM) -rf pkg
103
- @$(RM) -rf coverage
124
+ @$(RM) -rf .bundle .yardoc coverage pkg Gemfile.lock doc/api \
125
+ .rspec_status
104
126
 
105
127
  clean-containers:
106
128
  # Clean running containers
@@ -111,26 +133,34 @@ endif
111
133
  clean-images:
112
134
  # Clean build images
113
135
  ifeq ($(MAKE_ENV),docker)
114
- @-$(DOCKER) images | $(GREP) immoscout \
136
+ @-$(DOCKER) images | $(GREP) $(shell basename "`pwd`") \
115
137
  | $(AWK) '{ print $$3 }' \
116
138
  | $(XARGS) -rn1 $(DOCKER) rmi -f
117
139
  endif
118
140
 
119
141
  distclean: clean clean-containers clean-images
120
142
 
121
- shell: install
143
+ shell:
122
144
  # Run an interactive shell on the container
123
145
  @$(call run-shell,$(BASH) -i)
124
146
 
125
- shell-irb: install
147
+ shell-irb:
126
148
  # Run an interactive IRB shell on the container
127
149
  @$(call run-shell,bin/console)
128
150
 
129
- docs: install
151
+ docs:
130
152
  # Build the API documentation
131
153
  @$(call run-shell,$(BUNDLE) exec $(YARD) -q && \
132
154
  $(BUNDLE) exec $(YARD) stats --list-undoc --compact)
133
155
 
156
+ notes:
157
+ # Print the code statistics (library and test suite)
158
+ @$(call run-shell,$(BUNDLE) exec $(RAKE) notes)
159
+
160
+ stats:
161
+ # Print all the notes from the code
162
+ @$(call run-shell,$(BUNDLE) exec $(RAKE) stats)
163
+
134
164
  release:
135
165
  # Release a new gem version
136
166
  @$(BUNDLE) exec $(RAKE) release
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  ![Immoscout](doc/assets/project.svg)
2
2
 
3
- [![Build Status](https://travis-ci.com/hausgold/immoscout.svg?branch=master)](https://travis-ci.com/hausgold/immoscout)
3
+ [![Continuous Integration](https://github.com/hausgold/immoscout/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/hausgold/immoscout/actions/workflows/test.yml)
4
4
  [![Gem Version](https://badge.fury.io/rb/immoscout.svg)](https://badge.fury.io/rb/immoscout)
5
- [![Maintainability](https://api.codeclimate.com/v1/badges/97fa2796b76085580c6c/maintainability)](https://codeclimate.com/repos/5cac8bc729ce6b78240071f2/maintainability)
6
- [![Test Coverage](https://api.codeclimate.com/v1/badges/97fa2796b76085580c6c/test_coverage)](https://codeclimate.com/repos/5cac8bc729ce6b78240071f2/test_coverage)
7
- [![API docs](https://img.shields.io/badge/docs-API-blue.svg)](https://www.rubydoc.info/gems/immoscout)
5
+ [![Test Coverage](https://automate-api.hausgold.de/v1/coverage_reports/immoscout/coverage.svg)](https://knowledge.hausgold.de/coverage)
6
+ [![Test Ratio](https://automate-api.hausgold.de/v1/coverage_reports/immoscout/ratio.svg)](https://knowledge.hausgold.de/coverage)
7
+ [![API docs](https://automate-api.hausgold.de/v1/coverage_reports/immoscout/documentation.svg)](https://www.rubydoc.info/gems/immoscout)
8
8
 
9
9
  This gem provides an API wrapper for the [Immobilienscout24 REST
10
10
  API](https://api.immobilienscout24.de/our-apis/import-export.html). It provides
data/Rakefile CHANGED
@@ -1,8 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+ require 'countless/rake_tasks'
5
6
 
6
7
  RSpec::Core::RakeTask.new(:spec)
7
8
 
8
9
  task default: :spec
10
+
11
+ # Configure all code statistics directories
12
+ Countless.configure do |config|
13
+ config.stats_base_directories = [
14
+ { name: 'Top-levels', dir: 'lib',
15
+ pattern: %r{/lib(/immoscout)?/[^/]+\.rb$} },
16
+ { name: 'Top-levels specs', test: true, dir: 'spec',
17
+ pattern: %r{/spec(/immoscout)?/[^/]+_spec\.rb$} },
18
+ { name: 'APIs', pattern: 'lib/immoscout/api/**/*.rb' },
19
+ { name: 'Errors', pattern: 'lib/immoscout/errors/**/*.rb' },
20
+ { name: 'Models', pattern: 'lib/immoscout/models/**/*.rb' },
21
+ { name: 'Models specs', test: true,
22
+ pattern: 'spec/models/**/*_spec.rb' }
23
+ ]
24
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "activesupport", "~> 5.2.2"
5
+ gem "activesupport", "~> 5.2.0"
6
6
 
7
7
  gemspec path: "../"
data/immoscout.gemspec CHANGED
@@ -5,55 +5,56 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'immoscout/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = 'immoscout'
9
- spec.version = Immoscout::VERSION
10
- spec.authors = ['Marcus Geissler']
11
- spec.email = ['marcus.geissler@hanseventures.com']
12
-
13
- spec.summary = 'Ruby client for the Immobilienscout24 REST API'
14
- spec.homepage = 'https://github.com/hausgold/immoscout'
15
- spec.license = 'MIT'
16
-
17
- spec.required_ruby_version = '~> 2.5'
18
-
19
- # Prevent pushing this gem to RubyGems.org.
20
- # To allow pushes either set the 'allowed_push_host'
21
- # to allow pushing to a single host or delete this
22
- # section to allow pushing to any host.
23
- if spec.respond_to?(:metadata)
24
- spec.metadata['allowed_push_host'] = 'https://rubygems.org'
25
- else
26
- raise 'RubyGems 2.0 or newer is required to protect against ' \
27
- 'public gem pushes.'
28
- end
8
+ spec.name = 'immoscout'
9
+ spec.version = Immoscout::VERSION
10
+ spec.authors = ['Marcus Geissler']
11
+ spec.email = ['marcus3006@gmail.com']
12
+
13
+ spec.license = 'MIT'
14
+ spec.summary = 'Ruby client for the Immobilienscout24 REST API'
15
+
16
+ base_uri = "https://github.com/hausgold/#{spec.name}"
17
+ spec.metadata = {
18
+ 'homepage_uri' => base_uri,
19
+ 'source_code_uri' => base_uri,
20
+ 'changelog_uri' => "#{base_uri}/blob/master/CHANGELOG.md",
21
+ 'bug_tracker_uri' => "#{base_uri}/issues",
22
+ 'documentation_uri' => "https://www.rubydoc.info/gems/#{spec.name}"
23
+ }
29
24
 
30
25
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
31
26
  f.match(%r{^(test|spec|features)/})
32
27
  end
33
- spec.bindir = 'exe'
34
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+
29
+ spec.bindir = 'exe'
30
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
35
31
  spec.require_paths = ['lib']
36
- spec.add_dependency 'activesupport', '>= 5.2.0'
37
- spec.add_dependency 'faraday', '~> 1.0'
38
- spec.add_dependency 'faraday_middleware', '~> 1.0'
32
+
33
+ spec.required_ruby_version = '>= 2.5'
34
+
35
+ spec.add_dependency 'activesupport', '>= 5.2'
36
+ spec.add_dependency 'faraday', '~> 1.10'
37
+ spec.add_dependency 'faraday_middleware', '~> 1.2'
39
38
  spec.add_dependency 'simple_oauth', '>= 0.3'
40
39
 
41
- spec.add_development_dependency 'appraisal'
42
- spec.add_development_dependency 'bundler', '>= 1.16', '< 3'
43
- spec.add_development_dependency 'factory_bot', '~> 4.11'
44
- spec.add_development_dependency 'railties', '>= 4.2.0'
45
- spec.add_development_dependency 'rake', '~> 10.0'
46
- spec.add_development_dependency 'rdoc', '~> 6.1'
47
- spec.add_development_dependency 'redcarpet', '~> 3.4'
48
- spec.add_development_dependency 'rspec', '~> 3.0'
49
- spec.add_development_dependency 'rspec-json_expectations', '~> 1.4'
50
- spec.add_development_dependency 'rubocop', '~> 0.63.1'
51
- spec.add_development_dependency 'rubocop-rspec', '~> 1.31'
52
- spec.add_development_dependency 'simplecov', '~> 0.15'
53
- spec.add_development_dependency 'terminal-table', '~> 1.8'
54
- spec.add_development_dependency 'timecop', '~> 0.9.1'
55
- spec.add_development_dependency 'vcr', '~> 3.0'
56
- spec.add_development_dependency 'webmock', '~> 3.5'
57
- spec.add_development_dependency 'yard', '~> 0.9.18'
58
- spec.add_development_dependency 'yard-activesupport-concern', '~> 0.0.1'
40
+ spec.add_development_dependency 'appraisal', '~> 2.4'
41
+ spec.add_development_dependency 'bundler', '~> 2.3'
42
+ spec.add_development_dependency 'countless', '~> 1.1'
43
+ spec.add_development_dependency 'factory_bot', '~> 6.2'
44
+ spec.add_development_dependency 'guard-rspec', '~> 4.7'
45
+ spec.add_development_dependency 'railties', '>= 5.2'
46
+ spec.add_development_dependency 'rake', '~> 13.0'
47
+ spec.add_development_dependency 'redcarpet', '~> 3.5'
48
+ spec.add_development_dependency 'rspec', '~> 3.12'
49
+ spec.add_development_dependency 'rspec-json_expectations', '~> 2.2'
50
+ spec.add_development_dependency 'rubocop', '~> 1.28'
51
+ spec.add_development_dependency 'rubocop-rails', '~> 2.14'
52
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.10'
53
+ spec.add_development_dependency 'simplecov', '>= 0.22'
54
+ spec.add_development_dependency 'terminal-table', '~> 3.0'
55
+ spec.add_development_dependency 'timecop', '>= 0.9.6'
56
+ spec.add_development_dependency 'vcr', '~> 6.0'
57
+ spec.add_development_dependency 'webmock', '~> 3.18'
58
+ spec.add_development_dependency 'yard', '>= 0.9.28'
59
+ spec.add_development_dependency 'yard-activesupport-concern', '>= 0.0.1'
59
60
  end
@@ -1,9 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'singleton'
2
- require_relative "connection"
3
- require_relative "request"
4
+ require_relative 'connection'
5
+ require_relative 'request'
4
6
 
5
7
  module Immoscout
6
8
  module Api
9
+ # The immoscout API client object.
7
10
  class Client
8
11
  include Singleton
9
12
  include Immoscout::Api::Connection
@@ -1,24 +1,25 @@
1
- require "faraday"
2
- require "faraday_middleware"
1
+ # frozen_string_literal: true
2
+
3
+ require 'faraday'
4
+ require 'faraday_middleware'
3
5
 
4
6
  module Immoscout
5
7
  module Api
8
+ # A connection builder/handler for reusable connections.
6
9
  module Connection
7
- # :reek:FeatureEnvy
8
10
  def connection
9
11
  @connection ||= Faraday::Connection.new(url: url) do |builder|
10
12
  configure_oauth(builder)
11
- builder.request :multipart
12
- builder.request :url_encoded
13
- builder.request :json
14
- builder.response :follow_redirects
15
- builder.response :json, content_type: /\bjson$/
16
- builder.adapter :net_http
13
+ builder.request :multipart
14
+ builder.request :url_encoded
15
+ builder.request :json
16
+ builder.response :follow_redirects
17
+ builder.response :json, content_type: /\bjson$/
18
+ builder.adapter :net_http
17
19
  end
18
- @connection
19
20
  end
20
21
 
21
- private
22
+ protected
22
23
 
23
24
  def configure_oauth(builder)
24
25
  builder.request(