From f4c065998f6c918e67058b05ac17778cfbc57f58 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Thu, 19 Aug 2010 11:26:00 +0200 Subject: task title and creator, reach report minor fixes --- report/report_application.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index efa0298..48787d3 100644 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -98,7 +98,7 @@ delete '/report/:type/:id' do end post '/report/:type' do - task_uri = OpenTox::Task.as_task do + task_uri = OpenTox::Task.as_task("Create report",url_for("/report/"+params[:type], :full)) do perform do |rs| content_type "text/uri-list" rs.create_report(params[:type],params[:validation_uris]?params[:validation_uris].split(/\n|,/):nil) -- cgit v1.2.3 From 543490dc2bc883412ed25d03a33d94b52786873d Mon Sep 17 00:00:00 2001 From: mguetlein Date: Fri, 10 Sep 2010 10:39:44 +0200 Subject: params for task and qmrf jnlp --- report/report_application.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index 48787d3..12775cc 100644 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -98,7 +98,7 @@ delete '/report/:type/:id' do end post '/report/:type' do - task_uri = OpenTox::Task.as_task("Create report",url_for("/report/"+params[:type], :full)) do + task_uri = OpenTox::Task.as_task("Create report",url_for("/report/"+params[:type], :full), params) do perform do |rs| content_type "text/uri-list" rs.create_report(params[:type],params[:validation_uris]?params[:validation_uris].split(/\n|,/):nil) -- cgit v1.2.3 From 3cf7ecd7f1f4811e1b7f77ebc36cf280268b495c Mon Sep 17 00:00:00 2001 From: mguetlein Date: Mon, 13 Sep 2010 12:13:28 +0200 Subject: fix report dtd --- report/report_application.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index 12775cc..f76ff32 100644 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -18,6 +18,12 @@ def perform end +get '/+'ENV['REPORT_DTD'] do + content_type "application/xml-dtd" + body(File.new(ENV['REPORT_DTD'])) +end + + get '/report/:type/css_style_sheet/?' do perform do |rs| "@import \""+params[:css_style_sheet]+"\";" -- cgit v1.2.3 From ede7b60f62fb4385ce1358f49e92dd325ed251f6 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Mon, 13 Sep 2010 12:17:03 +0200 Subject: fix report dtd - v2 --- report/report_application.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index f76ff32..b8f7eed 100644 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -18,7 +18,7 @@ def perform end -get '/+'ENV['REPORT_DTD'] do +get '/'+ENV['REPORT_DTD'] do content_type "application/xml-dtd" body(File.new(ENV['REPORT_DTD'])) end -- cgit v1.2.3 From eb5d72a15942b2367c2c1178a0a50d10261c5132 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Mon, 13 Sep 2010 13:29:09 +0200 Subject: fix report dtd - v3 --- report/report_application.rb | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index b8f7eed..31f5ac6 100644 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -17,12 +17,23 @@ def perform end end +def get_docbook_resource(filepath) + perform do |rs| + halt 404,"not found: "+filepath unless File.exist?(filepath) + types = MIME::Types.type_for(filepath) + content_type(types[0].content_type) if types and types.size>0 and types[0] + result = body(File.new(filepath)) + end +end -get '/'+ENV['REPORT_DTD'] do - content_type "application/xml-dtd" - body(File.new(ENV['REPORT_DTD'])) +get '/'+ENV['DOCBOOK_DIRECTORY']+'/:subdir/:resource' do + path_array = request.env['REQUEST_URI'].split("/") + get_docbook_resource ENV['DOCBOOK_DIRECTORY']+"/"+path_array[-2]+"/"+path_array[-1] end +get '/'+ENV['DOCBOOK_DIRECTORY']+'/:resource' do + get_docbook_resource ENV['DOCBOOK_DIRECTORY']+"/"+request.env['REQUEST_URI'].split("/")[-1] +end get '/report/:type/css_style_sheet/?' do perform do |rs| @@ -30,7 +41,6 @@ get '/report/:type/css_style_sheet/?' do end end - get '/report/?' do perform do |rs| content_type "text/uri-list" -- cgit v1.2.3 From 18e1ec84378d711b36b1a77b29baa9b5ef664faa Mon Sep 17 00:00:00 2001 From: mguetlein Date: Tue, 14 Sep 2010 20:29:58 +0200 Subject: tmp disable delete for rhodes --- report/report_application.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index 31f5ac6..5c8c1c8 100644 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -107,6 +107,7 @@ get '/report/:type/:id/:resource' do end delete '/report/:type/:id' do + halt 400,"delete temporarily disabled" perform do |rs| content_type "text/plain" rs.delete_report(params[:type],params[:id]) -- cgit v1.2.3 From f72a88dcb8fd18778445b4e6678cdfdee7feda28 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Wed, 6 Oct 2010 12:09:08 +0200 Subject: add text/html support, remove delete disabling, add new line to uri-list returns --- report/report_application.rb | 79 +++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 42 deletions(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index 5c8c1c8..95913cd 100644 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -43,15 +43,38 @@ end get '/report/?' do perform do |rs| - content_type "text/uri-list" - rs.get_report_types + case request.env['HTTP_ACCEPT'].to_s + when /text\/html/ + related_links = + "All validations: "+$sinatra.url_for("/",:full) + description = + "A list of all report types." + content_type "text/html" + OpenTox.text_to_html rs.get_report_types,related_links,description + else + content_type "text/uri-list" + rs.get_report_types + end end end get '/report/:report_type' do perform do |rs| - content_type "text/uri-list" - rs.get_all_reports(params[:report_type], params) + case request.env['HTTP_ACCEPT'].to_s + when /text\/html/ + related_links = + "Available report types: "+$sinatra.url_for("/report",:full)+"\n"+ + "Single validations: "+$sinatra.url_for("/",:full)+"\n"+ + "Crossvalidations: "+$sinatra.url_for("/crossvalidation",:full) + description = + "A list of all "+params[:report_type]+" reports. To create a report, use the POST method." + post_params = [[:validation_uris]] + content_type "text/html" + OpenTox.text_to_html rs.get_all_reports(params[:report_type], params),related_links,description,post_params + else + content_type "text/uri-list" + rs.get_all_reports(params[:report_type], params) + end end end @@ -60,7 +83,7 @@ post '/report/:type/:id/format_html' do perform do |rs| rs.get_report(params[:type],params[:id],"text/html",true,params) content_type "text/uri-list" - rs.get_uri(params[:type],params[:id]) + rs.get_uri(params[:type],params[:id])+"\n" end end @@ -70,27 +93,14 @@ get '/report/:type/:id' do perform do |rs| accept_header = request.env['HTTP_ACCEPT'] - if accept_header =~ /MSIE/ - LOGGER.info "Changing MSIE accept-header to text/html" - accept_header = "text/html" - end - #request.env['HTTP_ACCEPT'] = "application/pdf" - - #QMRF-STUB - if params[:type] == Reports::ReportFactory::RT_QMRF - #raise Reports::BadRequest.new("only 'application/qmrf-xml' provided so far") if accept_header != "application/qmrf-xml" - content_type "application/qmrf-xml" - result = body(OpenTox::RestClientWrapper.get("http://ecb.jrc.ec.europa.eu/qsar/qsar-tools/qrf/QMRF_v1.2_FishTox.xml")) + report = rs.get_report(params[:type],params[:id],accept_header) + format = Reports::ReportFormat.get_format(accept_header) + content_type format + #PENDING: get_report should return file or string, check for result.is_file instead of format + if format=="application/x-yaml" or format=="application/rdf+xml" + report else - report = rs.get_report(params[:type],params[:id],accept_header) - format = Reports::ReportFormat.get_format(accept_header) - content_type format - #PENDING: get_report should return file or string, check for result.is_file instead of format - if format=="application/x-yaml" or format=="application/rdf+xml" - report - else - result = body(File.new(report)) - end + result = body(File.new(report)) end end end @@ -107,7 +117,6 @@ get '/report/:type/:id/:resource' do end delete '/report/:type/:id' do - halt 400,"delete temporarily disabled" perform do |rs| content_type "text/plain" rs.delete_report(params[:type],params[:id]) @@ -117,23 +126,9 @@ end post '/report/:type' do task_uri = OpenTox::Task.as_task("Create report",url_for("/report/"+params[:type], :full), params) do perform do |rs| - content_type "text/uri-list" rs.create_report(params[:type],params[:validation_uris]?params[:validation_uris].split(/\n|,/):nil) end end - halt 202,task_uri -end - - -post '/report/:type/:id' do - perform do |rs| - #QMRF-STUB - if params[:type] == Reports::ReportFactory::RT_QMRF - #raise Reports::BadRequest.new("only 'application/qmrf-xml' provided so far") if request.content_type != "application/qmrf-xml" - input = request.env["rack.input"].read - "save qmrf would have been successfull, received data with "+input.to_s.size.to_s+" characters, this is just a stub, changes discarded" - else - "operation not supported yet" - end - end + content_type "text/uri-list" + halt 202,task_uri+"\n" end -- cgit v1.2.3 From a6d79dffc5f65300f06f3a33451ef26d0fb96f08 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Mon, 11 Oct 2010 14:38:13 +0200 Subject: example fix, format-reports as task, report-format-simplified, validation resource with */* --- report/report_application.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index 95913cd..baa91a0 100644 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -80,11 +80,15 @@ end post '/report/:type/:id/format_html' do - perform do |rs| - rs.get_report(params[:type],params[:id],"text/html",true,params) - content_type "text/uri-list" - rs.get_uri(params[:type],params[:id])+"\n" + task_uri = OpenTox::Task.as_task("Format report",url_for("/report/"+params[:type]+"/format_html", :full), params) do + perform do |rs| + rs.get_report(params[:type],params[:id],"text/html",true,params) + content_type "text/uri-list" + rs.get_uri(params[:type],params[:id])+"\n" + end end + content_type "text/uri-list" + halt 202,task_uri+"\n" end -- cgit v1.2.3 From 16a25a63ba7882901a778745d0a32baaafc22cad Mon Sep 17 00:00:00 2001 From: mguetlein Date: Fri, 26 Nov 2010 16:05:25 +0100 Subject: huge commit, main changes: validation_type and .finished introduced, supporting subtasks, reporting slightly refactored --- report/report_application.rb | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index baa91a0..f6b810c 100644 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -80,15 +80,9 @@ end post '/report/:type/:id/format_html' do - task_uri = OpenTox::Task.as_task("Format report",url_for("/report/"+params[:type]+"/format_html", :full), params) do - perform do |rs| - rs.get_report(params[:type],params[:id],"text/html",true,params) - content_type "text/uri-list" - rs.get_uri(params[:type],params[:id])+"\n" - end - end + rs.get_report(params[:type],params[:id],"text/html",true,params) content_type "text/uri-list" - halt 202,task_uri+"\n" + rs.get_uri(params[:type],params[:id])+"\n" end @@ -128,9 +122,9 @@ delete '/report/:type/:id' do end post '/report/:type' do - task_uri = OpenTox::Task.as_task("Create report",url_for("/report/"+params[:type], :full), params) do + task_uri = OpenTox::Task.as_task("Create report",url_for("/report/"+params[:type], :full), params) do |task| perform do |rs| - rs.create_report(params[:type],params[:validation_uris]?params[:validation_uris].split(/\n|,/):nil) + rs.create_report(params[:type],params[:validation_uris]?params[:validation_uris].split(/\n|,/):nil,task) end end content_type "text/uri-list" -- cgit v1.2.3 From b50453d2ad038c9bab17a418bf4e065e31acb999 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Mon, 29 Nov 2010 11:07:48 +0100 Subject: addjust report service init to ortona --- report/report_application.rb | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index f6b810c..a61a2df 100644 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -2,8 +2,8 @@ require "report/environment.rb" def perform begin - $rep = Reports::ReportService.new(url_for("/report", :full)) unless $rep - yield( $rep ) + @@report_service = Reports::ReportService.instance( url_for("/report", :full) ) unless defined?@@report_service + yield( @@report_service ) rescue Reports::NotFound => ex halt 404, ex.message rescue Reports::BadRequest => ex @@ -79,10 +79,11 @@ get '/report/:report_type' do end post '/report/:type/:id/format_html' do - - rs.get_report(params[:type],params[:id],"text/html",true,params) - content_type "text/uri-list" - rs.get_uri(params[:type],params[:id])+"\n" + perform do |rs| + rs.get_report(params[:type],params[:id],"text/html",true,params) + content_type "text/uri-list" + rs.get_uri(params[:type],params[:id])+"\n" + end end -- cgit v1.2.3 From eeb0b6df2dbdae29ccf3f4ccd923002e0ed65506 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Thu, 13 Jan 2011 15:18:45 +0100 Subject: adjust to new wrapper, replace activerecord with datamapper (remove activerecord code), is_classification to feature_type --- report/report_application.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 report/report_application.rb (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb old mode 100644 new mode 100755 index a61a2df..6d6353f --- a/report/report_application.rb +++ b/report/report_application.rb @@ -123,11 +123,11 @@ delete '/report/:type/:id' do end post '/report/:type' do - task_uri = OpenTox::Task.as_task("Create report",url_for("/report/"+params[:type], :full), params) do |task| + task = OpenTox::Task.create("Create report",url_for("/report/"+params[:type], :full)) do |task| #,params perform do |rs| rs.create_report(params[:type],params[:validation_uris]?params[:validation_uris].split(/\n|,/):nil,task) end end content_type "text/uri-list" - halt 202,task_uri+"\n" + halt 202,task.uri+"\n" end -- cgit v1.2.3 From 7b06ce45180a5b2c0dd0095cd1a60ec974b46aa5 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Wed, 19 Jan 2011 16:12:21 +0100 Subject: aa suport, rdf support --- report/report_application.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index 6d6353f..b02b780 100755 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -46,7 +46,7 @@ get '/report/?' do case request.env['HTTP_ACCEPT'].to_s when /text\/html/ related_links = - "All validations: "+$sinatra.url_for("/",:full) + "All validations: "+url_for("/",:full) description = "A list of all report types." content_type "text/html" @@ -63,9 +63,9 @@ get '/report/:report_type' do case request.env['HTTP_ACCEPT'].to_s when /text\/html/ related_links = - "Available report types: "+$sinatra.url_for("/report",:full)+"\n"+ - "Single validations: "+$sinatra.url_for("/",:full)+"\n"+ - "Crossvalidations: "+$sinatra.url_for("/crossvalidation",:full) + "Available report types: "+url_for("/report",:full)+"\n"+ + "Single validations: "+url_for("/",:full)+"\n"+ + "Crossvalidations: "+url_for("/crossvalidation",:full) description = "A list of all "+params[:report_type]+" reports. To create a report, use the POST method." post_params = [[:validation_uris]] @@ -118,14 +118,14 @@ end delete '/report/:type/:id' do perform do |rs| content_type "text/plain" - rs.delete_report(params[:type],params[:id]) + rs.delete_report(params[:type],params[:id],@subjectid) end end post '/report/:type' do task = OpenTox::Task.create("Create report",url_for("/report/"+params[:type], :full)) do |task| #,params perform do |rs| - rs.create_report(params[:type],params[:validation_uris]?params[:validation_uris].split(/\n|,/):nil,task) + rs.create_report(params[:type],params[:validation_uris]?params[:validation_uris].split(/\n|,/):nil,@subjectid,task) end end content_type "text/uri-list" -- cgit v1.2.3 From 9750da9cb7dc14309be38f98bc0b50c8bff9eb72 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Wed, 26 Jan 2011 15:58:18 +0100 Subject: adjust to new A&A for GET, remove old Report-Errorreporting --- report/report_application.rb | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index b02b780..9fcf871 100755 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -1,20 +1,8 @@ require "report/environment.rb" def perform - begin - @@report_service = Reports::ReportService.instance( url_for("/report", :full) ) unless defined?@@report_service - yield( @@report_service ) - rescue Reports::NotFound => ex - halt 404, ex.message - rescue Reports::BadRequest => ex - halt 400, ex.message - rescue Exception => ex - #LOGGER.error(ex.message) - LOGGER.error "report error: "+ex.message - LOGGER.error ": "+ex.backtrace.join("\n") - raise ex # sinatra returns 501 - #halt 500, ex.message - end + @@report_service = Reports::ReportService.instance( url_for("/report", :full) ) unless defined?@@report_service + yield( @@report_service ) end def get_docbook_resource(filepath) @@ -104,11 +92,11 @@ get '/report/:type/:id' do end end -get '/report/:type/:id/:resource' do - #hack: using request.env['REQUEST_URI'].split("/")[-1] instead of params[:resource] because the file extension is lost +OpenTox::Authorization.whitelist( Regexp.new("/report/.*/[0-9]+/.*"),"GET") +get '/report/:type/:id/:resource' do perform do |rs| - filepath = rs.get_report_resource(params[:type],params[:id],request.env['REQUEST_URI'].split("/")[-1]) + filepath = rs.get_report_resource(params[:type],params[:id],params[:resource]) types = MIME::Types.type_for(filepath) content_type(types[0].content_type) if types and types.size>0 and types[0] result = body(File.new(filepath)) -- cgit v1.2.3 From 4466015d27af0a5424953eb7f1502994d73027cf Mon Sep 17 00:00:00 2001 From: mguetlein Date: Fri, 28 Jan 2011 12:41:49 +0100 Subject: whitelist validation-non-resource-uris, minor fixes --- report/report_application.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index 9fcf871..8403b4c 100755 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -92,7 +92,7 @@ get '/report/:type/:id' do end end -OpenTox::Authorization.whitelist( Regexp.new("/report/.*/[0-9]+/.*"),"GET") +#OpenTox::Authorization.whitelist( Regexp.new("/report/.*/[0-9]+/.*"),"GET") get '/report/:type/:id/:resource' do perform do |rs| -- cgit v1.2.3 From 7906047a423d94692581ac6aa15295924c8b89db Mon Sep 17 00:00:00 2001 From: mguetlein Date: Thu, 3 Feb 2011 09:47:46 +0100 Subject: use return task method for sinatra --- report/report_application.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index 8403b4c..1a4504d 100755 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -116,6 +116,5 @@ post '/report/:type' do rs.create_report(params[:type],params[:validation_uris]?params[:validation_uris].split(/\n|,/):nil,@subjectid,task) end end - content_type "text/uri-list" - halt 202,task.uri+"\n" + return_task(task) end -- cgit v1.2.3 From ebaeedc374729ffb737fdc9bd5b1166548678036 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Mon, 14 Feb 2011 17:46:14 +0100 Subject: set cookie in reports, hack for ambit, new examples --- report/report_application.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index 1a4504d..ab3d91b 100755 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -76,7 +76,6 @@ end get '/report/:type/:id' do - perform do |rs| accept_header = request.env['HTTP_ACCEPT'] @@ -90,6 +89,8 @@ get '/report/:type/:id' do result = body(File.new(report)) end end + + response.set_cookie("subjectid", @subjectid) end #OpenTox::Authorization.whitelist( Regexp.new("/report/.*/[0-9]+/.*"),"GET") -- cgit v1.2.3 From e77fd138b4de5e467ded21ef075828e2b04e7928 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Sat, 19 Feb 2011 11:28:29 +0100 Subject: add subject-id to to-html, minor changes --- report/report_application.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'report/report_application.rb') diff --git a/report/report_application.rb b/report/report_application.rb index ab3d91b..5a47063 100755 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -38,7 +38,7 @@ get '/report/?' do description = "A list of all report types." content_type "text/html" - OpenTox.text_to_html rs.get_report_types,related_links,description + OpenTox.text_to_html rs.get_report_types,@subjectid,related_links,description else content_type "text/uri-list" rs.get_report_types @@ -58,7 +58,7 @@ get '/report/:report_type' do "A list of all "+params[:report_type]+" reports. To create a report, use the POST method." post_params = [[:validation_uris]] content_type "text/html" - OpenTox.text_to_html rs.get_all_reports(params[:report_type], params),related_links,description,post_params + OpenTox.text_to_html rs.get_all_reports(params[:report_type], params),@subjectid,related_links,description,post_params else content_type "text/uri-list" rs.get_all_reports(params[:report_type], params) @@ -89,8 +89,6 @@ get '/report/:type/:id' do result = body(File.new(report)) end end - - response.set_cookie("subjectid", @subjectid) end #OpenTox::Authorization.whitelist( Regexp.new("/report/.*/[0-9]+/.*"),"GET") -- cgit v1.2.3