rfql 0.1.alpha.3 → 0.1.alpha.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
+ v0.1.alpha.4. RFQL::request -> RFQL.request
2
+
1
3
  v0.1.alpha.3. moved a require to the right place
2
4
 
3
5
  v0.1.alpha.2. changed homepage project
data/README.rdoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = RFQL - Ruby API for the {Facebook Query Language}[https://developers.facebook.com/docs/reference/fql/]
2
2
 
3
- <b>Work In Progress - things can change (and probably they will do)</b>
3
+ <b>Work In Progress - things can change (and probably they will)</b>
4
4
 
5
5
  == Features
6
6
 
@@ -12,13 +12,21 @@
12
12
 
13
13
  == Usage / Examples
14
14
 
15
+ require 'rfql'
16
+
17
+ # The query object
18
+ request = RFQL.request.select('aid, owner, name, object_id').from('album').where(aid: "20531316728_324257")
19
+
20
+ # Retrieving the JSON data response
21
+ request.fetch.response #=> {"data"=>[{"aid"=>"20531316728_324257", "owner"=>20531316728, "name"=>"Happy Lunar New Year 2011", "object_id"=>"10150146071791729"}]}
22
+
15
23
  == TODO
16
24
 
17
- * Implement XML fetching
18
- * Did I already implement errors managing??? Who knows!
19
- * A bit of refactoring
25
+ * Add more examples
26
+ * Have I already implemented errors managing? Who knows!
27
+ * Refactoring
20
28
  * Documentation
21
- * ADD TESTS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
29
+ * ADD TESTS!!!
22
30
 
23
31
  == License
24
32
 
data/lib/rfql/request.rb CHANGED
@@ -7,11 +7,12 @@ module RFQL
7
7
  class Request
8
8
  include RFQL::Request::QueryMethodsDelegations
9
9
 
10
+ FQLURL = "https://graph.facebook.com/fql"
11
+
10
12
  attr_reader :response
11
13
 
12
14
  def initialize(str = nil)
13
15
  @query = RFQL::Query.new(str)
14
- @format_param = :json
15
16
  end
16
17
 
17
18
  def query(query = nil)
@@ -30,42 +31,32 @@ module RFQL
30
31
  self
31
32
  end
32
33
 
33
- def format_param(format_param = nil)
34
- return @format_param if format_param.nil?
35
- raise ArgumentError, "illegal format" unless [:json, :xml].include?(format_param)
36
- @format_param = format_param
37
- self
38
- end
39
-
40
- def params(with_format_param = false)
41
- params = {:query => to_sql, :access_token => access_token}
42
- return params unless with_format_param
43
- params.merge(:format => @format_param)
34
+ def params
35
+ {:q => to_sql, :access_token => access_token}
44
36
  end
45
37
 
46
- def to_url(with_format_param = false)
47
- RFQL::FQLURL + '?' + hash_to_params_string(params(with_format_param))
38
+ def to_url
39
+ FQLURL + '?' + hash_to_params_string(params)
48
40
  end
49
41
 
50
42
  def hash_to_params_string(params)
51
43
  params.to_a.select do |param|
52
44
  param[0].present? and param[1].present?
53
45
  end.map do |param|
54
- k, v = URI.escape(param[0].to_s), URI.escape(param[1].to_s)
55
- k.gsub!('&', '%26'); k.gsub!('=', '%3D'); v.gsub!('&', '%26'); v.gsub!('=', '%3D')
56
- "#{k}=#{v}"
46
+ "%s=%s" % [CGI.escape(param[0].to_s), CGI.escape(param[1].to_s)]
57
47
  end.join('&')
58
48
  end
59
49
 
60
- def to_json(json_format = :parsed, options = {})
50
+ def fetch(json_format = :parsed, options = {})
61
51
  begin
62
- to_json!(json_format, options)
52
+ fetch!(json_format, options)
63
53
  rescue RFQL::Response::FQLError
64
54
  nil
65
55
  end
66
56
  end
67
57
 
68
- def to_json!(json_format = :parsed, options = {})
58
+ # Example: RFQL.request.query('SELECT aid, owner, name, object_id FROM album WHERE aid="20531316728_324257"').fetch
59
+ def fetch!(json_format = :parsed, options = {})
69
60
  raise ArgumentError, "illegal format" unless [:raw, :parsed].include?(json_format)
70
61
  unless options.is_a?(Hash) and (options.keys - [:open_uri_options, :json_parse_options, :force_execution]).blank?
71
62
  raise ArgumentError, "illegal options"
data/lib/rfql/response.rb CHANGED
@@ -8,20 +8,15 @@ module RFQL
8
8
  class << self
9
9
  def new(request, options = {})
10
10
  options[:format] ||= :json_parsed
11
- raise ArgumentError, 'illegal format' unless [:xml, :json_raw, :json_parsed].include?(options[:format])
11
+ raise ArgumentError, 'illegal format' unless [:json_raw, :json_parsed].include?(options[:format])
12
12
 
13
- case options[:format]
14
- when :json_raw, :json_parsed
15
- options[:format] = options[:format] == :json_raw ? :raw : :parsed
16
- RFQL::Response::JSON.new(request, options)
17
- when :xml
18
- raise NotImplementedError, 'xml fetching is still a WIP :-P'
19
- end
13
+ options[:format] = options[:format].to_s[/^json_(.*)/, 1].to_sym
14
+
15
+ RFQL::Response::JSON.new(request, options)
20
16
  end
17
+
21
18
  def read(request, options = {})
22
19
  request_url = request.respond_to?(:to_url) ? request.to_url : request.to_s
23
- raise ArgumentError, 'illegal format' unless [:xml, :json].include?(options[:format])
24
- request_url << "&format=#{options[:format]}"
25
20
  URI.parse(request_url).read(options[:open_uri_options] || {})
26
21
  end
27
22
  end
data/lib/rfql.rb CHANGED
@@ -1,8 +1,7 @@
1
1
  require 'rfql/query'
2
2
  require 'rfql/request'
3
3
  module RFQL
4
- VERSION = '0.1.alpha.2'
5
- FQLURL = "https://api.facebook.com/method/fql.query"
4
+ VERSION = '0.1.alpha.4'
6
5
  def self.request(obj = nil)
7
6
  RFQL::Request.new(obj)
8
7
  end
data/rfql.gemspec CHANGED
@@ -2,12 +2,12 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rfql"
5
- s.version = "0.1.alpha.3"
5
+ s.version = "0.1.alpha.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["De Santis Maurizio"]
9
9
  s.cert_chain = ["/home/mau/.gem_keys/gem-public_cert.pem"]
10
- s.date = "2011-11-11"
10
+ s.date = "2012-01-04"
11
11
  s.description = "RFQL - Ruby interface for Facebook Query Language"
12
12
  s.email = "desantis.maurizio@gmail.com"
13
13
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.rdoc", "lib/rfql.rb", "lib/rfql/core_ext/object/blank.rb", "lib/rfql/query.rb", "lib/rfql/query/methods.rb", "lib/rfql/query/quoting.rb", "lib/rfql/request.rb", "lib/rfql/request/delegations.rb", "lib/rfql/response.rb", "lib/rfql/response/fql_error.rb", "lib/rfql/response/json.rb", "lib/rfql/response/json/parsed.rb", "lib/rfql/response/json/parsed/error.rb", "lib/rfql/response/json/parsed/null.rb", "lib/rfql/response/json/parsed/records.rb", "lib/rfql/response/json/raw.rb"]
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Rfql", "--main", "README.rdoc"]
17
17
  s.require_paths = ["lib"]
18
18
  s.rubyforge_project = "rfql"
19
- s.rubygems_version = "1.8.11"
19
+ s.rubygems_version = "1.8.12"
20
20
  s.signing_key = "/home/mau/.gem_keys/gem-private_key.pem"
21
21
  s.summary = "It lets you use ORM-style code for fetching data from Facebook through the Facebook Query Language"
22
22
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rfql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.alpha.3
4
+ version: 0.1.alpha.4
5
5
  prerelease: 4
6
6
  platform: ruby
7
7
  authors:
@@ -50,7 +50,7 @@ cert_chain:
50
50
  -----END CERTIFICATE-----
51
51
 
52
52
  '
53
- date: 2011-11-11 00:00:00.000000000 Z
53
+ date: 2012-01-04 00:00:00.000000000 Z
54
54
  dependencies: []
55
55
  description: RFQL - Ruby interface for Facebook Query Language
56
56
  email: desantis.maurizio@gmail.com
@@ -123,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  version: '1.2'
124
124
  requirements: []
125
125
  rubyforge_project: rfql
126
- rubygems_version: 1.8.11
126
+ rubygems_version: 1.8.12
127
127
  signing_key:
128
128
  specification_version: 3
129
129
  summary: It lets you use ORM-style code for fetching data from Facebook through the
metadata.gz.sig CHANGED
@@ -1 +1,2 @@
1
- �͆Asa��F��UІpE��`u�CpG��50$��LrY(���N}���8J�\驪N>�|K�uD�~K'@vna4�N��h_�ӹGy��p�C�=r�]�i�L~��\|���q��!��t܂`XL�%6"8�s$�����S5�����|ӝ9��/ne��n!="3P�F�@�S��.�%���L����({��\J�V�3� Yj�z��?�:��`,,�b���"�s��q `�O
1
+ 3��Ju 9�#����X9u���1l 64%ɈϏK�)
2
+ GR�H�3��pק�?uv+�\��Y��a7����1�{�@�[-Ѷv)x��y9�4tV���!N� B� �ٹ_�#w��Zf�]��є�F5G��^t�ͬ�-]�1����}U�{tT%�oLO0w�� �1o_&�j3�fv�3���=��gs�� �I���ј���D��3�b��¼!��I�l���T�)`5O �Ti O�:=��T���_�