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}" |