kaze_client 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/main.yml +18 -0
  3. data/.gitignore +16 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +104 -0
  6. data/CHANGELOG.md +11 -0
  7. data/CODE_OF_CONDUCT.md +84 -0
  8. data/Gemfile +12 -0
  9. data/Gemfile.lock +63 -0
  10. data/LICENSE.txt +21 -0
  11. data/README.md +37 -0
  12. data/Rakefile +12 -0
  13. data/bin/console +15 -0
  14. data/bin/setup +8 -0
  15. data/kaze_client.gemspec +35 -0
  16. data/lib/activesupport/blank.rb +155 -0
  17. data/lib/activesupport/camelize.rb +32 -0
  18. data/lib/kaze_client/client.rb +99 -0
  19. data/lib/kaze_client/error/disabled_account.rb +13 -0
  20. data/lib/kaze_client/error/forbidden.rb +13 -0
  21. data/lib/kaze_client/error/generic.rb +29 -0
  22. data/lib/kaze_client/error/internal_server_error.rb +13 -0
  23. data/lib/kaze_client/error/invalid_credentials.rb +13 -0
  24. data/lib/kaze_client/error/no_endpoint.rb +19 -0
  25. data/lib/kaze_client/error/no_private_token.rb +13 -0
  26. data/lib/kaze_client/error/not_found.rb +13 -0
  27. data/lib/kaze_client/error/unauthorized.rb +13 -0
  28. data/lib/kaze_client/errors.rb +12 -0
  29. data/lib/kaze_client/request/request.rb +113 -0
  30. data/lib/kaze_client/request/requests/assign_performer_request.rb +23 -0
  31. data/lib/kaze_client/request/requests/companies_request.rb +19 -0
  32. data/lib/kaze_client/request/requests/create_job_request.rb +32 -0
  33. data/lib/kaze_client/request/requests/job_request.rb +17 -0
  34. data/lib/kaze_client/request/requests/job_workflow_request.rb +25 -0
  35. data/lib/kaze_client/request/requests/job_workflows_request.rb +19 -0
  36. data/lib/kaze_client/request/requests/jobs_request.rb +18 -0
  37. data/lib/kaze_client/request/requests/login_request.rb +28 -0
  38. data/lib/kaze_client/request/requests/profile_request.rb +17 -0
  39. data/lib/kaze_client/request/requests/update_template_request.rb +19 -0
  40. data/lib/kaze_client/request/requests/utils/authentified_request.rb +25 -0
  41. data/lib/kaze_client/request/requests/utils/final_request.rb +13 -0
  42. data/lib/kaze_client/request/requests/utils/list_request.rb +120 -0
  43. data/lib/kaze_client/requests.rb +23 -0
  44. data/lib/kaze_client/response.rb +34 -0
  45. data/lib/kaze_client/version.rb +5 -0
  46. data/lib/kaze_client.rb +17 -0
  47. metadata +114 -0
@@ -0,0 +1,120 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KazeClient
4
+ module Utils
5
+ # @author ciappa_m@modulotech.fr
6
+ # Included by the request where a list will be returned.
7
+ # @see KazeClient::Request
8
+ module ListRequest
9
+ # @return [Integer,String] The page to fetch.
10
+ attr_reader :page
11
+
12
+ # @return [Integer] The number of items to fetch by page; between 1 and 100.
13
+ attr_reader :per_page
14
+
15
+ # @return [String] The field to use for the list order.
16
+ attr_reader :order_field
17
+
18
+ # @return ['asc', 'desc'] The direction of the order.
19
+ attr_reader :order_direction
20
+
21
+ # @return [Hash] The filters to apply to the query.
22
+ attr_reader :filters
23
+
24
+ def initialize(method, url)
25
+ super(method, url)
26
+
27
+ @query ||= {}
28
+ @filters ||= {}
29
+ end
30
+
31
+ # @param page [Integer,String] Set the page to fetch
32
+ # @return [KazeClient::Utils::ListRequest] self (to chain methods)
33
+ def add_page(page)
34
+ # Ensure the +per_page+ parameter is valid; default is 1
35
+ @page = if !page.is_a?(Numeric) || page.to_i < 1
36
+ 1
37
+ else
38
+ page
39
+ end
40
+
41
+ @query[:page] = @page
42
+
43
+ self
44
+ end
45
+
46
+ # @param per_page [Integer,String] Set the number of items to fetch per page
47
+ # @return [KazeClient::Utils::ListRequest] self (to chain methods)
48
+ def add_per_page(per_page)
49
+ # Ensure the +per_page+ parameter is between 1 and 100
50
+ @per_page = if !per_page.is_a?(Numeric) || per_page.to_i < 1
51
+ 1
52
+ elsif per_page > 100
53
+ 100
54
+ else
55
+ per_page
56
+ end
57
+
58
+ @query[:per_page] = @per_page
59
+
60
+ self
61
+ end
62
+
63
+ # @param field [String] Set the field to use for the list order
64
+ # @return [KazeClient::Utils::ListRequest] self (to chain methods)
65
+ def add_order_field(field)
66
+ @order_field = field
67
+ @query[:order_field] = @order_field
68
+
69
+ self
70
+ end
71
+
72
+ # @param direction ['asc','desc'] Set the direction of the order.
73
+ # @return [KazeClient::Utils::ListRequest] self (to chain methods)
74
+ def add_order_direction(direction)
75
+ # Ensure the +direction+ parameter is valid; default direction is ascendant
76
+ @order_direction = %w[asc desc].include?(direction.to_s) ? direction.to_s : "asc"
77
+
78
+ @query[:order_direction] = @order_direction
79
+
80
+ self
81
+ end
82
+
83
+ # @!method filter_by_id(value)
84
+ # This is an example. Any method beginning with +filter_by_+ is valid and defined using
85
+ # +method_missing+. This adds a filter on the string following +filter_by_+ to the query.
86
+ # @param value [String] Add a filter to the query.
87
+ # @return [KazeClient::Utils::ListRequest] self (to chain methods)
88
+ # @example To filter on id then on name
89
+ # filter_by_id(2).filter_by_name('foo')
90
+ def method_missing(method_name, *args, &block)
91
+ match_data = method_name.match(/^filter_by_(\w+)/)
92
+
93
+ # Match_data[0] is the whole match while match_data[1] is the first capture group; here
94
+ # it is the field to filter on.
95
+ # Only the first given argument is considered to be the value to filter on. Possible
96
+ # subsequent arguments are ignored.
97
+ match_data ? filter_by(match_data[1], args[0]) : super
98
+ end
99
+
100
+ def respond_to_missing?(method_name, include_private = false)
101
+ method_name.match?(/^filter_by_/) || super
102
+ end
103
+
104
+ private
105
+
106
+ def filter_by(field, value)
107
+ # Initialize the filters Hash if needed
108
+ # @filters ||= {}
109
+
110
+ # Store the filter
111
+ @filters[field] = value
112
+
113
+ # Set the filter on the query parameters
114
+ @query["filter[#{field}]"] = value
115
+
116
+ self
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The base request object - for custom/newest APIs
4
+ require_relative "request/request"
5
+
6
+ # Modules included in requests
7
+ require_relative "request/requests/utils/authentified_request"
8
+ require_relative "request/requests/utils/list_request"
9
+
10
+ # The base object for pre-crafted requests
11
+ require_relative "request/requests/utils/final_request"
12
+
13
+ # The pre-crafted requests
14
+ require_relative "request/requests/assign_performer_request"
15
+ require_relative "request/requests/companies_request"
16
+ require_relative "request/requests/create_job_request"
17
+ require_relative "request/requests/job_request"
18
+ require_relative "request/requests/job_workflow_request"
19
+ require_relative "request/requests/job_workflows_request"
20
+ require_relative "request/requests/jobs_request"
21
+ require_relative "request/requests/login_request"
22
+ require_relative "request/requests/profile_request"
23
+ require_relative "request/requests/update_template_request"
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KazeClient
4
+ # @author ciappa_m@modulotech.fr
5
+ # Represents response from a Kaze API
6
+ # @see KazeClient::Client
7
+ # @see KazeClient::Request
8
+ # @since 0.1.0
9
+ class Response
10
+ # @return [HTTParty::Response] The response object from HTTParty call
11
+ attr_reader :original_response
12
+
13
+ # @return [Hash] The JSON object resulting from HTTParty parsed response
14
+ attr_reader :parsed_response
15
+
16
+ # @param response [HTTParty::Response] The response object from HTTParty call
17
+ def initialize(response)
18
+ @original_response = response
19
+ @parsed_response = response.parsed_response
20
+ end
21
+
22
+ def method_missing(method_name, *args, &block)
23
+ if %i[original_response parsed_response].include?(method_name)
24
+ send(method_name)
25
+ else
26
+ @parsed_response.send(method_name, *args, &block)
27
+ end
28
+ end
29
+
30
+ def respond_to_missing?(method_name, include_private = false)
31
+ %i[original_response parsed_response].include?(method_name) || super
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KazeClient
4
+ VERSION = "0.1.1"
5
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ # I only need some very specific parts of activesupport.
4
+ require "activesupport/blank"
5
+ require "activesupport/camelize"
6
+
7
+ # Require HTTParty
8
+ require "httparty"
9
+
10
+ # Require the version number
11
+ require_relative "kaze_client/version"
12
+
13
+ # Require the different parts of the gem
14
+ require_relative "kaze_client/errors"
15
+ require_relative "kaze_client/requests"
16
+ require_relative "kaze_client/response"
17
+ require_relative "kaze_client/client"
metadata ADDED
@@ -0,0 +1,114 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kaze_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Matthieu Ciappara
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2022-05-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.18'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.18.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.18'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.18.1
33
+ description: |
34
+ This is the official Ruby client library for Kaze (https://www.kaze.so/) API.
35
+
36
+ The API documentation can be found at https://documenter.getpostman.com/view/15303175/U16nLQ7r.
37
+ email:
38
+ - ciappa_m@modulotech.fr
39
+ executables: []
40
+ extensions: []
41
+ extra_rdoc_files: []
42
+ files:
43
+ - ".github/workflows/main.yml"
44
+ - ".gitignore"
45
+ - ".rspec"
46
+ - ".rubocop.yml"
47
+ - CHANGELOG.md
48
+ - CODE_OF_CONDUCT.md
49
+ - Gemfile
50
+ - Gemfile.lock
51
+ - LICENSE.txt
52
+ - README.md
53
+ - Rakefile
54
+ - bin/console
55
+ - bin/setup
56
+ - kaze_client.gemspec
57
+ - lib/activesupport/blank.rb
58
+ - lib/activesupport/camelize.rb
59
+ - lib/kaze_client.rb
60
+ - lib/kaze_client/client.rb
61
+ - lib/kaze_client/error/disabled_account.rb
62
+ - lib/kaze_client/error/forbidden.rb
63
+ - lib/kaze_client/error/generic.rb
64
+ - lib/kaze_client/error/internal_server_error.rb
65
+ - lib/kaze_client/error/invalid_credentials.rb
66
+ - lib/kaze_client/error/no_endpoint.rb
67
+ - lib/kaze_client/error/no_private_token.rb
68
+ - lib/kaze_client/error/not_found.rb
69
+ - lib/kaze_client/error/unauthorized.rb
70
+ - lib/kaze_client/errors.rb
71
+ - lib/kaze_client/request/request.rb
72
+ - lib/kaze_client/request/requests/assign_performer_request.rb
73
+ - lib/kaze_client/request/requests/companies_request.rb
74
+ - lib/kaze_client/request/requests/create_job_request.rb
75
+ - lib/kaze_client/request/requests/job_request.rb
76
+ - lib/kaze_client/request/requests/job_workflow_request.rb
77
+ - lib/kaze_client/request/requests/job_workflows_request.rb
78
+ - lib/kaze_client/request/requests/jobs_request.rb
79
+ - lib/kaze_client/request/requests/login_request.rb
80
+ - lib/kaze_client/request/requests/profile_request.rb
81
+ - lib/kaze_client/request/requests/update_template_request.rb
82
+ - lib/kaze_client/request/requests/utils/authentified_request.rb
83
+ - lib/kaze_client/request/requests/utils/final_request.rb
84
+ - lib/kaze_client/request/requests/utils/list_request.rb
85
+ - lib/kaze_client/requests.rb
86
+ - lib/kaze_client/response.rb
87
+ - lib/kaze_client/version.rb
88
+ homepage: https://github.com/moduloTech/kaze_client
89
+ licenses:
90
+ - MIT
91
+ metadata:
92
+ homepage_uri: https://github.com/moduloTech/kaze_client
93
+ source_code_uri: https://github.com/moduloTech/kaze_client
94
+ changelog_uri: https://github.com/moduloTech/kaze_client/blob/master/CHANGELOG.md
95
+ post_install_message:
96
+ rdoc_options: []
97
+ require_paths:
98
+ - lib
99
+ required_ruby_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 2.5.0
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ requirements: []
110
+ rubygems_version: 3.0.3.1
111
+ signing_key:
112
+ specification_version: 4
113
+ summary: This is the official Ruby client library for Kaze API.
114
+ test_files: []