fql 0.2.2 → 0.2.3
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.
- checksums.yaml +7 -0
- data/README.markdown +2 -0
- data/lib/fql/query.rb +6 -2
- data/lib/fql/version.rb +1 -1
- data/lib/fql.rb +4 -4
- data/test/fql/query_test.rb +26 -0
- data/test/fql_test.rb +10 -0
- metadata +17 -30
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 34419040302c147714e99cb7eddbb0308894dd97
|
4
|
+
data.tar.gz: 67ada8a05cbd94a7f1f645e684317b3a4cadd981
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ecb627fb33a5655c263dc57f4489f2c11000dc1f0aa11907fdc114c6f9190e8ea6fe2b892e58859f149882b2d347c2cd711895cd88f6a14066d1211bd31c92b9
|
7
|
+
data.tar.gz: 704df50720717395e8017be239e21e204930ec8512515cb45cd41d8a06c2140b168fb9a6c11c3bcca082da506bb91b68ee0e5853fe82898f135e284707f76520
|
data/README.markdown
CHANGED
data/lib/fql/query.rb
CHANGED
@@ -23,17 +23,21 @@ module Fql
|
|
23
23
|
|
24
24
|
protected
|
25
25
|
|
26
|
+
def escape_query(query)
|
27
|
+
query.gsub(/(\r\n|\r|\n)/m, '')
|
28
|
+
end
|
29
|
+
|
26
30
|
def compose_multi_query
|
27
31
|
q = ''
|
28
32
|
@queries.each do |key, query|
|
29
|
-
q += "'#{key}':'#{query}',"
|
33
|
+
q += "'#{key}':'#{escape_query query}',"
|
30
34
|
end
|
31
35
|
# Remove last ',' and add enclosing braces
|
32
36
|
'{' + q[0...-1] + '}'
|
33
37
|
end
|
34
38
|
|
35
39
|
def compose_single_query
|
36
|
-
@queries[@queries.keys[0]]
|
40
|
+
escape_query @queries[@queries.keys[0]]
|
37
41
|
end
|
38
42
|
|
39
43
|
end
|
data/lib/fql/version.rb
CHANGED
data/lib/fql.rb
CHANGED
@@ -30,12 +30,12 @@ module Fql
|
|
30
30
|
end
|
31
31
|
|
32
32
|
# Constructs the Facebook url which will return the results from the FQL
|
33
|
-
# query. The FQL query and access_token are passed as GET
|
33
|
+
# query. The FQL query and optional access_token are passed as GET
|
34
|
+
# parameters.
|
35
|
+
#
|
34
36
|
def make_url(fql_query, options = {})
|
35
37
|
url = self::BASE_URL + URI.encode(fql_query.compose)
|
36
|
-
|
37
|
-
url += "&access_token=#{options[:access_token]}"
|
38
|
-
end
|
38
|
+
url += URI.encode("&access_token=#{options[:access_token]}") if options && options[:access_token]
|
39
39
|
URI.parse url
|
40
40
|
end
|
41
41
|
|
data/test/fql/query_test.rb
CHANGED
@@ -27,10 +27,36 @@ class FqlQueryTest < ActiveSupport::TestCase
|
|
27
27
|
assert_equal expected, actual
|
28
28
|
end
|
29
29
|
|
30
|
+
test 'multiquery gets composed properly even if query is multiline' do
|
31
|
+
multi_query = {
|
32
|
+
all_friends: "SELECT uid2 FROM friend
|
33
|
+
WHERE uid1=me()",
|
34
|
+
my_name: "SELECT name FROM user\r\n WHERE uid=me()"
|
35
|
+
}
|
36
|
+
query = Fql::Query.new multi_query
|
37
|
+
|
38
|
+
actual = query.compose
|
39
|
+
expected = "{" +
|
40
|
+
"'all_friends':'SELECT uid2 FROM friend WHERE uid1=me()'," +
|
41
|
+
"'my_name':'SELECT name FROM user WHERE uid=me()'" +
|
42
|
+
"}"
|
43
|
+
|
44
|
+
assert_equal expected, actual
|
45
|
+
end
|
46
|
+
|
47
|
+
|
30
48
|
test 'single query gets composed properly' do
|
31
49
|
query = Fql::Query.new "SELECT name FROM user WHERE uid=me()"
|
32
50
|
actual = query.compose
|
33
51
|
expected = "SELECT name FROM user WHERE uid=me()"
|
34
52
|
assert_equal expected, actual
|
35
53
|
end
|
54
|
+
|
55
|
+
test 'single query gets composed properly even if it is multiline' do
|
56
|
+
query = Fql::Query.new "SELECT name FROM \r\nuser WHERE\r\n uid=me()"
|
57
|
+
actual = query.compose
|
58
|
+
expected = "SELECT name FROM user WHERE uid=me()"
|
59
|
+
assert_equal expected, actual
|
60
|
+
end
|
61
|
+
|
36
62
|
end
|
data/test/fql_test.rb
CHANGED
@@ -57,6 +57,16 @@ class FqlTest < ActiveSupport::TestCase
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
+
test "should add access_token as GET param to url if provided" do
|
61
|
+
query = Fql::Query.new('')
|
62
|
+
|
63
|
+
uri = Fql.make_url(query, access_token: 'token')
|
64
|
+
assert(uri.request_uri.include?("&access_token=token"))
|
65
|
+
|
66
|
+
uri = Fql.make_url(query)
|
67
|
+
assert(!uri.request_uri.include?("access_token"))
|
68
|
+
end
|
69
|
+
|
60
70
|
def assert_executes_query_correctly(query, mocked_json_response)
|
61
71
|
facebook_should_respond_with mocked_json_response
|
62
72
|
actual = Fql.execute(query)
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Maarten Claes
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-04-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: multi_json
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rails
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,23 +41,20 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: sqlite3
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: 1.3.6
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: 1.3.6
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: fakeweb
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -78,38 +69,35 @@ dependencies:
|
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: rb-fsevent
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: guard-test
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
|
-
description:
|
111
|
-
|
112
|
-
|
97
|
+
description: |2
|
98
|
+
A simple gem to easily use the Facebook Query Language. Just specify single
|
99
|
+
queries as strings or use hashes to compose multiqueries and send them to
|
100
|
+
Facebook using `Fql.execute(query)`.
|
113
101
|
email:
|
114
102
|
- maartencls@gmail.com
|
115
103
|
executables: []
|
@@ -158,27 +146,26 @@ files:
|
|
158
146
|
- test/test_helper.rb
|
159
147
|
homepage: https://github.com/mcls/fql
|
160
148
|
licenses: []
|
149
|
+
metadata: {}
|
161
150
|
post_install_message:
|
162
151
|
rdoc_options: []
|
163
152
|
require_paths:
|
164
153
|
- lib
|
165
154
|
required_ruby_version: !ruby/object:Gem::Requirement
|
166
|
-
none: false
|
167
155
|
requirements:
|
168
|
-
- -
|
156
|
+
- - '>='
|
169
157
|
- !ruby/object:Gem::Version
|
170
158
|
version: 1.9.0
|
171
159
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
|
-
none: false
|
173
160
|
requirements:
|
174
|
-
- -
|
161
|
+
- - '>='
|
175
162
|
- !ruby/object:Gem::Version
|
176
163
|
version: '0'
|
177
164
|
requirements: []
|
178
165
|
rubyforge_project:
|
179
|
-
rubygems_version:
|
166
|
+
rubygems_version: 2.0.2
|
180
167
|
signing_key:
|
181
|
-
specification_version:
|
168
|
+
specification_version: 4
|
182
169
|
summary: Facebook Query Language library
|
183
170
|
test_files:
|
184
171
|
- test/dummy/app/assets/javascripts/application.js
|