elmas 2.3.3 → 2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 71737a3f3e2f0e9d90a1f1816f7e5f54344927aa
4
- data.tar.gz: 87a2626e71be182b8e9dcd3298d9cde389575a5f
3
+ metadata.gz: 9a9ed5ba705a72bd6891dcf22693b1266785c87a
4
+ data.tar.gz: 9e096590a3fbcf310c117c0ca80b66564c924d99
5
5
  SHA512:
6
- metadata.gz: b28dcd6d710c644d20de49836a15bfa4254ef588da710ee9654711daa3abbb9ebbbe0a6b0a124377b33a5a911df4fd951db1fe5ce709d32fe431cbdf287d5978
7
- data.tar.gz: e003e7bcad6733aa1575e8a9952b00ff585a3e33baa82a3606065ff095fccdc87a40acf1ce899d3930159e254ac3bc1e59c7fa902091c4ceb74e0a956e74fa8e
6
+ metadata.gz: dd2449651468db6b7dcadc2b32a478903055c7f4f43e4cc9c0ed78803cc2e9a5bb0ac37682f0f920c583fd3864f8a2a6e92f2ce77b6e8ad1f89c3b6f0afdcdca
7
+ data.tar.gz: 23773f8506826a87f8ff24b4b2570ee0653e0c441d15fac620597314331408b4446caac447b50829d7144af8f086f9b871e3c4696e609c1f343fbc2870ebceeb
data/Changelog.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 2.4.0
2
+
3
+ - Add security measures for constantizing Exact Resources thanks to @confiks
4
+ - Add possibility to filter on Date or Time. Added test for BankEntry. thanks to @confiks
5
+ - Custom exception shouldn't inherit Exception. Use StandardError instead. thanks to @confiks
6
+ - Let go of unecessary dev dependency versions
7
+
1
8
  ## 2.3.3
2
9
 
3
10
  - Add bank accounts resource
data/elmas.gemspec CHANGED
@@ -17,20 +17,20 @@ Gem::Specification.new do |spec|
17
17
  spec.version = Elmas::Version.to_s
18
18
 
19
19
  spec.add_dependency "faraday", [">= 0.8", "< 0.10"]
20
- spec.add_dependency "mechanize", "2.6.0"
20
+ spec.add_dependency "mechanize", ">= 2.6.0"
21
21
  spec.add_dependency "activesupport"
22
22
 
23
23
  spec.add_development_dependency "bundler"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency("rspec", "~> 3.0")
26
- spec.add_development_dependency("simplecov")
27
- spec.add_development_dependency("simplecov-rcov")
28
- spec.add_development_dependency("webmock", "~> 1.6")
29
- spec.add_development_dependency("rubycritic", "~> 1.4.0")
30
- spec.add_development_dependency("guard-rspec")
31
- spec.add_development_dependency("guard-rubocop")
32
- spec.add_development_dependency("listen", "~> 3.0")
33
- spec.add_development_dependency("ruby_dep", "~> 1.3")
34
- spec.add_development_dependency("mutant-rspec")
35
- spec.add_development_dependency("dotenv")
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "simplecov"
27
+ spec.add_development_dependency "simplecov-rcov"
28
+ spec.add_development_dependency "webmock"
29
+ spec.add_development_dependency "rubycritic"
30
+ spec.add_development_dependency "guard-rspec"
31
+ spec.add_development_dependency "guard-rubocop"
32
+ spec.add_development_dependency "listen"
33
+ spec.add_development_dependency "ruby_dep"
34
+ spec.add_development_dependency "mutant-rspec"
35
+ spec.add_development_dependency "dotenv"
36
36
  end
@@ -1,5 +1,5 @@
1
1
  module Elmas
2
- class BadRequestException < Exception
2
+ class BadRequestException < StandardError
3
3
  def initialize(response, parsed)
4
4
  @response = response
5
5
  @parsed = parsed
@@ -11,5 +11,5 @@ module Elmas
11
11
  end
12
12
  end
13
13
 
14
- class UnauthorizedException < Exception; end
14
+ class UnauthorizedException < StandardError; end
15
15
  end
data/lib/elmas/oauth.rb CHANGED
@@ -48,14 +48,14 @@ module Elmas
48
48
  options[:response_type] ||= "code"
49
49
  options[:redirect_uri] ||= redirect_uri
50
50
  params = authorization_params.merge(options)
51
- uri = URI("https://start.exactonline.nl/api/oauth2/auth/")
51
+ uri = URI("#{base_url}/api/oauth2/auth/")
52
52
  uri.query = URI.encode_www_form(params)
53
53
  uri.to_s
54
54
  end
55
55
 
56
56
  # Return an access token from authorization
57
57
  def get_access_token(code, _options = {})
58
- conn = Faraday.new(url: "https://start.exactonline.nl") do |faraday|
58
+ conn = Faraday.new(url: base_url) do |faraday|
59
59
  faraday.request :url_encoded
60
60
  faraday.adapter Faraday.default_adapter
61
61
  end
@@ -9,12 +9,12 @@ module Elmas
9
9
  end
10
10
 
11
11
  def mandatory_attributes
12
- [:journal, :contact, :sales_entry_lines]
12
+ [:journal, :customer, :sales_entry_lines]
13
13
  end
14
14
 
15
15
  def other_attributes
16
16
  [
17
- :batch_number, :currency, :customer, :document, :due_date, :entry_date,
17
+ :batch_number, :currency, :document, :due_date, :entry_date,
18
18
  :entry_number, :invoice_number, :order_number, :payment_condition,
19
19
  :payment_reference, :process_number, :rate, :reporting_period,
20
20
  :reporting_year, :reversal, :VAT_amount_FC, :your_ref, :description
@@ -44,8 +44,13 @@ module Elmas
44
44
 
45
45
  def resource_class
46
46
  @resource_class ||= begin
47
- constant_name = Utils.modulize(type)
48
- Object.const_get(constant_name)
47
+ constant_name = type.classify
48
+ fail NameError unless constant_name =~ /\A[a-zA-Z0-9]+\z/
49
+
50
+ klass = Elmas.const_get(constant_name, false)
51
+ fail NameError unless klass.included_modules.include?(Elmas::Resource)
52
+
53
+ klass
49
54
  rescue NameError
50
55
  Elmas.info("Unknown resource encountered, proceed as usual but further resource details might have to be implemented")
51
56
  Class.new { include Elmas::Resource }
data/lib/elmas/uri.rb CHANGED
@@ -46,12 +46,17 @@ module Elmas
46
46
 
47
47
  # Convert a value to something usable in an ExactOnline request
48
48
  def sanitize_value(value)
49
- if value.is_a?(String)
49
+ case value
50
+ when String
50
51
  if value =~ /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/
51
52
  "guid'#{value}'"
52
53
  else
53
54
  "'#{value}'"
54
55
  end
56
+
57
+ when Date, Time
58
+ "datetime'#{value.strftime('%FT%TZ')}'"
59
+
55
60
  else
56
61
  value
57
62
  end
data/lib/elmas/version.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  module Elmas
2
2
  class Version
3
3
  MAJOR = 2
4
- MINOR = 3
5
- PATCH = 3
4
+ MINOR = 4
5
+ PATCH = 0
6
6
 
7
7
  class << self
8
8
  def to_s
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elmas
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.3
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marthyn
@@ -34,14 +34,14 @@ dependencies:
34
34
  name: mechanize
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - '='
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: 2.6.0
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - '='
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: 2.6.0
47
47
  - !ruby/object:Gem::Dependency
@@ -76,30 +76,30 @@ dependencies:
76
76
  name: rake
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '10.0'
81
+ version: '0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: '10.0'
88
+ version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: rspec
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
- version: '3.0'
95
+ version: '0'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - "~>"
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: '3.0'
102
+ version: '0'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: simplecov
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -132,30 +132,30 @@ dependencies:
132
132
  name: webmock
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
- - - "~>"
135
+ - - ">="
136
136
  - !ruby/object:Gem::Version
137
- version: '1.6'
137
+ version: '0'
138
138
  type: :development
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
- - - "~>"
142
+ - - ">="
143
143
  - !ruby/object:Gem::Version
144
- version: '1.6'
144
+ version: '0'
145
145
  - !ruby/object:Gem::Dependency
146
146
  name: rubycritic
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
- - - "~>"
149
+ - - ">="
150
150
  - !ruby/object:Gem::Version
151
- version: 1.4.0
151
+ version: '0'
152
152
  type: :development
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
- - - "~>"
156
+ - - ">="
157
157
  - !ruby/object:Gem::Version
158
- version: 1.4.0
158
+ version: '0'
159
159
  - !ruby/object:Gem::Dependency
160
160
  name: guard-rspec
161
161
  requirement: !ruby/object:Gem::Requirement
@@ -188,30 +188,30 @@ dependencies:
188
188
  name: listen
189
189
  requirement: !ruby/object:Gem::Requirement
190
190
  requirements:
191
- - - "~>"
191
+ - - ">="
192
192
  - !ruby/object:Gem::Version
193
- version: '3.0'
193
+ version: '0'
194
194
  type: :development
195
195
  prerelease: false
196
196
  version_requirements: !ruby/object:Gem::Requirement
197
197
  requirements:
198
- - - "~>"
198
+ - - ">="
199
199
  - !ruby/object:Gem::Version
200
- version: '3.0'
200
+ version: '0'
201
201
  - !ruby/object:Gem::Dependency
202
202
  name: ruby_dep
203
203
  requirement: !ruby/object:Gem::Requirement
204
204
  requirements:
205
- - - "~>"
205
+ - - ">="
206
206
  - !ruby/object:Gem::Version
207
- version: '1.3'
207
+ version: '0'
208
208
  type: :development
209
209
  prerelease: false
210
210
  version_requirements: !ruby/object:Gem::Requirement
211
211
  requirements:
212
- - - "~>"
212
+ - - ">="
213
213
  - !ruby/object:Gem::Version
214
- version: '1.3'
214
+ version: '0'
215
215
  - !ruby/object:Gem::Dependency
216
216
  name: mutant-rspec
217
217
  requirement: !ruby/object:Gem::Requirement