strapi_ruby 0.1.2 → 0.1.3

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: b287ea9daf48f9208a65d0b604a453ef528ec576ab8312265608fbc032f616a9
4
- data.tar.gz: 2d91df1a2215a1167fd8cc4ee0c0d99c6c4a5a6edd61c61f1c80f941c1636e6b
3
+ metadata.gz: a1ea7267c293e0bdd14967f64eedc922615f448b49d39a9ebdba914bb65b9336
4
+ data.tar.gz: 99c88f5464b84da4e5eb99e106b77c00436cdc413a9be26b9aa6e44e23a0a31a
5
5
  SHA512:
6
- metadata.gz: 703efd7aa92556623aca9f27b53f229dddab82becb2408d4e2c2673c6feddfe39140df14d19f3f726706d36ea859bee201dc39a26d2f436931b4008443f25146
7
- data.tar.gz: 1b31b0080faa5e81d91ba171386c654eb0f19bcca6d2692eb5533335558d500691bfc4127bf180982da7df415d5531b8e4d15f7cc9167b1eb5a76ffa98b23995
6
+ metadata.gz: 96fffc52dfc440ebb3dcdefc07b26ced071d07cd96812d868388b7f4e382a2ef73814d9eb419e8c1f291c264fa68339fc3c263658b7b2535147709568b0a72e3
7
+ data.tar.gz: 4e8c52118420a2d2dd2273e66221fa00c38ab7639fa7898a00647e53aec279557bcbfa0fb40859e911735890f947346a0990a22dd55d639dc44b2ab3cc1115ce
data/.DS_Store ADDED
Binary file
data/CHANGELOG.md CHANGED
@@ -1,10 +1,15 @@
1
+ ## [0.1.3] - 2023-10-20
2
+
3
+ - Check for errors when using collection strapi parameters like sort/filters... on single items
4
+ - Fix Typo on ConfigError => ConfigurationError
5
+
1
6
  ## [0.1.2] - 2023-10-04
2
7
 
3
8
  - Updated README
4
9
 
5
10
  ## [0.1.1] - 2023-10-04
6
11
 
7
- - Added logger for ClientError and ConfigError
12
+ - Added logger for ClientError and ConfigurationError
8
13
 
9
14
  ## [0.1.0] - 2023-10-04
10
15
 
data/README.md CHANGED
@@ -15,10 +15,11 @@ I think it's one of the actual coolest solution for integrating a CMS into Rails
15
15
  - [Installation](#installation)
16
16
  - Usage:
17
17
  - [API](#api):
18
- - [get](#get)
19
- - [post](#post)
20
- - [put](#put)
21
- - [delete](#delete)
18
+ - [.get](#get)
19
+ - [.post](#post)
20
+ - [.put](#put)
21
+ - [.delete](#delete)
22
+ - [.escape_empty_answer](#escape_empty_answer)
22
23
  - [Basic Example: Rails](#basic-example-rails)
23
24
  - [Strapi Parameters](#strapi-parameters):
24
25
  - [populate](#populate)
@@ -46,13 +47,15 @@ Add this line to your application's Gemfile:
46
47
 
47
48
  ```ruby
48
49
  # Gemfile
49
-
50
50
  gem "strapi_ruby"
51
51
  ```
52
52
 
53
+
54
+
53
55
  Then if you use Rails, run in your terminal to generate a config initializer. Otherwise copy paste and fill the config block.
54
56
 
55
57
  ```bash
58
+ bundle
56
59
  rake strapi_ruby:config
57
60
  ```
58
61
 
@@ -154,7 +157,7 @@ StrapiRuby.delete(resource: :articles, id: 12)
154
157
 
155
158
  #### .escape_empty_answer
156
159
 
157
- See [`.escape_empty_answer`](#graceful-degradation)
160
+ See [`Graceful degradation`](#graceful-degradation)
158
161
 
159
162
  ### Basic Example: Rails
160
163
 
@@ -166,7 +169,7 @@ def home
166
169
  end
167
170
  ```
168
171
 
169
- ```ruby
172
+ ```erb
170
173
  # home.html.erb
171
174
 
172
175
  <% StrapiRuby.escape_empty_answer(@articles) do %>
@@ -330,7 +333,7 @@ StrapiRuby.get(resource: :restaurants,
330
333
  # --------------------------------
331
334
 
332
335
  # Complex filtering with $and and $or
333
- RubyStrapi.get(resource: :books,
336
+ StrapiRuby.get(resource: :books,
334
337
  filters: {
335
338
  "$or" => [
336
339
  {
@@ -397,7 +400,7 @@ StrapiRuby.get(resource: :articles, locale: :fr)
397
400
 
398
401
  #### publication_state
399
402
 
400
- Use `preview` or `live`
403
+ Use `:preview` or `:live`
401
404
 
402
405
  ```ruby
403
406
  StrapiRuby.get(resource: :articles, publication_state: :preview)
@@ -48,15 +48,13 @@ module StrapiRuby
48
48
  end
49
49
 
50
50
  def performs_request
51
- begin
52
- yield
53
- rescue Faraday::ConnectionFailed => e
54
- raise ConnectionError, "#{ErrorMessage.connection_failed} #{e.message}"
55
- rescue Faraday::TimeoutError => e
56
- raise ConnectionError, "#{ErrorMessage.timeout} #{e.message}"
57
- rescue StandardError => e
58
- raise ConnectionError, "#{ErrorMessage.unexpected} #{e.message}"
59
- end
51
+ yield
52
+ rescue Faraday::ConnectionFailed => e
53
+ raise ConnectionError, "#{ErrorMessage.connection_failed} #{e.message}"
54
+ rescue Faraday::TimeoutError => e
55
+ raise ConnectionError, "#{ErrorMessage.timeout} #{e.message}"
56
+ rescue StandardError => e
57
+ raise ConnectionError, "#{ErrorMessage.unexpected} #{e.message}"
60
58
  end
61
59
 
62
60
  def convert_json_to_open_struct(json)
@@ -17,10 +17,10 @@ module StrapiRuby
17
17
  private
18
18
 
19
19
  def build_endpoint
20
- @result = if builds_collection?
21
- "#{base_uri}/#{@resource}/#{@id}"
22
- else
20
+ @result = if collection?
23
21
  "#{base_uri}/#{@resource}"
22
+ else
23
+ "#{base_uri}/#{@resource}/#{@id}"
24
24
  end
25
25
  end
26
26
 
@@ -28,8 +28,8 @@ module StrapiRuby
28
28
  @result += @query if @query
29
29
  end
30
30
 
31
- def builds_collection?
32
- !@id.nil?
31
+ def collection?
32
+ @id.nil?
33
33
  end
34
34
 
35
35
  def base_uri
@@ -6,6 +6,7 @@ module StrapiRuby
6
6
  private
7
7
 
8
8
  def sort(args)
9
+ check_collection
9
10
  build_query_from_args(args, :sort)
10
11
  end
11
12
 
@@ -18,6 +19,7 @@ module StrapiRuby
18
19
  end
19
20
 
20
21
  def filters(args)
22
+ check_collection
21
23
  build_query_from_args(args, :filters)
22
24
  end
23
25
 
@@ -25,54 +27,39 @@ module StrapiRuby
25
27
  raise TypeError, "#{ErrorMessage.expected_integer} Got #{number.class.name}" unless number.is_a?(Integer)
26
28
 
27
29
  check_single_pagination
30
+ check_collection
28
31
  @result += "#{prefix}pagination[pageSize]=#{number}"
29
32
  end
30
33
 
31
- # Sets the page number for the query result.
32
- #
33
- # @param number [Integer] An Integer representing the page number.
34
- #
35
- # @return [String] The updated query string with the page number option added.
36
34
  def page(number)
37
35
  raise TypeError, "#{ErrorMessage.expected_integer} Got #{number.class.name}" unless number.is_a?(Integer)
38
36
 
39
37
  check_single_pagination
38
+ check_collection
40
39
  @result += "#{prefix}pagination[page]=#{number}"
41
40
  end
42
41
 
43
- # Sets the offset for the query result.
44
- #
45
- # @param number [Integer] An Integer representing the offset.
46
- #
47
- # @return [String] The updated query string with the offset option added.
48
42
  def start(number)
49
43
  raise TypeError, "#{ErrorMessage.expected_integer} Got #{number.class.name}" unless number.is_a?(Integer)
50
44
 
51
45
  check_single_pagination
46
+ check_collection
52
47
  @result += "#{prefix}pagination[start]=#{number}"
53
48
  end
54
49
 
55
- # Sets the limit for the query result.
56
- #
57
- # @param number [Integer] An Integer representing the limit.
58
- #
59
- # @return [String] The updated query string with the limit option added.
60
50
  def limit(number)
61
51
  raise TypeError unless number.is_a?(Integer)
62
52
 
63
53
  check_single_pagination
54
+ check_collection
64
55
  @result += "#{prefix}pagination[limit]=#{number}"
65
56
  end
66
57
 
67
- ##
68
- # Sets the locale for the query result.
69
- #
70
- # @params arg [String, Symbol] A String or Symbol representing the locale.
71
- #
72
- # @return [String] The updated query string with the locale option added.
73
58
  def locale(arg)
74
59
  raise TypeError, "#{ErrorMessage.expected_string_symbol} Got #{arg.class.name}" unless arg.is_a?(String) || arg.is_a?(Symbol)
75
60
 
61
+ check_collection
62
+
76
63
  @result += "#{prefix}locale=#{arg}"
77
64
  end
78
65
 
@@ -80,11 +67,11 @@ module StrapiRuby
80
67
  raise TypeError, "#{ErrorMessage.expected_string_symbol} Got #{arg.class.name}" unless arg.is_a?(String) || arg.is_a?(Symbol)
81
68
  raise ArgumentError, "#{ErrorMessage.publication_state} Got #{arg}" unless arg.to_sym == :live || arg.to_sym == :preview
82
69
 
70
+ check_collection
71
+
83
72
  @result += "#{prefix}publicationState=#{arg}"
84
73
  end
85
74
 
86
- # Checks params don't combine pagination methods.
87
- #
88
75
  def check_single_pagination
89
76
  return unless (@options.key?(:page) && @options.key?(:start)) ||
90
77
  (@options.key(:page) && @options.key?(:limit)) ||
@@ -94,9 +81,16 @@ module StrapiRuby
94
81
  raise ArgumentError, ErrorMessage.pagination
95
82
  end
96
83
 
97
- # builds the prefix for the query string (either "?" or "&" depending on whether the query string is empty or not).
98
- #
99
- # @return [String] A String representing the prefix.
84
+ def collection?
85
+ @options[:id].nil?
86
+ end
87
+
88
+ def check_collection
89
+ return if collection?
90
+
91
+ raise ArgumentError, ErrorMessage.collection_query
92
+ end
93
+
100
94
  def prefix
101
95
  @result.empty? ? "?" : "&"
102
96
  end
@@ -20,23 +20,22 @@ module StrapiRuby
20
20
 
21
21
  def escape_empty_answer(answer)
22
22
  return answer.error.message if answer.data.nil? && answer.error
23
+
23
24
  yield
24
25
  end
25
26
 
26
27
  private
27
28
 
28
29
  def request(http_verb, options = {})
29
- begin
30
- validate_options(options)
31
- @endpoint = build_endpoint(options)
32
- answer = build_answer(http_verb, @endpoint, options)
33
- data = format_data(answer.data, options)
34
- meta = answer.meta
30
+ validate_options(options)
31
+ @endpoint = build_endpoint(options)
32
+ answer = build_answer(http_verb, @endpoint, options)
33
+ data = format_data(answer.data, options)
34
+ meta = answer.meta
35
35
 
36
- return_success_open_struct(data, meta, options)
37
- rescue StrapiRuby::ClientError, StrapiRuby::ConfigError => e
38
- return_error_open_struct(e, options)
39
- end
36
+ return_success_open_struct(data, meta, options)
37
+ rescue StrapiRuby::ClientError, StrapiRuby::ConfigurationError => e
38
+ return_error_open_struct(e, options)
40
39
  end
41
40
 
42
41
  def build_answer(http_verb, endpoint, options)
@@ -53,7 +52,7 @@ module StrapiRuby
53
52
  options[:show_endpoint] || StrapiRuby.config.show_endpoint
54
53
  end
55
54
 
56
- def return_success_open_struct(data, meta, error = nil, options = {})
55
+ def return_success_open_struct(data, meta, _error = nil, options = {})
57
56
  if show_endpoint?(options)
58
57
  OpenStruct.new(data: data,
59
58
  meta: meta,
@@ -63,7 +62,7 @@ module StrapiRuby
63
62
  end
64
63
  end
65
64
 
66
- def return_error_open_struct(error, options = {})
65
+ def return_error_open_struct(error, _options = {})
67
66
  OpenStruct.new(error: OpenStruct.new(message: "#{error.class}: #{error.message}"),
68
67
  endpoint: @endpoint,
69
68
  data: nil,
@@ -20,7 +20,7 @@ namespace :strapi_ruby do
20
20
  config.strapi_server_uri = "YOUR_SERVER_URI"
21
21
  config.strapi_token = "YOUR_TOKEN"
22
22
  end
23
- CONFIG
23
+ CONFIG
24
24
  File.write(config_file, config)
25
25
  puts "StrapiRuby configuration file created at config/initializers/strapi_ruby.rb."
26
26
  end
@@ -26,7 +26,7 @@ module StrapiRuby
26
26
  end
27
27
 
28
28
  def validate_show_endpoint_config(show_endpoint)
29
- raise TypeError, "#{ErrorMessage.expected_boolean}" unless [true, false].include?(show_endpoint)
29
+ raise TypeError, ErrorMessage.expected_boolean unless [true, false].include?(show_endpoint)
30
30
  end
31
31
 
32
32
  def validate_faraday_block(faraday)
@@ -52,7 +52,7 @@ module StrapiRuby
52
52
  end
53
53
 
54
54
  def validate_show_endpoint_params(options)
55
- raise TypeError, "#{ErrorMessage.expected_boolean}" if options[:show_endpoint] && ![true, false].include?(options[:show_endpoint])
55
+ raise TypeError, ErrorMessage.expected_boolean if options[:show_endpoint] && ![true, false].include?(options[:show_endpoint])
56
56
  end
57
57
 
58
58
  def validate_body(options)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module StrapiRuby
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strapi_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maxence Robinet
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-11 00:00:00.000000000 Z
11
+ date: 2023-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -90,6 +90,7 @@ executables: []
90
90
  extensions: []
91
91
  extra_rdoc_files: []
92
92
  files:
93
+ - ".DS_Store"
93
94
  - ".rspec"
94
95
  - ".rubocop.yml"
95
96
  - CHANGELOG.md
@@ -97,7 +98,6 @@ files:
97
98
  - README.md
98
99
  - Rakefile
99
100
  - assets/strapi_ruby_logo.png
100
- - features.md
101
101
  - lib/strapi_ruby.rb
102
102
  - lib/strapi_ruby/client.rb
103
103
  - lib/strapi_ruby/config.rb
data/features.md DELETED
@@ -1,7 +0,0 @@
1
- # Features
2
-
3
- - I want to be able to configure using a YAML file
4
- - I want to have a simple API to unpack and read fetched data
5
- - I want to have easy support for SEO plugin
6
- - I want to do all GET Operations
7
- - I want to do all POST operations