From e85d19d33d69624e173d1509fa411bec6ee7467b Mon Sep 17 00:00:00 2001 From: Mathias Meyer Date: Wed, 19 Mar 2014 14:31:38 +0100 Subject: [PATCH] Add responder for svg badges. --- lib/travis/api/app/middleware/rewrite.rb | 8 ++++++-- lib/travis/api/app/responders.rb | 1 + lib/travis/api/app/responders/badge.rb | 20 ++++++++++++++++++++ lib/travis/api/app/responders/image.rb | 6 +++++- 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 lib/travis/api/app/responders/badge.rb diff --git a/lib/travis/api/app/middleware/rewrite.rb b/lib/travis/api/app/middleware/rewrite.rb index 1f1a6f86..893feb34 100644 --- a/lib/travis/api/app/middleware/rewrite.rb +++ b/lib/travis/api/app/middleware/rewrite.rb @@ -3,7 +3,7 @@ require 'travis/api/app' class Travis::Api::App class Middleware class Rewrite < Middleware - FORMAT = %r(\.(json|xml|png|txt|atom)$) + FORMAT = %r(\.(json|xml|png|txt|atom|svg)$) V1_REPO_URL = %r(^(/[^/]+/[^/]+(?:/builds(?:/[\d]+)?|/cc)?)$) helpers :accept @@ -13,7 +13,7 @@ class Travis::Api::App before do extract_format rewrite_v1_repo_segment if v1? || xml? - rewrite_v1_named_repo_image_path if png? + rewrite_v1_named_repo_image_path if png? || svg? end after do @@ -52,6 +52,10 @@ class Travis::Api::App env['travis.format'] == 'png' end + def svg? + env['travis.format'] == 'svg' + end + def xml? env['travis.format'] == 'xml' end diff --git a/lib/travis/api/app/responders.rb b/lib/travis/api/app/responders.rb index 30c9ae54..c9e0355c 100644 --- a/lib/travis/api/app/responders.rb +++ b/lib/travis/api/app/responders.rb @@ -5,6 +5,7 @@ class Travis::Api::App autoload :Atom, 'travis/api/app/responders/atom' autoload :Base, 'travis/api/app/responders/base' autoload :Image, 'travis/api/app/responders/image' + autoload :Badge, 'travis/api/app/responders/badge' autoload :Json, 'travis/api/app/responders/json' autoload :Plain, 'travis/api/app/responders/plain' autoload :Service, 'travis/api/app/responders/service' diff --git a/lib/travis/api/app/responders/badge.rb b/lib/travis/api/app/responders/badge.rb new file mode 100644 index 00000000..6d7050b3 --- /dev/null +++ b/lib/travis/api/app/responders/badge.rb @@ -0,0 +1,20 @@ +module Travis::Api::App::Responders + class Badge < Image + def format + 'svg' + end + + def apply + set_headers + send_file(filename, type: :svg, last_modified: last_modified) + end + + def content_type + "image/svg" + end + + def filename + "#{root}/public/images/result/#{result}.svg" + end + end +end diff --git a/lib/travis/api/app/responders/image.rb b/lib/travis/api/app/responders/image.rb index 44a37faa..7eb540fc 100644 --- a/lib/travis/api/app/responders/image.rb +++ b/lib/travis/api/app/responders/image.rb @@ -4,10 +4,14 @@ module Travis::Api::App::Responders 'png' end - def apply + def set_headers headers['Pragma'] = "no-cache" headers['Expires'] = Time.now.utc.httpdate headers['Content-Disposition'] = %(inline; filename="#{File.basename(filename)}") + end + + def apply + set_headers send_file(filename, type: :png, last_modified: last_modified) end