opal-loader 0.0.1
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.
- data/LICENSE +0 -0
- data/README +0 -0
- data/Rakefile +0 -0
- data/lib/opal_loader.rb +26 -0
- data/lib/opal_loader/opal_request.rb +59 -0
- metadata +65 -0
data/LICENSE
ADDED
File without changes
|
data/README
ADDED
File without changes
|
data/Rakefile
ADDED
File without changes
|
data/lib/opal_loader.rb
ADDED
@@ -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: []
|