basuco 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,6 +5,69 @@ Dir[File.dirname(__FILE__) + '/basuco/*.rb'].each {|file| require file }
5
5
 
6
6
  module Basuco
7
7
 
8
+ SERVICES = {
9
+ :mqlread => '/api/service/mqlread',
10
+ :mqlwrite => '/api/service/mqlwrite',
11
+ :blurb => '/api/trans/blurb/guid/',
12
+ :raw => '/api/trans/raw/guid/',
13
+ :login => '/api/account/login', #not done
14
+ :logout => '/api/account/logout', #not done
15
+ :upload => '/api/service/upload',
16
+ :topic => '/experimental/topic',
17
+ :search => '/api/service/search',
18
+ :status => '/api/status', #not done
19
+ :thumb => 'api/trans/image_thumb'
20
+
21
+ }
22
+
23
+ def service_url(svc)
24
+ "#{@host}#{SERVICES[svc]}"
25
+ end
26
+
27
+ SERVICES.each_key do |k|
28
+ define_method("#{k}_service_url") do
29
+ service_url(k)
30
+ end
31
+ end
32
+
33
+ # raise an error if the inner response envelope is encoded as an error
34
+ def handle_read_error(inner)
35
+ unless inner['code'][0, '/api/status/ok'.length] == '/api/status/ok'
36
+ error = inner['messages'][0]
37
+ raise ReadError.new(error['code'], error['message'])
38
+ end
39
+ end # handle_read_error
40
+
41
+ # returns parsed json response from freebase mqlread service
42
+ def get_query_response(query, cursor=nil)
43
+ envelope = { :qname => {:query => query, :escape => false }}
44
+ envelope[:qname][:cursor] = cursor if cursor
45
+
46
+ response = http_request mqlread_service_url, :queries => envelope.to_json
47
+ result = JSON.parse response
48
+ inner = result['qname']
49
+ handle_read_error(inner)
50
+ inner
51
+ end
52
+
53
+ # encode parameters
54
+ def params_to_string(parameters)
55
+ parameters.keys.map {|k| "#{URI.encode(k.to_s)}=#{URI.encode(parameters[k].to_s)}" }.join('&')
56
+ end
57
+
58
+ # does the dirty work
59
+ def http_request(url, parameters = {})
60
+ params = params_to_string(parameters)
61
+ url << '?'+params unless params !~ /\S/
62
+
63
+ return Net::HTTP.get_response(::URI.parse(url)).body
64
+
65
+ fname = "#{MD5.md5(params)}.mql"
66
+ open(fname,"w") do |f|
67
+ f << response
68
+ end
69
+ end
70
+
8
71
  #hash of all statuses
9
72
  def self.check_statuses
10
73
  response = http_request status_service_url
@@ -12,6 +75,25 @@ module Basuco
12
75
  result
13
76
  end
14
77
 
78
+ # A class for returing errors from the freebase api.
79
+ # For more infomation see the freebase documentation:
80
+ class ReadError < ArgumentError
81
+ attr_accessor :code, :msg
82
+ def initialize(code,msg)
83
+ self.code = code
84
+ self.msg = msg
85
+ end
86
+ def message
87
+ "#{code}: #{msg}"
88
+ end
89
+ end
90
+
91
+ class AttributeNotFound < StandardError ; end
92
+ class PropertyNotFound < StandardError ; end
93
+ class ResourceNotFound < StandardError ; end
94
+ class TopicNotFound < StandardError ; end
95
+ class ViewNotFound < StandardError ; end
96
+
15
97
  end # module Basuco
16
98
 
17
99
 
@@ -4,8 +4,6 @@ module Basuco
4
4
  end
5
5
 
6
6
  class Api
7
- Dir[File.dirname(__FILE__) + './*.rb'].each {|file| require file }
8
- include Request
9
7
  def initialize(options = {:host => 'http://www.freebase.com', :username => 'un', :password => 'pw'})
10
8
  @host = options[:host]
11
9
  @username = options[:username]
@@ -1,86 +1,4 @@
1
1
  module Request
2
2
 
3
- SERVICES = {
4
- :mqlread => '/api/service/mqlread',
5
- :mqlwrite => '/api/service/mqlwrite',
6
- :blurb => '/api/trans/blurb/guid/',
7
- :raw => '/api/trans/raw/guid/',
8
- :login => '/api/account/login', #not done
9
- :logout => '/api/account/logout', #not done
10
- :upload => '/api/service/upload',
11
- :topic => '/experimental/topic',
12
- :search => '/api/service/search',
13
- :status => '/api/status', #not done
14
- :thumb => 'api/trans/image_thumb'
15
-
16
- }
17
-
18
- def service_url(svc)
19
- "#{@host}#{SERVICES[svc]}"
20
- end
21
-
22
- SERVICES.each_key do |k|
23
- define_method("#{k}_service_url") do
24
- service_url(k)
25
- end
26
- end
27
-
28
-
29
- # A class for returing errors from the freebase api.
30
- # For more infomation see the freebase documentation:
31
- class ReadError < ArgumentError
32
- attr_accessor :code, :msg
33
- def initialize(code,msg)
34
- self.code = code
35
- self.msg = msg
36
- end
37
- def message
38
- "#{code}: #{msg}"
39
- end
40
- end
41
-
42
- class AttributeNotFound < StandardError ; end
43
- class PropertyNotFound < StandardError ; end
44
- class ResourceNotFound < StandardError ; end
45
- class TopicNotFound < StandardError ; end
46
- class ViewNotFound < StandardError ; end
47
-
48
- # raise an error if the inner response envelope is encoded as an error
49
- def handle_read_error(inner)
50
- unless inner['code'][0, '/api/status/ok'.length] == '/api/status/ok'
51
- error = inner['messages'][0]
52
- raise ReadError.new(error['code'], error['message'])
53
- end
54
- end # handle_read_error
55
-
56
- # returns parsed json response from freebase mqlread service
57
- def get_query_response(query, cursor=nil)
58
- envelope = { :qname => {:query => query, :escape => false }}
59
- envelope[:qname][:cursor] = cursor if cursor
60
-
61
- response = http_request mqlread_service_url, :queries => envelope.to_json
62
- result = JSON.parse response
63
- inner = result['qname']
64
- handle_read_error(inner)
65
- inner
66
- end
67
-
68
- # encode parameters
69
- def params_to_string(parameters)
70
- parameters.keys.map {|k| "#{URI.encode(k.to_s)}=#{URI.encode(parameters[k].to_s)}" }.join('&')
71
- end
72
-
73
- # does the dirty work
74
- def http_request(url, parameters = {})
75
- params = params_to_string(parameters)
76
- url << '?'+params unless params !~ /\S/
77
-
78
- return Net::HTTP.get_response(::URI.parse(url)).body
79
-
80
- fname = "#{MD5.md5(params)}.mql"
81
- open(fname,"w") do |f|
82
- f << response
83
- end
84
- end
85
3
 
86
4
  end #Request
@@ -6,8 +6,6 @@ module Basuco
6
6
  # partially taken from chris eppstein's freebase api
7
7
  # http://github.com/chriseppstein/freebase/tree
8
8
  class Search
9
- Dir[File.dirname(__FILE__) + './*.rb'].each {|file| require file }
10
- include Request
11
9
 
12
10
  def initialize(options = {:host => 'http://www.freebase.com', :username => 'un', :password => 'pw'})
13
11
  @host = options[:host]
@@ -6,8 +6,6 @@ module Basuco
6
6
  # partially taken from chris eppstein's freebase api
7
7
  # http://github.com/chriseppstein/freebase/tree
8
8
  class Trans
9
- Dir[File.dirname(__FILE__) + './*.rb'].each {|file| require file }
10
- include Request
11
9
 
12
10
  def initialize(options = {:host => 'http://www.freebase.com', :username => 'un', :password => 'pw'})
13
11
  @host = options[:host]
@@ -1,3 +1,3 @@
1
1
  module Basuco
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: basuco
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-12-25 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &78233640 !ruby/object:Gem::Requirement
16
+ requirement: &76282620 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *78233640
24
+ version_requirements: *76282620
25
25
  description: Transfer information from freebase.com through ruby.
26
26
  email:
27
27
  - ''