opal-loader 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE ADDED
File without changes
data/README ADDED
File without changes
File without changes
@@ -0,0 +1,26 @@
1
+ require 'rest_client'
2
+ require 'json'
3
+ require 'opal_loader/opal_request'
4
+
5
+ class OpalLoader
6
+ class << self
7
+ def load request = nil
8
+ instance = self.new(request)
9
+ instance.load()
10
+ end
11
+ end
12
+
13
+ def initialize request = nil
14
+ raise ArgumentError, 'No params given' unless request
15
+
16
+ @request = request.is_a?(OpalRequest) ? request : OpalRequest.new(request)
17
+ end
18
+
19
+ def load
20
+ response = RestClient.post(@request.connection_host, @request.body, @request.headers)
21
+
22
+ return nil if response.code != 200
23
+
24
+ return JSON.parse(response.to_s)['result']
25
+ end
26
+ end
@@ -0,0 +1,59 @@
1
+ require 'json'
2
+
3
+ class OpalRequest
4
+ attr_accessor :body
5
+ attr_accessor :port
6
+ attr_accessor :connection_host
7
+
8
+ def initialize options = nil
9
+ @headers = {}
10
+
11
+ parse_params(options) if options
12
+ end
13
+
14
+ def set_header header, value, override = false
15
+ @headers[header] = [] if !@headers[header] || override
16
+ @headers[header] << value
17
+ end
18
+
19
+ def set_application application
20
+ set_header('x-onet-app', application, true)
21
+ end
22
+
23
+ def headers
24
+ tmp_headers = {}
25
+ @headers.each do |header, value|
26
+ tmp_headers[header] = value.join(';');
27
+ end
28
+ tmp_headers
29
+ end
30
+
31
+ private
32
+ def parse_params options
33
+ raise ArgumentError, 'url missing' unless options[:url]
34
+ raise ArgumentError, 'params missing' unless options[:params]
35
+ raise ArgumentError, 'method missing' unless options[:method]
36
+
37
+ if options[:url][0, 8] == 'https://'
38
+ self.port = 443
39
+ set_header('host', options[:url].gsub('https://', '').tr('/', ''))
40
+ else
41
+ self.port = 443
42
+ set_header('host', options[:url].gsub('http://', '').tr('/', ''))
43
+ end
44
+
45
+ data = {
46
+ :jsonrpc => '2.0',
47
+ :id => [options[:method], '-', Time.now.to_f].join(),
48
+ :method => options[:method],
49
+ :params => options[:params]
50
+ }.to_json
51
+
52
+ self.body = data
53
+ self.connection_host = options[:url]
54
+
55
+ set_application(options[:application])
56
+ set_header('content-type', 'application/json-rpc');
57
+ set_header('content-length', data.length);
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: opal-loader
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jakub Jelen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-07-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rest-client
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.6.7
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.6.7
30
+ description: OpalLoader implementation in Ruby
31
+ email: kuba@xserve.pl
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - LICENSE
37
+ - README
38
+ - Rakefile
39
+ - lib/opal_loader/opal_request.rb
40
+ - lib/opal_loader.rb
41
+ homepage:
42
+ licenses: []
43
+ post_install_message:
44
+ rdoc_options: []
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ none: false
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements: []
60
+ rubyforge_project:
61
+ rubygems_version: 1.8.23
62
+ signing_key:
63
+ specification_version: 3
64
+ summary: OpalLoader
65
+ test_files: []