tpinto-sapo-rb 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,32 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'sapo.rb')
2
+ require 'rexml/document'
3
+ require 'net/https'
4
+
5
+ module SAPO
6
+ class ID
7
+ attr_accessor :email, :password, :primary, :token
8
+
9
+ def initialize(email, password)
10
+ self.email = email
11
+ self.password = password
12
+
13
+ uri = URI.parse("https://services.sapo.pt/STS/GetPrimaryId?ESBUsername=#{self.email}&ESBPassword=#{self.password}")
14
+ http = Net::HTTP.new(uri.host, uri.port)
15
+ http.use_ssl = true
16
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
17
+ http.ca_file = File.join(File.dirname(__FILE__), "cacert.pem")
18
+ http.start {
19
+ http.request_get(uri.path+"?"+uri.query) {|res|
20
+ output = REXML::Document.new(res.body)
21
+ begin
22
+ self.primary = output.root.elements['PrimaryId'].text
23
+ self.token = output.root.elements['ESBToken'].text
24
+ rescue
25
+ raise "Wrong credentials"
26
+ return nil
27
+ end
28
+ }
29
+ }
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,29 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'sapo.rb')
2
+ require 'open-uri'
3
+ require 'json'
4
+
5
+ module SAPO
6
+ module Jobs
7
+ class Offer
8
+ attr_accessor :title, :link, :region, :published_at, :description
9
+
10
+ def initialize(attrs = {})
11
+ @title = attrs[:title]
12
+ @link = attrs[:link]
13
+ @region = attrs[:region]
14
+ @published_at = attrs[:published_at]
15
+ @description = attrs[:description]
16
+ end
17
+ end
18
+
19
+ # FIXME: add sort and pagination options
20
+ def self.search(query = "")
21
+ output = open("http://services.sapo.pt/JobOffers/JSON?r=#{query}").read
22
+ json = JSON.parse(output)
23
+
24
+ return json["rss"]["channel"]["item"].map do |p|
25
+ Offer.new(:title => p["title"], :link => p["link"], :region => p["se:region"], :published_at => p["pubDate"], :description => p["description"])
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,47 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'sapo.rb')
2
+ require 'open-uri'
3
+ require 'json'
4
+
5
+ module SAPO
6
+ module Photos
7
+ class Photo
8
+ attr_accessor :title, :description, :link, :published_at, :src
9
+
10
+ def initialize(attrs = {})
11
+ @title = attrs[:title]
12
+ @link = attrs[:link]
13
+ @src = attrs[:src]
14
+ @published_at = attrs[:published_at]
15
+ @description = attrs[:description]
16
+ end
17
+ end
18
+
19
+ # FIXME: add sort and pagination options
20
+ def self.search(options = {})
21
+ if options.is_a?(String)
22
+ output = open("http://services.sapo.pt/Photos/JSON?tag=#{options}").read
23
+ elsif options.is_a?(Hash)
24
+ options = {:user => "", :tag => ""}.merge(options)
25
+ if options[:user] != "" and options[:tag] != ""
26
+ output = open("http://services.sapo.pt/Photos/JSON?u=#{options[:user]}&tag=#{options[:tag]}").read
27
+ elsif options[:user] == "" and options[:tag] != ""
28
+ output = open("http://services.sapo.pt/Photos/JSON?tag=#{options[:tag]}").read
29
+ elsif options[:user] != "" and options[:tag] == ""
30
+ output = open("http://services.sapo.pt/Photos/JSON?u=#{options[:user]}").read
31
+ else
32
+ return []
33
+ end
34
+ else
35
+ return []
36
+ end
37
+
38
+ json = JSON.parse(output)
39
+
40
+ return [] if json["rss"]["channel"]["item"].nil?
41
+
42
+ return json["rss"]["channel"]["item"].map do |p|
43
+ Photo.new(:title => p["title"]["cdata"], :src => p["fotoURL"], :description => p["description"]["cdata"], :published_at => p["pubDate"], :link => p["link"]["value"])
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,29 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'sapo.rb')
2
+ require 'open-uri'
3
+ require 'json'
4
+
5
+ module SAPO
6
+ module Shopping
7
+ class Listing
8
+ attr_accessor :title, :link, :region, :published_at, :description
9
+
10
+ def initialize(attrs = {})
11
+ @title = attrs[:title]
12
+ @link = attrs[:link]
13
+ @region = attrs[:region]
14
+ @published_at = attrs[:published_at]
15
+ @description = attrs[:description]
16
+ end
17
+ end
18
+
19
+ # FIXME: add sort and pagination options
20
+ def self.search(query = "")
21
+ output = open("http://services.sapo.pt/Shopping/search?q=#{query}").read
22
+ json = JSON.parse(output)
23
+
24
+ return json["rss"]["channel"]["item"].map do |p|
25
+ Listing.new(:title => p["title"], :link => p["link"], :region => p["se:region"], :published_at => p["pubDate"], :description => p["description"])
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,28 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'sapo.rb')
2
+ require 'open-uri'
3
+ require 'json'
4
+
5
+ module SAPO
6
+ module Traffic
7
+ class Information
8
+ attr_accessor :title, :description, :image, :link
9
+
10
+ def initialize(attrs = {})
11
+ @title = attrs[:title]
12
+ @link = attrs[:link]
13
+ @image = attrs[:image]
14
+ @description = attrs[:description]
15
+ end
16
+ end
17
+
18
+ # FIXME: add sort and pagination options
19
+ def self.get_info
20
+ output = open("http://services.sapo.pt/Traffic/JSON").read
21
+ json = JSON.parse(output)
22
+
23
+ return json["rss"]["channel"]["item"].map do |p|
24
+ Information.new(:title => p["title"]["cdata"], :link => p["link"]["cdata"], :description => p["description"]["cdata"], :image => p["enclosure"]["url"])
25
+ end
26
+ end
27
+ end
28
+ end
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tpinto-sapo-rb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Tiago Pinto
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-04-21 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Ruby library to access SAPO's web services packaged as a RubyGem
17
+ email: tpinto@webreakstuff.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - History.txt
26
+ - Rakefile
27
+ - README.rdoc
28
+ - VERSION.yml
29
+ - lib/sapo.rb
30
+ - lib/sapo
31
+ - lib/sapo/adsl.rb
32
+ - lib/sapo/adwords.rb
33
+ - lib/sapo/auto.rb
34
+ - lib/sapo/blogs.rb
35
+ - lib/sapo/cacert.pem
36
+ - lib/sapo/id.rb
37
+ - lib/sapo/jobs.rb
38
+ - lib/sapo/photos.rb
39
+ - lib/sapo/shopping.rb
40
+ - lib/sapo/traffic.rb
41
+ has_rdoc: true
42
+ homepage: http://tpinto.github.com/sapo-rb
43
+ post_install_message:
44
+ rdoc_options:
45
+ - --inline-source
46
+ - --charset=UTF-8
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: "0"
60
+ version:
61
+ requirements: []
62
+
63
+ rubyforge_project: sapo-rb
64
+ rubygems_version: 1.2.0
65
+ signing_key:
66
+ specification_version: 2
67
+ summary: Ruby library to access SAPO's web services packaged as a RubyGem
68
+ test_files: []
69
+