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/Flickr/authenticate.rb 
1:
#!/usr/bin/ruby
2:
require 'digest/md5'
3:
require '../../../lib/ruby/riddl/client'
4:
require 'pp'
5:
 
6:
### init Riddl client and get resource
7:
flickr = Riddl::Client.interface("http://api.flickr.com/services","flickr.xml")
8:
rest = flickr.resource("/rest")
9:
 
10:
### read application key/secret
11:
key = File.read('flickr.key').strip
12:
secret = File.read('flickr.secret').strip
13:
 
14:
### get frob
15:
if File.exist?('flickr.frob')
16:
  frob = File.read('flickr.frob').strip
17:
else
18:
  method = 'flickr.auth.getFrob'
19:
  sig = Digest::MD5.hexdigest("#{secret}api_key#{key}method#{method}")
20:
  status, res = rest.get [
21:
    Riddl::Parameter::Simple.new("method",method,:query),
22:
    Riddl::Parameter::Simple.new("api_key",key,:query),
23:
    Riddl::Parameter::Simple.new("api_sig",sig,:query)
24:
  ]
25:
  raise "no valid frob" unless status == 200
26:
  frob = XML::Smart::string(res[0].value.read).find('string(/rsp/frob)')
27:
  File.open('flickr.frob','w'){|f|f.write(frob)}
28:
end
29:
 
30:
### prepare auth link
31:
method = 'flickr.auth.getFrob'
32:
perms = 'write'
33:
sig = Digest::MD5.hexdigest("#{secret}api_key#{key}frob#{frob}perms#{perms}")
34:
puts "Url to allow access for the client:"
35:
puts "http://flickr.com/services/auth/?api_key=#{key}&perms=#{perms}&frob=#{frob}&api_sig=#{sig}"