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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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���_�