Please disable Adblockers and enable JavaScript for domain CEWebS.cs.univie.ac.at! We have NO ADS, but they may interfere with some of our course material.

Name: examples/flickr/Exif/exif.ru 
1:
require 'rack'
2:
require '../../../lib/ruby/riddl/server'
3:
require '../Helpers/gps.rb'
4:
require 'pp'
5:
 
6:
EXIF = '/usr/bin/exiftool'
7:
 
8:
class Exif < Riddl::Implementation
9:
  def response
10:
    photo = author = title = description = tags = longitude = latitude = nil
11:
    photo       = @p.detect { |e| e.name == 'photo' }
12:
    author      = @p.detect { |e| e.name == 'author' }
13:
    title       = @p.detect { |e| e.name == 'title' }
14:
    description = @p.detect { |e| e.name == 'description' }
15:
    tags        = @p.detect { |e| e.name == 'tags' }
16:
    longitude   = @p.detect { |e| e.name == 'longitude' }
17:
    latitude    = @p.detect { |e| e.name == 'latitude' }
18:
    pname = photo.value.path
19:
    `#{EXIF} -exif:Artist=\"#{author.value}\"         #{pname}`
20:
    `#{EXIF} -exif:XPAuthor=\"#{author.value}\"       #{pname}`
21:
    `#{EXIF} -exif:XPTitle=\"#{title.value}\"         #{pname}`
22:
    `#{EXIF} -exif:XPSubject=\"#{title.value}\"       #{pname}`
23:
    `#{EXIF} -exif:XPComment=\"#{description.value}\" #{pname}`
24:
    `#{EXIF} -exif:XPKeywords=\"#{tags.value}\"       #{pname}`
25:
 
26:
    lat = latitude.value.to_f
27:
    lng = longitude.value.to_f
28:
    `#{EXIF} -exif:GPSLatitudeRef=\"#{GPS::pos_or_neg(lat,'N','S')}\" #{pname}`
29:
    `#{EXIF} -exif:GPSLatitude=\"#{lat}\"                             #{pname}`
30:
    `#{EXIF} -exif:GPSLongitudeRef="#{GPS::pos_or_neg(lng,'E','W')}\" #{pname}`
31:
    `#{EXIF} -exif:GPSLongitude=\"#{lng}\"                            #{pname}`
32:
    
33:
    photo.reopen
34:
 
35:
    @p.delete_if do |e|
36:
      e.name == 'author' || e.name == 'longitude' || e.name == 'latitude'
37:
    end
38:
    @p
39:
  end  
40:
end
41:
 
42:
run Riddl::Server.new("exif.xml") {
43:
  process_out true
44:
  on resource do
45:
    run Exif if post 'jpegdata'
46:
  end
47:
}