upfluence-utils 0.9.2 → 0.10.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
  SHA256:
3
- metadata.gz: 35be0f17a3c73784afa8e178a740bed54d6491d182d592177904bbfbf31e0b83
4
- data.tar.gz: 9d7bebee3fbdead4d8b32e3314adbfba61e282811249b023fc2d0488dfb0a538
3
+ metadata.gz: c8c88069b0d18a4f8f01315a252a691a7410d3dfcfdf268f3c99508b8a31e504
4
+ data.tar.gz: 536742411a6e92e68787c5fdb64f5542f9fcdb6f0e138d9bfa6e3d3d5857e697
5
5
  SHA512:
6
- metadata.gz: 423c2ef58a5363705bb5f90ec629648000a2d25c14c2536da02afb1def3f14c946db657ca244887ec3cc5400d2b78feaf6be5c92103b8853a0af420cdf6bbffc
7
- data.tar.gz: e559829e31729eaa0ed30bde6d3d4fcda417d7833324a93c1ac923e4bf9e8ff3fcbf0abd0b4f0357f4c967e2d9a9b165d1c33c2fe542a4bb9f36ac5212ac836c
6
+ metadata.gz: d3defd0c55f04af0751f337e50ed62a32915b83d2f9b90ac9aed21513ca38ae37b89d8db49d3614f634596fdad2876316643967c21d5d54bcaf3e543a3068b09
7
+ data.tar.gz: b5ca86d6ca49687d46f5ea3b4b1e2de8b5907f4928335f10212d74ac6772b28d5a16f3891f7f7365828f6c5a49cdc8b72e7260d828e893284cb6641e81c25377
@@ -2,6 +2,7 @@ require 'sinatra'
2
2
  require 'active_record'
3
3
  require 'active_support/hash_with_indifferent_access'
4
4
  require 'upfluence/http/endpoint/validation_error'
5
+ require 'upfluence/mixin/strong_parameters'
5
6
 
6
7
  module Upfluence
7
8
  module HTTP
@@ -99,6 +100,16 @@ module Upfluence
99
100
  Sinatra::Base.error ActiveRecord::RecordInvalid do |e|
100
101
  [422, Base::Exceptions::ValidationError.from_model(e.record).to_json]
101
102
  end
103
+
104
+ Sinatra::Base.error Upfluence::Mixin::StrongParameters::ParameterMissing do |e|
105
+ [
106
+ 400,
107
+ {
108
+ error: 'missing_parameter',
109
+ param: e.param
110
+ }.to_json
111
+ ]
112
+ end
102
113
  end
103
114
  end
104
115
  end
@@ -0,0 +1,25 @@
1
+ require 'loofah'
2
+
3
+ module Upfluence
4
+ module Mixin
5
+ module HTMLScrubbing
6
+ def scrub_params(params, *keys)
7
+ keys.reduce(params) do |vs, key|
8
+ if vs.key? key
9
+ vs.merge(key => scrub_value(vs[key]))
10
+ else
11
+ vs
12
+ end
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def scrub_value(value)
19
+ return nil unless value.is_a? String
20
+
21
+ Loofah.fragment(value).scrub!(:prune).to_s
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,23 +1,15 @@
1
1
  module Upfluence
2
2
  module Resources
3
3
  COUNTRIES = %w[
4
- US FR GB DE CH AF AL DZ AS AD AO AI
5
- AG AR AM AW AU AT AZ BS BH BD BB BY
6
- BE BZ BJ BM BT BO BA BW BR BN BG BF
7
- BI CV KH CM CA KY CF TD CL CN CO KM
8
- CG CD CK CI HR CU CY CZ DK DJ DM DO
9
- GW GY HT VA HN HK HU IS IN ID IR IQ
10
- IE IM IL IT JM JP JE JO KZ KE KI KP
11
- KR KW KG LA LV LB LI LS LR LY LT LU
12
- MO MK MG MW MY MV ML MT MH MQ MR MU
13
- MX FM MD MC MN ME MS MA MZ MM NA NR
14
- NP NL NC NZ NI NE NG NO OM PK PW PS
15
- PA PG PY PE PH PL PT PR QA RE RO RU
16
- RW KN LC VC WS SM ST SA SN RS SC SL
17
- SG SK SI SB SO ZA ES LK SD SR SZ SE
18
- SY TW TJ TZ TH TL TG TO TT TN TR TM
19
- TC TV UG UA AE GB UY UZ VU VE VN VG
20
- VI EH YE ZM ZW CR
4
+ US FR GB DE CH AF AL DZ AS AD AO AI AG AR AM AW AU AT AZ BS BH BD BB BY BE
5
+ BZ BJ BM BT BO BA BW BR BN BG BF BI CV KH CM CA KY CF TD CL CN CO KM CG CD
6
+ CK CI HR CU CY CZ DK DJ DM DO EC EG SV GQ ER EE ET FO FJ FI PF GA GM GE GH
7
+ GI GR GL GD GP GU GT GG GN GW GY HT VA HN HK HU IS IN ID IR IQ IE IM IL IT
8
+ JM JP JE JO KZ KE KI KP KR KW KG LA LV LB LI LS LR LY LT LU MO MK MG MW MY
9
+ MV ML MT MH MQ MR MU MX FM MD MC MN ME MS MA MZ MM NA NR NP NL NC NZ NI NE
10
+ NG NO OM PK PW PS PA PG PY PE PH PL PT PR QA RE RO RU RW KN LC VC WS SM ST
11
+ SA SN RS SC SL SG SK SI SB SO ZA ES LK SD SR SZ SE SY TW TJ TZ TH TL TG TO
12
+ TT TN TR TM TC TV UG UA AE GB UY UZ VU VE VN VG VI EH YE ZM ZW CR
21
13
  ].freeze
22
14
  end
23
15
  end
@@ -1,5 +1,5 @@
1
1
  module Upfluence
2
2
  module Utils
3
- VERSION = '0.9.2'.freeze
3
+ VERSION = '0.10.0'.freeze
4
4
  end
5
5
  end
data/rbutils.gemspec CHANGED
@@ -31,4 +31,5 @@ Gem::Specification.new do |spec|
31
31
  spec.add_runtime_dependency 'prometheus-client', '~> 2.1'
32
32
  spec.add_runtime_dependency 'userializer'
33
33
  spec.add_runtime_dependency 'activerecord'
34
+ spec.add_runtime_dependency 'loofah'
34
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upfluence-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Upfluence
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-29 00:00:00.000000000 Z
11
+ date: 2021-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -220,6 +220,20 @@ dependencies:
220
220
  - - ">="
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: loofah
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
223
237
  description:
224
238
  email:
225
239
  - dev@upfluence.com
@@ -255,6 +269,7 @@ files:
255
269
  - lib/upfluence/http/middleware/prometheus.rb
256
270
  - lib/upfluence/http/server.rb
257
271
  - lib/upfluence/logger.rb
272
+ - lib/upfluence/mixin/html_scrubbing.rb
258
273
  - lib/upfluence/mixin/pagination.rb
259
274
  - lib/upfluence/mixin/strong_parameters.rb
260
275
  - lib/upfluence/peer.rb