sqreen 1.22.1 → 1.23.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 57d4b7264d76b91e470ef68f34927c03050684f38cd02c4c00e22cf6119da732
4
- data.tar.gz: 4e4d4ad4e0967db38931e6fe8bcce3ca437b20e7a8db302ef3c51ecfdf999bd7
3
+ metadata.gz: e6b62b53864420b27411824bf5d51c80949a7e98357edd128e64ee0e77039476
4
+ data.tar.gz: 85a9d762af8063c9e42978100907561397bd00e8278978b9a67f01e5fe52670f
5
5
  SHA512:
6
- metadata.gz: 6191b1900193ee47b0794aecd80ba598642f10b643c1f98d425006e116a3d2b49eec61bde709fd19bfa721400a362c1f07f3707d09fa8843f7d6b630a6fe3e7a
7
- data.tar.gz: 6f90abf84cf3a036bb1dfe2474500f36266fe8dad4f5886c1c1226e0e211a093c0d9b09750cef9c8ee3052cdc19c69203e10d7701a626fd63cb42550cd8eab06
6
+ metadata.gz: ca4c03f84749101fe1b2235ead061cf597bfb0a4d08d95d9cd3b24cdb9ca77eea3928fa00ce4db22219acea02c93539251f384002ccb3e4fffd1c484d54ad938
7
+ data.tar.gz: 02e372ee65122d783685df0756bf069a30225348239703465a7a20f751865bc5ab79ba9c0c99dafc1551d1812532669089681dc71b8375cb4791df749f9d3977
@@ -1,3 +1,7 @@
1
+ ## 1.23.0
2
+
3
+ * Implement GraphQL support
4
+
1
5
  ## 1.22.1
2
6
 
3
7
  * Fix excessive exception reporting, reducing CPU and network load
@@ -377,6 +377,10 @@ module Sqreen
377
377
  end
378
378
  end
379
379
 
380
+ def graphql_args=(args)
381
+ request.env['sqreen.request.graphql_args'] = args if request
382
+ end
383
+
380
384
  def self.parameters_from_request(request)
381
385
  return {} unless request
382
386
 
@@ -388,6 +392,8 @@ module Sqreen
388
392
  if (p = rack_params(request))
389
393
  r[P_RACK] = p
390
394
  end
395
+ p = request.env['sqreen.request.graphql_args']
396
+ r['graphql'] = p if p
391
397
  # Add grape parameters if seen
392
398
  p = request.env['grape.request.params']
393
399
  r[P_GRAPE] = p if p
@@ -4,5 +4,5 @@
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
5
5
 
6
6
  module Sqreen
7
- VERSION = '1.22.1'.freeze
7
+ VERSION = '1.23.0'.freeze
8
8
  end
@@ -230,6 +230,8 @@ class Sqreen::Weave::Legacy::Instrumentation
230
230
  @hooks << add_callback('weave,hardcoded', hard_callback, strategy)
231
231
  end
232
232
 
233
+ @hooks << install_graphql_hook
234
+
233
235
  metrics_engine = self.metrics_engine
234
236
 
235
237
  request_hook = Sqreen::Graft::Hook['Sqreen::ShrinkWrap#call', strategy]
@@ -566,4 +568,30 @@ class Sqreen::Weave::Legacy::Instrumentation
566
568
  Sqreen::Rules::RunUserActions.new(Sqreen, :auth_track, 1),
567
569
  ]
568
570
  end
571
+
572
+ def install_graphql_hook
573
+ hook = Sqreen::Graft::Hook['GraphQL::Execution::Multiplex.run_queries']
574
+
575
+ hook.add do
576
+ before('weave,test,graphql', mandatory: true) do |call|
577
+ find_args = proc do |*items|
578
+ args = []
579
+ items.each do |e|
580
+ args << e if e.is_a?(GraphQL::Language::Nodes::Argument)
581
+ args += find_args.call(*e.children)
582
+ end
583
+ args
584
+ end
585
+ queries = call.args[1]
586
+ qdocs = queries.map { |q| [q.query_string, q.document] }
587
+ qargs = qdocs.map do |q, doc|
588
+ next if doc.nil?
589
+ [q, find_args.call(*doc.children).map { |arg| { arg.name => arg.value } }.reduce(&:merge)]
590
+ end
591
+ Sqreen.framework.graphql_args = Hash[*qargs.flatten(1)]
592
+ end
593
+ end.install
594
+
595
+ hook
596
+ end
569
597
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqreen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.22.1
4
+ version: 1.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sqreen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-16 00:00:00.000000000 Z
11
+ date: 2021-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqreen-backport
@@ -348,7 +348,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
348
348
  - !ruby/object:Gem::Version
349
349
  version: '0'
350
350
  requirements: []
351
- rubygems_version: 3.1.3
351
+ rubygems_version: 3.2.3
352
352
  signing_key:
353
353
  specification_version: 4
354
354
  summary: Sqreen Ruby agent