captive-api 1.1.0 → 1.2.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 610b0277d1e8fa73791417902e5da68398a888944d4eddec9962b203432fa7a0
4
- data.tar.gz: 701f6b9b8905044fc77ade30868f4ac37203ee181d71360df6b87bbd269caa95
3
+ metadata.gz: ab12a1c792bf550f36961f83688c299f75a9d6bc1153ef850aa5448be4283ec0
4
+ data.tar.gz: 72a79ff779a827484909877dc99b678a92315e35cd720b71950b34ffeb454780
5
5
  SHA512:
6
- metadata.gz: 2582ca1e4bc6f2b6353348c352c62958ddbfb43f22f994788ad5bcf3a6efa4f4922956cdaf14c6dd46bd2c2b3396b2dd90da3e7feb5fe8d1550aa336edfe87e7
7
- data.tar.gz: 4bf48698d424366d310d97210bb2263d715a4d1257b92b21dcd041c8818848c22e14f9518bcca641a16081bc20d4667307d59dd1226a9ba79c1efd4abb854699
6
+ metadata.gz: 78a473ad837f0851c115b3868bf031d70dfec945f643d43348bd8de26fd04a8154e41bf8dd9cc9209cdd61c39807374851f0096da100c6d6e9f76b3b43edae3c
7
+ data.tar.gz: 20e6fd708d8f5fa147588553eaec6b8049e5dae6bd58e614a8da2acb2fc3f60a74228647a9ea89d186de2a74f289de08e735928e5cd3a74513162f1df30f598a
data/README.md CHANGED
@@ -27,6 +27,31 @@ The class `Captive::Api::ApplicationController` includes 2 concerns :
27
27
  | [pagination](https://github.com/Captive-Studio/captive-api/blob/main/app/controllers/concerns/api/pagination_concern.rb) | Logique de pagination pour les index |
28
28
  | [render error](https://github.com/Captive-Studio/captive-api/blob/main/app/controllers/concerns/api/render_error_concern.rb) | Attrape certaines erreurs pour retourner une page d'erreur en json. Permet aussi d'utiliser les méthodes pour rendre des pages d'erreur json manuellement |
29
29
 
30
+ ### PaginationConcern
31
+
32
+ #### `#pagination`
33
+
34
+ You can use the pagination method like this :
35
+
36
+ ```ruby
37
+ @tenues = @tenues.page(pagination[:page])
38
+ .per(pagination[:per_page])
39
+ ```
40
+
41
+ *The method `page` and `per` come from [will_paginate](https://github.com/mislav/will_paginate)*
42
+
43
+ The pagination method return an hash like this :
44
+
45
+ ```ruby
46
+ { page: 1, per_page: 10 }
47
+ ```
48
+
49
+ ⚠️ The first page is `1` and not `0` !
50
+
51
+ ### RenderErrorConcern
52
+
53
+ TODO
54
+
30
55
  ## Installation
31
56
  Add this line to your application's Gemfile:
32
57
 
@@ -15,10 +15,12 @@ module Api
15
15
  DEFAULT_NB_ITEMS_PAR_PAGE = 10
16
16
 
17
17
  def pagination
18
- par_page = (params[:per_page] || DEFAULT_NB_ITEMS_PAR_PAGE).to_i
19
- par_page = MAX_ITEMS_PAR_PAGE if par_page > MAX_ITEMS_PAR_PAGE
20
- page = (params[:page] || 1).to_i
21
- @pagination ||= { page: page, per_page: par_page }
18
+ @pagination ||= begin
19
+ par_page = (params[:per_page] || DEFAULT_NB_ITEMS_PAR_PAGE).to_i
20
+ par_page = MAX_ITEMS_PAR_PAGE if par_page > MAX_ITEMS_PAR_PAGE
21
+ page = (params[:page] || 1).to_i
22
+ { page: page, per_page: par_page }
23
+ end
22
24
  end
23
25
  end
24
26
  end
@@ -8,6 +8,7 @@ module Api
8
8
 
9
9
  included do
10
10
  rescue_from ActiveRecord::RecordNotFound, with: :not_found
11
+ rescue_from ActionController::ParameterMissing, with: :handle_parameter_missing
11
12
 
12
13
  rescue_from CanCan::AccessDenied do |exception|
13
14
  render_error_from_exception(exception, status: :forbidden)
@@ -23,7 +24,7 @@ module Api
23
24
  errors = object.errors.messages
24
25
  Rails.logger.error("Impossible de sauvagarder l'objet #{object.class} : #{errors}")
25
26
  render_error(
26
- message: message, errors: errors, status: :unprocessable_entity
27
+ message: message, errors: errors, status: status
27
28
  )
28
29
  end
29
30
 
@@ -33,6 +34,10 @@ module Api
33
34
  )
34
35
  end
35
36
 
37
+ def handle_parameter_missing(exception)
38
+ render_error_from_exception(exception, status: :bad_request)
39
+ end
40
+
36
41
  def not_found(exception)
37
42
  render_error(message: "#{exception.model} not found", status: :not_found)
38
43
  end
@@ -1,5 +1,5 @@
1
1
  module Captive
2
2
  module Api
3
- VERSION = "1.1.0".freeze
3
+ VERSION = "1.2.1".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: captive-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Captive
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-06-30 00:00:00.000000000 Z
12
+ date: 2023-07-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -64,7 +64,6 @@ homepage: https://www.captive.fr/
64
64
  licenses:
65
65
  - MIT
66
66
  metadata:
67
- allowed_push_host: https://rubygems.org/
68
67
  homepage_uri: https://www.captive.fr/
69
68
  source_code_uri: https://github.com/Captive-Studio/captive-api
70
69
  post_install_message: