diff --git a/README.rdoc b/README.rdoc
index 7084955..c8aada6 100644
--- a/README.rdoc
+++ b/README.rdoc
@@ -33,6 +33,12 @@ require 'yql'
yql = Yql::Client.new
+====Use OAuth
+
+yql.consumer_key = 'Your app key'
+
+yql.consumer_secret = 'Your app secret'
+
====Finders
* Query builder takes table as mandatory parameter.
diff --git a/lib/test.rb b/lib/test.rb
new file mode 100644
index 0000000..f4cb790
--- /dev/null
+++ b/lib/test.rb
@@ -0,0 +1,15 @@
+require './yql.rb'
+
+
+yql = Yql::Client.new
+query = Yql::QueryBuilder.new 'yahoo.finance.quotes'
+query.select = 'Symbol, Ask'
+query.conditions = "symbol IN ('AAPL', 'GOOG')"
+yql.query = query
+yql.format = 'json'
+yql.consumer_key = 'dj0yJmk9Q25kZTN5YXB1dk40JmQ9WVdrOWFIRkRNRE5RTjJzbWNHbzlPREV5TWpZMk1UWXkmcz1jb25zdW1lcnNlY3JldCZ4PTA0'
+yql.consumer_secret = '18ec8d573039ae55d1741d74ff054c6887402cc6'
+
+response = yql.get
+
+puts response.show
\ No newline at end of file
diff --git a/lib/yql.rb b/lib/yql.rb
index c4ded29..e8ebeb9 100644
--- a/lib/yql.rb
+++ b/lib/yql.rb
@@ -9,4 +9,6 @@
require 'yql/error.rb'
require 'yql/query_builder.rb'
require 'yql/response.rb'
-require 'yql/client.rb'
\ No newline at end of file
+require 'yql/client.rb'
+require 'oauth'
+
diff --git a/lib/yql/client.rb b/lib/yql/client.rb
index 3fe52b4..cb55ca9 100644
--- a/lib/yql/client.rb
+++ b/lib/yql/client.rb
@@ -5,6 +5,7 @@ class Client
BASE_URL = 'query.yahooapis.com'
VERSION = 'v1'
URL_SUFFIX = 'public/yql'
+ OAUTH_SUFFIX = 'yql'
YQL_ENV = 'http://datatables.org/alltables.env'
attr_accessor :query, :diagnostics
@@ -16,6 +17,8 @@ def initialize(args={})
@format = args[:format] || 'xml'
@query = args[:query]
@verify_ssl = args[:verify_ssl] || true
+ @consumer_key = args[:consumer_key] || false
+ @consumer_secret = args[:consumer_secret] || false
raise_when_invalid_format(format)
end
@@ -28,18 +31,40 @@ def query
@query.kind_of?(Yql::QueryBuilder) ? @query.to_s : @query
end
+ def consumer_key=(consumer_key)
+ @consumer_key = consumer_key
+ end
+
+ def consumer_secret=(consumer_secret)
+ @consumer_secret = consumer_secret
+ end
+
def path_without_domain
"/#{version}/#{URL_SUFFIX}"
end
+ def oauth_path_without_domain
+ "/#{version}/#{OAUTH_SUFFIX}"
+ end
+
+
def get
if query.nil?
raise Yql::IncompleteRequestParameter, "You must set the query attribute for the Yql::Client object before sending the request"
end
- http = Net::HTTP.new(BASE_URL, Net::HTTP.https_default_port)
- http.use_ssl = true
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE unless @verify_ssl
- Yql::Response.new(http.post(path_without_domain, parameters), format)
+ if (@consumer_key and @consumer_secret)
+ # With OAuth
+ consumer = OAuth::Consumer.new(@consumer_key, @consumer_secret, :site => "http://#{BASE_URL}")
+ access_token = OAuth::AccessToken.new(consumer)
+ response = access_token.request(:get, "#{oauth_path_without_domain}?#{parameters}")
+ Yql::Response.new(response, format)
+ else
+ # No OAuth
+ http = Net::HTTP.new(BASE_URL, Net::HTTP.https_default_port)
+ http.use_ssl = true
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE unless @verify_ssl
+ Yql::Response.new(http.post(path_without_domain, parameters), format)
+ end
end
def valid_format?(format)
diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties
new file mode 100644
index 0000000..701764d
--- /dev/null
+++ b/nbproject/private/private.properties
@@ -0,0 +1,2 @@
+file.reference.yql-lib=/Users/rafael/yql/lib
+file.reference.yql-spec=/Users/rafael/yql/spec
diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml
new file mode 100644
index 0000000..c1f155a
--- /dev/null
+++ b/nbproject/private/private.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/nbproject/project.properties b/nbproject/project.properties
new file mode 100644
index 0000000..a663ce4
--- /dev/null
+++ b/nbproject/project.properties
@@ -0,0 +1,7 @@
+file.reference.yql-lib=lib
+file.reference.yql-spec=spec
+main.file=
+platform.active=Ruby_1
+source.encoding=UTF-8
+spec.dir=${file.reference.yql-spec}
+src.dir=${file.reference.yql-lib}
diff --git a/nbproject/project.xml b/nbproject/project.xml
new file mode 100644
index 0000000..afa6b57
--- /dev/null
+++ b/nbproject/project.xml
@@ -0,0 +1,14 @@
+
+
+ org.netbeans.modules.ruby.rubyproject
+
+
+ yql
+
+
+
+
+
+
+
+
diff --git a/yql-0.0.2.gem b/yql-0.0.2.gem
new file mode 100644
index 0000000..12546ad
Binary files /dev/null and b/yql-0.0.2.gem differ
diff --git a/yql.gemspec b/yql.gemspec
index 15ecd5a..8d4caf1 100644
--- a/yql.gemspec
+++ b/yql.gemspec
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
"lib/yql/client.rb",
"lib/yql/query_builder.rb",
]
- s.has_rdoc = true
+ #s.has_rdoc = true
s.homepage = %q{http://github.com/nas/yql}
s.rdoc_options = ["--charset=UTF-8"]
s.require_paths = ["lib"]