evalso 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/evalso/version.rb +1 -1
  2. data/lib/evalso.rb +22 -5
  3. metadata +8 -8
@@ -1,3 +1,3 @@
1
1
  class Evalso
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
data/lib/evalso.rb CHANGED
@@ -11,6 +11,8 @@ class Evalso
11
11
  API_VERSION = 1
12
12
  DEFAULT_URI = "http://eval.so/api/"
13
13
 
14
+ class HTTPError < Exception; end
15
+
14
16
  def self.base_uri(uri = nil)
15
17
  return @@base_uri unless uri
16
18
 
@@ -23,11 +25,14 @@ class Evalso
23
25
  Request.new(hash).response
24
26
  end
25
27
 
28
+ def self.languages
29
+ raw = HTTParty.get(base_uri + 'languages').body
30
+ JSON.parse(raw)
31
+ end
32
+
26
33
  class Request
27
34
  include HTTParty
28
35
 
29
- attr_reader :response
30
-
31
36
  # Usage:
32
37
  # Evalso::Request.new(lang, code, inputFiles: ["filename.txt"])
33
38
  # or
@@ -53,15 +58,27 @@ class Evalso
53
58
 
54
59
  hash[:inputFiles] = handle_input_files(hash[:inputFiles])
55
60
 
61
+ @hash = hash
62
+ end
63
+
64
+ def response
56
65
  opts = {
57
- :body => hash.to_json,
66
+ :body => @hash.to_json,
58
67
  :headers => {
59
68
  "Content-Type" => "text/json"
60
69
  }
61
70
  }
62
71
 
63
- ret = JSON.parse(self.class.post('/evaluate', opts).body)
64
- @response = Response.new(hash[:code], ret)
72
+ resp = self.class.post('/evaluate', opts)
73
+ ret = JSON.parse(resp.body)
74
+
75
+ if !resp.response.is_a?(Net::HTTPSuccess)
76
+ error = ret['error']
77
+ error ||= "#{resp.response.code} #{resp.response.msg.inspect}"
78
+ raise Evalso::HTTPError, ret['error']
79
+ end
80
+
81
+ @response = Response.new(@hash[:code], ret)
65
82
  end
66
83
 
67
84
  def handle_input_files(files)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evalso
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-07 00:00:00.000000000 Z
12
+ date: 2013-05-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
16
- requirement: &9545340 !ruby/object:Gem::Requirement
16
+ requirement: &7671860 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *9545340
24
+ version_requirements: *7671860
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &9543460 !ruby/object:Gem::Requirement
27
+ requirement: &7671360 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.3'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *9543460
35
+ version_requirements: *7671360
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &9542660 !ruby/object:Gem::Requirement
38
+ requirement: &7670940 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *9542660
46
+ version_requirements: *7670940
47
47
  description: Evaluates code safely, via http://eval.so
48
48
  email:
49
49
  - nick@duckinator.net