secureshare-ruby 0.0.9 → 0.0.10
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/lib/secureshare.rb +11 -35
- data/lib/secureshare/client.rb +9 -37
- data/lib/secureshare/client/documents.rb +10 -0
- data/lib/secureshare/client/follow.rb +10 -0
- data/lib/secureshare/config.rb +30 -0
- data/lib/secureshare/request.rb +33 -0
- data/secureshare-ruby.gemspec +3 -2
- metadata +22 -11
- data/lib/secureshare/document.rb +0 -46
- data/lib/secureshare/exception.rb +0 -11
- data/lib/secureshare/vault.rb +0 -18
data/lib/secureshare.rb
CHANGED
@@ -1,43 +1,19 @@
|
|
1
|
-
require '
|
2
|
-
require 'secureshare/
|
3
|
-
require 'secureshare/document'
|
4
|
-
require "net/http"
|
5
|
-
require 'secureshare/exception'
|
1
|
+
require 'secureshare/config'
|
2
|
+
require 'secureshare/client'
|
6
3
|
|
7
4
|
module SecureShare
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
def self.config options={}
|
13
|
-
@@config.merge! options
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.fetch_vault vault_id
|
17
|
-
resource = RestClient::Resource.new "#{@@config[:endpoint]}/v1/#{@@config[:api_key]}/vaults/#{vault_id}"
|
18
|
-
response = resource.get :authorization => %{Token token="#{@@config[:api_secret]}"}, :content_type => :json, :accept => :json
|
19
|
-
vault = Vault.new(JSON.parse(response.body))
|
20
|
-
end
|
5
|
+
class << self
|
6
|
+
def client
|
7
|
+
@client ||= SecureShare::Client.new
|
8
|
+
end
|
21
9
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
resource.post({ :email => email, :site_name => follow_url }, {:authorization => %{Token token="#{@@config[:api_secret]}"}, :content_type => :json, :accept => :json})
|
26
|
-
rescue RestClient::UnprocessableEntity => e
|
27
|
-
error_json = JSON.parse e.http_body
|
28
|
-
raise SecureShare::RestException.new(*error_json.first)
|
10
|
+
def method_missing(method, *args, &block)
|
11
|
+
return super unless client.respond_to?(method)
|
12
|
+
client.send(method, *args, &block)
|
29
13
|
end
|
30
|
-
true
|
31
|
-
end
|
32
14
|
|
33
|
-
|
34
|
-
|
35
|
-
url = URI.parse(@@config[:endpoint])
|
36
|
-
request = Net::HTTP.new(url.host, url.port)
|
37
|
-
request.request_head('/health')
|
38
|
-
true
|
39
|
-
rescue
|
40
|
-
false
|
15
|
+
def respond_to?(method, include_private=false)
|
16
|
+
client.respond_to?(method, include_private) || super(method, include_private)
|
41
17
|
end
|
42
18
|
end
|
43
19
|
end
|
data/lib/secureshare/client.rb
CHANGED
@@ -1,43 +1,15 @@
|
|
1
|
-
require '
|
1
|
+
require 'secureshare/request'
|
2
|
+
require 'secureshare/client/documents'
|
3
|
+
require 'secureshare/client/follow'
|
2
4
|
|
3
5
|
module SecureShare
|
4
6
|
class Client
|
7
|
+
include SecureShare::Request
|
8
|
+
include SecureShare::Client::Documents
|
9
|
+
include SecureShare::Client::Follow
|
5
10
|
|
6
|
-
def
|
7
|
-
|
8
|
-
@access_token = access_token
|
9
|
-
@site_name = site_name
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.for endpoint, access_token, site_name
|
13
|
-
new(endpoint)
|
14
|
-
end
|
15
|
-
|
16
|
-
def fetch_vault vault_id
|
17
|
-
response = rest_client.get "#{@endpoint}/api/v1/vaults/#{vault_id}", headers
|
18
|
-
JSON.parse(response.body)
|
19
|
-
end
|
20
|
-
|
21
|
-
def follow_vault vault_id, email
|
22
|
-
response = rest_client.post("#{@endpoint}/api/v1/vaults/#{vault_id}/follow", { :email => email, :site_name => @site_name}, headers)
|
23
|
-
JSON.parse(response.body)
|
24
|
-
rescue RestClient::UnprocessableEntity => e
|
25
|
-
error_json = JSON.parse e.http_body
|
26
|
-
raise SecureShare::RestException.new(*error_json.first)
|
27
|
-
end
|
28
|
-
|
29
|
-
def rest_client= rest_client
|
30
|
-
@rest_client = rest_client
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def rest_client
|
36
|
-
@rest_client || RestClient
|
37
|
-
end
|
38
|
-
|
39
|
-
def headers
|
40
|
-
{:authorization => %{Token token="#{@access_token}"}, :content_type => :json, :accept => :json}
|
11
|
+
def config
|
12
|
+
SecureShare.config
|
41
13
|
end
|
42
14
|
end
|
43
|
-
end
|
15
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'active_support/configurable'
|
2
|
+
|
3
|
+
module SecureShare
|
4
|
+
|
5
|
+
def self.configure(&block)
|
6
|
+
yield @config ||= SecureShare::Configuration.new
|
7
|
+
config.ensure_configured!
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.config
|
11
|
+
@config
|
12
|
+
end
|
13
|
+
|
14
|
+
class Configuration
|
15
|
+
include ActiveSupport::Configurable
|
16
|
+
config_accessor :url do
|
17
|
+
'https://api.secureshare.com.au'
|
18
|
+
end
|
19
|
+
|
20
|
+
ATTRS = [:api_key, :api_secret, :org_name]
|
21
|
+
|
22
|
+
config_accessor *ATTRS
|
23
|
+
|
24
|
+
def ensure_configured!
|
25
|
+
ATTRS.each do |attr|
|
26
|
+
raise "SecureShare config option missing: #{attr}" unless send(attr)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'rest_client'
|
2
|
+
require 'ostruct'
|
3
|
+
|
4
|
+
module SecureShare
|
5
|
+
module Request
|
6
|
+
|
7
|
+
def get path, options={}
|
8
|
+
resource = RestClient::Resource.new "#{config.url}#{path}", options
|
9
|
+
response = resource.get :authorization => %{Token token="#{config.api_secret}", key="#{config.api_key}"}, :content_type => :json, :accept => :json
|
10
|
+
parse_response response
|
11
|
+
end
|
12
|
+
|
13
|
+
def post path, options={}
|
14
|
+
resource = RestClient::Resource.new "#{config.url}#{path}"
|
15
|
+
response = resource.post options, {:authorization => %{Token token="#{config.api_secret}", key="#{config.api_key}"}, :content_type => :json, :accept => :json}
|
16
|
+
parse_response response
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def parse_response response
|
22
|
+
response_object = JSON.parse(response.body)
|
23
|
+
if response_object.is_a?(Enumerable)
|
24
|
+
response_object.map do |object|
|
25
|
+
OpenStruct.new(object)
|
26
|
+
end
|
27
|
+
else
|
28
|
+
OpenStruct.new(response_object)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
data/secureshare-ruby.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = "secureshare-ruby"
|
7
|
-
gem.version = "0.0.
|
7
|
+
gem.version = "0.0.10"
|
8
8
|
gem.authors = ["Chris Aitchison"]
|
9
9
|
gem.email = ["chris.aitchison@sodalis.com.au"]
|
10
10
|
gem.description = %q{SecureShare Ruby API}
|
@@ -17,7 +17,8 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
|
20
|
-
gem.
|
20
|
+
gem.add_dependency 'rest-client'
|
21
|
+
gem.add_dependency 'activesupport', ['>= 3.0.0']
|
21
22
|
|
22
23
|
gem.add_development_dependency "rake"
|
23
24
|
gem.add_development_dependency "rspec"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: secureshare-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
12
|
+
date: 2013-04-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: activesupport
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 3.0.0
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 3.0.0
|
30
46
|
- !ruby/object:Gem::Dependency
|
31
47
|
name: rake
|
32
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -74,9 +90,10 @@ files:
|
|
74
90
|
- Rakefile
|
75
91
|
- lib/secureshare.rb
|
76
92
|
- lib/secureshare/client.rb
|
77
|
-
- lib/secureshare/
|
78
|
-
- lib/secureshare/
|
79
|
-
- lib/secureshare/
|
93
|
+
- lib/secureshare/client/documents.rb
|
94
|
+
- lib/secureshare/client/follow.rb
|
95
|
+
- lib/secureshare/config.rb
|
96
|
+
- lib/secureshare/request.rb
|
80
97
|
- secureshare-ruby.gemspec
|
81
98
|
- spec/secureshare/client_spec.rb
|
82
99
|
- spec/secureshare_spec.rb
|
@@ -95,18 +112,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
95
112
|
- - ! '>='
|
96
113
|
- !ruby/object:Gem::Version
|
97
114
|
version: '0'
|
98
|
-
segments:
|
99
|
-
- 0
|
100
|
-
hash: 3912854031429418768
|
101
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
116
|
none: false
|
103
117
|
requirements:
|
104
118
|
- - ! '>='
|
105
119
|
- !ruby/object:Gem::Version
|
106
120
|
version: '0'
|
107
|
-
segments:
|
108
|
-
- 0
|
109
|
-
hash: 3912854031429418768
|
110
121
|
requirements: []
|
111
122
|
rubyforge_project:
|
112
123
|
rubygems_version: 1.8.23
|
data/lib/secureshare/document.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
module SecureShare
|
2
|
-
class Document
|
3
|
-
def initialize json
|
4
|
-
@name = json["name"]
|
5
|
-
@content_url = json["content_url"]
|
6
|
-
@description = json["description"]
|
7
|
-
@content_filename = json["content_filename"]
|
8
|
-
@content_type = json["content_type"]
|
9
|
-
@tags = json["tags"]
|
10
|
-
@updated_at = json["updated_at"]
|
11
|
-
@created_at = json["created_at"]
|
12
|
-
end
|
13
|
-
|
14
|
-
def name
|
15
|
-
@name
|
16
|
-
end
|
17
|
-
|
18
|
-
def content_url
|
19
|
-
@content_url
|
20
|
-
end
|
21
|
-
|
22
|
-
def description
|
23
|
-
@description
|
24
|
-
end
|
25
|
-
|
26
|
-
def updated_at
|
27
|
-
@updated_at
|
28
|
-
end
|
29
|
-
|
30
|
-
def created_at
|
31
|
-
@created_at
|
32
|
-
end
|
33
|
-
|
34
|
-
def content_filename
|
35
|
-
@content_filename
|
36
|
-
end
|
37
|
-
|
38
|
-
def tags
|
39
|
-
@tags
|
40
|
-
end
|
41
|
-
|
42
|
-
def content_type
|
43
|
-
@content_type
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
data/lib/secureshare/vault.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
module SecureShare
|
2
|
-
class Vault
|
3
|
-
def initialize vault_json
|
4
|
-
@name = vault_json["name"]
|
5
|
-
@documents = vault_json["documents"].map do |document_json|
|
6
|
-
Document.new document_json
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def name
|
11
|
-
@name
|
12
|
-
end
|
13
|
-
|
14
|
-
def documents
|
15
|
-
@documents
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|