Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
15 changes: 15 additions & 0 deletions lib/test.rb
Original file line number Diff line number Diff line change
@@ -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
4 changes: 3 additions & 1 deletion lib/yql.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@
require 'yql/error.rb'
require 'yql/query_builder.rb'
require 'yql/response.rb'
require 'yql/client.rb'
require 'yql/client.rb'
require 'oauth'

33 changes: 29 additions & 4 deletions lib/yql/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand All @@ -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)
Expand Down
2 changes: 2 additions & 0 deletions nbproject/private/private.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
file.reference.yql-lib=/Users/rafael/yql/lib
file.reference.yql-spec=/Users/rafael/yql/spec
4 changes: 4 additions & 0 deletions nbproject/private/private.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
</project-private>
7 changes: 7 additions & 0 deletions nbproject/project.properties
Original file line number Diff line number Diff line change
@@ -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}
14 changes: 14 additions & 0 deletions nbproject/project.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.ruby.rubyproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/ruby-project/1">
<name>yql</name>
<source-roots>
<root id="src.dir"/>
<root id="spec.dir"/>
</source-roots>
<test-roots/>
</data>
</configuration>
</project>
Binary file added yql-0.0.2.gem
Binary file not shown.
2 changes: 1 addition & 1 deletion yql.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
Expand Down