majortom_connector 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,9 +1,10 @@
1
1
  require 'httparty'
2
+ require 'net/http'
2
3
 
3
4
  module MajortomConnector
4
5
  class Request
5
6
 
6
- AvailableCommands = [
7
+ AVAILABLE_COMMANDS = [
7
8
  "topics",
8
9
  "topicmaps",
9
10
  "resolvetm",
@@ -11,7 +12,8 @@ module MajortomConnector
11
12
  "ctm",
12
13
  "tmql",
13
14
  "sparql",
14
- "beru"
15
+ "beru",
16
+ "clearcache"
15
17
  ]
16
18
 
17
19
  attr_reader :result
@@ -21,7 +23,7 @@ module MajortomConnector
21
23
  end
22
24
 
23
25
  def self.available_commands
24
- const_get(:AvailableCommands)
26
+ AVAILABLE_COMMANDS
25
27
  end
26
28
 
27
29
  def self.command_available?(command)
@@ -32,11 +34,12 @@ module MajortomConnector
32
34
  @mts_config = config
33
35
  end
34
36
 
35
- def run(command, query = "")
36
- raise ArgumentError, "Command #{command} not available. Try one of the following: #{const_get(:AvailableCommands).join(',')}" unless self.class.command_available?(command)
37
+ def run(command, param = "")
38
+ raise ArgumentError, "Command #{command} not available. Try one of the following: #{MajortomConnector::Request.available_commands.join(', ')}" unless self.class.command_available?(command)
37
39
  @mts_result = Result.new
38
- post(command, query) if %w[tmql sparql beru].include?(command)
39
- get(command, query) if %w[topics topicmaps resolvetm clearcache xtm ctm].include?(command)
40
+ post(command, param) if %w[tmql sparql beru].include?(command)
41
+ get(command, param) if %w[topics topicmaps resolvetm clearcache].include?(command)
42
+ stream(command) if %w[xtm ctm].include?(command)
40
43
  return @mts_result
41
44
  end
42
45
 
@@ -55,10 +58,14 @@ module MajortomConnector
55
58
  @mts_result.parse(HTTParty.post("#{server_uri}/tm/#{command}/#{@mts_config['map']['id']}/", post_options))
56
59
  end
57
60
 
58
- def xtm
59
- end
60
-
61
- def ctm
61
+ def stream(command)
62
+ buffer = ""
63
+ response = Net::HTTP.get_response(URI.parse("#{@mts_config['server']['host']}:#{@mts_config['server']['port']}/#{@mts_config['server']['context']}/tm/#{command}/#{@mts_config['map']['id']}?apikey=#{@mts_config['user']['api_key']}")) do |response|
64
+ response.read_body do |segment|
65
+ buffer << segment
66
+ end
67
+ end
68
+ @mts_result.parse({'code' => response.code, 'msg' => response.message, 'data' => buffer})
62
69
  end
63
70
 
64
71
  def server_uri
@@ -67,7 +74,7 @@ module MajortomConnector
67
74
 
68
75
  def parameter_builder(command, query = "")
69
76
  parameter = case command
70
- when 'topics' then "/#{@mts_config['map']['id']}?"
77
+ when 'topics', 'clearcache' then "/#{@mts_config['map']['id']}?"
71
78
  when 'resolvetm' then "?bl=#{query}&"
72
79
  else "?"
73
80
  end << "apikey=#{@mts_config['user']['api_key']}"
@@ -14,9 +14,9 @@ module MajortomConnector
14
14
  end
15
15
 
16
16
  def parse (result)
17
- @code = result['code']
17
+ @code = %w[0 200].include?(result['code']) ? "0" : result['code']
18
18
  @message = result['msg']
19
- @data = result['data']
19
+ @data = @code == "0" ? result['data'] : ""
20
20
 
21
21
  if @data.kind_of?(Hash) && @data.has_key?('version')
22
22
  send("handle_jtmqr_v#{@data['version'].to_i}")
@@ -1,3 +1,3 @@
1
1
  module MajortomConnector
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -47,6 +47,10 @@ module MajortomConnector
47
47
  def self.to_ctm
48
48
  request.run('ctm')
49
49
  end
50
+
51
+ def self.clear_cache
52
+ request.run('clearcache')
53
+ end
50
54
 
51
55
  protected
52
56
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: majortom_connector
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sven Windisch
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-13 00:00:00 +02:00
18
+ date: 2011-04-14 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency