predicsis_ml_sdk 0.1.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 06a8877506ee6c8c96ef66f81fcee6432b5c3dce
4
+ data.tar.gz: 0515fa837e088e57906b99364bd62edd27ec24a9
5
+ SHA512:
6
+ metadata.gz: 60f8acb4d4d2690112d0bf45817ca453df153a4c6fc4f07359c708ccf623cc94983f1ec94b4856f1cad557cf56852eadd19055bf3d164cb6f389fc9a33511f88
7
+ data.tar.gz: 7bc53d292433e67a0e7656a104784d156e1c3ef9f7e1fcab321c6bc27f864af8e4ce97e975d7b2dca67b2f90b7966918bbb00a37ccea9b519ee472aaa557681b
@@ -0,0 +1,13 @@
1
+ module Initializer
2
+ def self.autoload_paths
3
+ load "#{self.pwd}/predicsis_ml_sdk/predicsis_error.rb"
4
+ load "#{self.pwd}/predicsis_ml_sdk/job_stuff.rb"
5
+ Dir[File.join(self.pwd, 'predicsis_ml_sdk', '*.rb')].each { |file| load file }
6
+ end
7
+
8
+ private
9
+
10
+ def self.pwd
11
+ File.dirname(File.expand_path(__FILE__))
12
+ end
13
+ end
@@ -0,0 +1,49 @@
1
+ module PredicsisMlSdk
2
+ class AccessToken
3
+ attr_accessor :id
4
+
5
+ def self.create(params = {}, token = nil)
6
+ AccessToken.new(nil, token).create(params)
7
+ end
8
+
9
+ def self.all(token = nil)
10
+ data = Requests.get_access_tokens(token)
11
+ data.each_with_object([]) do |e, a|
12
+ a << AccessToken.new(e['id'], token).tap do |resource|
13
+ resource.send(:define_attributes, e)
14
+ end
15
+ end
16
+ end
17
+
18
+ def self.get(id, token = nil)
19
+ AccessToken.new(id, token).get
20
+ end
21
+
22
+ def self.delete(id, token = nil)
23
+ AccessToken.new(id, token).delete
24
+ end
25
+
26
+ def initialize(id = nil, token = nil)
27
+ @token = token
28
+ @id = id
29
+ end
30
+
31
+ def create(params = {})
32
+ data = Requests.post_access_token(@token, params)
33
+ define_attributes(data)
34
+ wait_for_job if @job_ids && !@job_ids.empty?
35
+ self
36
+ end
37
+
38
+ def get
39
+ data = Requests.get_access_token(@token, @id)
40
+ define_attributes(data)
41
+ self
42
+ end
43
+
44
+ def delete
45
+ Requests.delete_access_token(@token, @id)
46
+ self
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,11 @@
1
+ class PredicsisMlSdk::Configuration
2
+ attr_accessor :logger
3
+ attr_accessor :predicsis_api_host
4
+
5
+ def initialize
6
+ @logger = Logger.new(STDOUT)
7
+ @logger.level = Logger::DEBUG
8
+
9
+ @predicsis_api_host = 'https://api.predicsis.com'
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ module PredicsisMlSdk
2
+ class Credentials
3
+ def self.get(type = 's3', token = nil)
4
+ Credentials.new(token).get(type)
5
+ end
6
+
7
+ def initialize(token = nil)
8
+ @token = token
9
+ end
10
+
11
+ def get(type = 's3')
12
+ data = Requests.get_credentials(@token)
13
+ define_attributes(data)
14
+ self
15
+ rescue => e
16
+ raise e
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ module PredicsisMlSdk
2
+ class DataFile
3
+ def self.upload(params = {})
4
+ Requests.upload(params)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,60 @@
1
+ module PredicsisMlSdk
2
+ class Dataset
3
+ include JobStuff
4
+
5
+ attr_accessor :id
6
+
7
+ def self.create(params = {}, token = nil)
8
+ Dataset.new(nil, token).create(params)
9
+ end
10
+
11
+ def self.all(token = nil)
12
+ data = Requests.get_datasets(token)
13
+ data.each_with_object([]) do |e, a|
14
+ a << Dataset.new(e['id'], token).tap do |resource|
15
+ resource.send(:define_attributes, e)
16
+ end
17
+ end
18
+ end
19
+
20
+ def self.get(id, token = nil)
21
+ Dataset.new(id, token).get
22
+ end
23
+
24
+ def self.update(id, params = {}, token = nil)
25
+ Dataset.new(id, token).update(params)
26
+ end
27
+
28
+ def self.delete(id, token = nil)
29
+ Dataset.new(id, token).delete
30
+ end
31
+
32
+ def initialize(id = nil, token = nil)
33
+ @token = token
34
+ @id = id
35
+ end
36
+
37
+ def create(params = {})
38
+ data = Requests.post_dataset(@token, params)
39
+ define_attributes(data)
40
+ self
41
+ end
42
+
43
+ def get
44
+ data = Requests.get_dataset(@token, @id)
45
+ define_attributes(data)
46
+ self
47
+ end
48
+
49
+ def update(params = {})
50
+ data = Requests.patch_dataset(@token, @id, params)
51
+ define_attributes(data)
52
+ self
53
+ end
54
+
55
+ def delete
56
+ Requests.delete_dataset(@token, @id)
57
+ self
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,64 @@
1
+ module PredicsisMlSdk
2
+ class Dictionary
3
+ include JobStuff
4
+
5
+ attr_accessor :id
6
+
7
+ def self.create(params = {}, token = nil)
8
+ Dictionary.new(nil, token).create(params)
9
+ end
10
+
11
+ def self.all(token = nil)
12
+ data = Requests.get_dictionaries(token)
13
+ data.each_with_object([]) do |e, a|
14
+ a << Dictionary.new(e['id'], token).tap do |resource|
15
+ resource.send(:define_attributes, e)
16
+ end
17
+ end
18
+ end
19
+
20
+ def self.get(id, token = nil)
21
+ Dictionary.new(id, token).get
22
+ end
23
+
24
+ def self.update(id, params = {}, token = nil)
25
+ Dictionary.new(id, token).update(params)
26
+ end
27
+
28
+ def self.delete(id, token = nil)
29
+ Dictionary.new(id, token).delete
30
+ end
31
+
32
+ def initialize(id = nil, token = nil)
33
+ @token = token
34
+ @id = id
35
+ end
36
+
37
+ def create(params = {})
38
+ data = Requests.post_dictionary(@token, params)
39
+ define_attributes(data)
40
+ self
41
+ end
42
+
43
+ def get
44
+ data = Requests.get_dictionary(@token, @id)
45
+ define_attributes(data)
46
+ self
47
+ end
48
+
49
+ def update(params = {})
50
+ data = Requests.patch_dictionary(@token, @id, params)
51
+ define_attributes(data)
52
+ self
53
+ end
54
+
55
+ def delete
56
+ Requests.delete_dictionary(@token, @id)
57
+ self
58
+ end
59
+
60
+ def variables
61
+ Variable.all(@id, @token)
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,54 @@
1
+ require 'observer'
2
+
3
+ module PredicsisMlSdk
4
+ class Job
5
+ include Observable
6
+
7
+ attr_accessor :id
8
+
9
+ def self.get(id, token = nil)
10
+ Job.new(id, token).get
11
+ end
12
+
13
+ def self.all(token = nil)
14
+ data = Requests.get_jobs(token)
15
+ data.each_with_object([]) do |e, a|
16
+ a << Job.new(e['id'], token).tap do |resource|
17
+ resource.send(:define_attributes, e)
18
+ end
19
+ end
20
+ end
21
+
22
+ def initialize(id, token = nil)
23
+ @token = token
24
+ @id = id
25
+ end
26
+
27
+ def get
28
+ data = Requests.get_job(@token, @id)
29
+ define_attributes(data)
30
+ self
31
+ rescue => e
32
+ raise e
33
+ end
34
+
35
+ def delete
36
+ Requests.delete_job(@token, @id)
37
+ self
38
+ rescue => e
39
+ raise e
40
+ end
41
+
42
+ def succeeded?
43
+ self.status.eql? 'completed'
44
+ end
45
+
46
+ def failed?
47
+ self.status.eql? 'failed'
48
+ end
49
+
50
+ def pending?
51
+ %w(pending processing).include? self.status
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,36 @@
1
+ module PredicsisMlSdk
2
+ module JobStuff
3
+ attr_accessor :job
4
+
5
+ def jobs
6
+ Job.all(@token).select do |job|
7
+ job.runnable_id.eql? @id
8
+ end
9
+ end
10
+
11
+ def job
12
+ return nil if @job_ids.empty?
13
+ Job.get(@job_ids.last, @token)
14
+ end
15
+
16
+ def terminated?
17
+ return true if @job_ids.empty?
18
+ if job.failed?
19
+ fail PredicsisError::JobError.new(job.error['message'], job.error, job.id, job.action)
20
+ else
21
+ return job.succeeded?
22
+ end
23
+ end
24
+
25
+ def wait_for_result
26
+ return if @job_ids.empty?
27
+ sleep(1) while job.pending?
28
+ if job.succeeded?
29
+ self.get
30
+ else
31
+ fail PredicsisError::JobError.new(job.error['message'], job.error, job.id, job.action)
32
+ end
33
+ self
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,60 @@
1
+ module PredicsisMlSdk
2
+ class ModalitiesSet
3
+ include JobStuff
4
+
5
+ attr_accessor :id
6
+
7
+ def self.create(params = {}, token = nil)
8
+ ModalitiesSet.new(nil, token).create(params)
9
+ end
10
+
11
+ def self.all(token = nil)
12
+ data = Requests.get_modalities_sets(token)
13
+ data.each_with_object([]) do |e, a|
14
+ a << ModalitiesSet.new(e['id'], token).tap do |resource|
15
+ resource.send(:define_attributes, e)
16
+ end
17
+ end
18
+ end
19
+
20
+ def self.get(id, token = nil)
21
+ ModalitiesSet.new(id, token).get
22
+ end
23
+
24
+ def self.update(id, params = {}, token = nil)
25
+ ModalitiesSet.new(id, token).update(params)
26
+ end
27
+
28
+ def self.delete(id, token = nil)
29
+ ModalitiesSet.new(id, token).delete
30
+ end
31
+
32
+ def initialize(id = nil, token = nil)
33
+ @id = id
34
+ @token = token
35
+ end
36
+
37
+ def create(params = {})
38
+ data = Requests.post_modalities_set(@token, params)
39
+ define_attributes(data)
40
+ self
41
+ end
42
+
43
+ def get
44
+ data = Requests.get_modalities_set(@token, @id)
45
+ define_attributes(data)
46
+ self
47
+ end
48
+
49
+ def update(params = {})
50
+ data = Requests.patch_modalities_set(@token, @id, params)
51
+ define_attributes(data)
52
+ self
53
+ end
54
+
55
+ def delete
56
+ Requests.delete_modalities_set(@token, @id)
57
+ self
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,60 @@
1
+ module PredicsisMlSdk
2
+ class Model
3
+ include JobStuff
4
+
5
+ attr_accessor :id
6
+
7
+ def self.create(params = {}, token = nil)
8
+ Model.new(nil, token).create(params)
9
+ end
10
+
11
+ def self.all(token = nil)
12
+ data = Requests.get_models(token)
13
+ data.each_with_object([]) do |e, a|
14
+ a << Model.new(e['id'], token).tap do |resource|
15
+ resource.send(:define_attributes, e)
16
+ end
17
+ end
18
+ end
19
+
20
+ def self.get(id, token = nil)
21
+ Model.new(id, token).get
22
+ end
23
+
24
+ def self.update(id, params = {}, token = nil)
25
+ Model.new(id, token).update(params)
26
+ end
27
+
28
+ def self.delete(id, token = nil)
29
+ Model.new(id, token).delete
30
+ end
31
+
32
+ def initialize(id, token = nil)
33
+ @id = id
34
+ @token = token
35
+ end
36
+
37
+ def create(params = {})
38
+ data = Requests.post_model(@token, params)
39
+ define_attributes(data)
40
+ self
41
+ end
42
+
43
+ def get
44
+ data = Requests.get_model(@token, @id)
45
+ define_attributes(data)
46
+ self
47
+ end
48
+
49
+ def update(params = {})
50
+ data = Requests.patch_model(@token, @id, params)
51
+ define_attributes(data)
52
+ self
53
+ end
54
+
55
+ def delete
56
+ Requests.delete_model(@token, @id)
57
+ self
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,22 @@
1
+ module PredicsisMlSdk
2
+ class PredicsisError < StandardError
3
+ attr_accessor :error
4
+
5
+ def initialize(message = nil, error = nil)
6
+ super(message)
7
+ self.error = error
8
+ end
9
+ end
10
+
11
+ class PredicsisError::JobError < PredicsisError
12
+ attr_accessor :job_id, :action
13
+
14
+ def initialize(message = nil, error = nil, job_id = nil, action = nil)
15
+ super(message, error)
16
+ self.job_id = job_id
17
+ self.action = action
18
+ end
19
+ end
20
+
21
+ class PredicsisError::RequestError < PredicsisError; end
22
+ end
@@ -0,0 +1,60 @@
1
+ module PredicsisMlSdk
2
+ class PreparationRulesSet
3
+ include JobStuff
4
+
5
+ attr_accessor :id
6
+
7
+ def self.create(params = {}, token = nil)
8
+ PreparationRulesSet.new(nil, token).create(params)
9
+ end
10
+
11
+ def self.all(token = nil)
12
+ data = Requests.get_preparation_rules_sets(token)
13
+ data.each_with_object([]) do |e, a|
14
+ a << PreparationRulesSet.new(e['id'], token).tap do |resource|
15
+ resource.send(:define_attributes, e)
16
+ end
17
+ end
18
+ end
19
+
20
+ def self.get(id, token = nil)
21
+ PreparationRulesSet.new(id, token).get
22
+ end
23
+
24
+ def self.update(id, params = {}, token = nil)
25
+ PreparationRulesSet.new(id, token).update(params)
26
+ end
27
+
28
+ def self.delete(id, token = nil)
29
+ PreparationRulesSet.new(id, token).delete
30
+ end
31
+
32
+ def initialize(id = nil, token = nil)
33
+ @token = token
34
+ @id = id
35
+ end
36
+
37
+ def create(params = {})
38
+ data = Requests.post_preparation_rules_set(@token, params)
39
+ define_attributes(data)
40
+ self
41
+ end
42
+
43
+ def get
44
+ data = Requests.get_preparation_rules_set(@token, @id)
45
+ define_attributes(data)
46
+ self
47
+ end
48
+
49
+ def update(params = {})
50
+ data = Requests.patch_preparation_rules_set(@token, @id, params)
51
+ define_attributes(data)
52
+ self
53
+ end
54
+
55
+ def delete
56
+ Requests.delete_preparation_rules_set(@token, @id)
57
+ self
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,60 @@
1
+ module PredicsisMlSdk
2
+ class Report
3
+ include JobStuff
4
+
5
+ attr_accessor :id
6
+
7
+ def self.create(params = {}, token = nil)
8
+ Report.new(nil, token).create(params)
9
+ end
10
+
11
+ def self.all(token = nil)
12
+ data = Requests.get_reports(token)
13
+ data.each_with_object([]) do |e, a|
14
+ a << Report.new(e['id'], token).tap do |resource|
15
+ resource.send(:define_attributes, e)
16
+ end
17
+ end
18
+ end
19
+
20
+ def self.get(id, token = nil)
21
+ Report.new(id, token).get
22
+ end
23
+
24
+ def self.update(id, params = {}, token = nil)
25
+ Report.new(id, token).update(params)
26
+ end
27
+
28
+ def self.delete(id, token = nil)
29
+ Report.new(id, token).delete
30
+ end
31
+
32
+ def initialize(id, token = nil)
33
+ @token = token
34
+ @id = id
35
+ end
36
+
37
+ def create(params = {})
38
+ data = Requests.post_report(@token, params)
39
+ define_attributes(data)
40
+ self
41
+ end
42
+
43
+ def get
44
+ data = Requests.get_report(@token, @id)
45
+ define_attributes(data)
46
+ self
47
+ end
48
+
49
+ def update(params = {})
50
+ data = Requests.patch_report(@token, @id, params)
51
+ define_attributes(data)
52
+ self
53
+ end
54
+
55
+ def delete
56
+ Requests.delete_report(@token, @id)
57
+ self
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,145 @@
1
+ require 'support/helper'
2
+ require 'httmultiparty'
3
+ require 'nokogiri'
4
+
5
+ module PredicsisMlSdk
6
+ class Requests
7
+ HTTParty::Basement.default_options.update(verify: false)
8
+
9
+ MODELS = %w(source dataset dictionary preparation_rules_set modalities_set report model)
10
+
11
+ class << self
12
+ %w(get post patch delete).each do |method|
13
+ define_method("#{method}") do |url, params, headers = {}|
14
+ options = { body: params, headers: headers }
15
+ with_captured_console do
16
+ begin
17
+ response = HTTParty.send(method.to_sym, url, options)
18
+ if [200, 201, 204].include? response.code
19
+ return response
20
+ else
21
+ fail PredicsisError::RequestError.new(response['message'],
22
+ JSON.parse(response.body))
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ def post_access_token(token, params)
30
+ PredicsisMlSdk.logger.debug 'POST settings/tokens'
31
+ params = { token: params }.to_json
32
+ response = post("#{api_host}/settings/tokens", params, headers(token))
33
+ PredicsisMlSdk.logger.debug "Personal Access Token: #{response['access_tokens']['token']}"
34
+ response
35
+ end
36
+
37
+ def get_access_token(token, id)
38
+ PredicsisMlSdk.logger.debug "GET settings/tokens/#{id}"
39
+ get("#{api_host}/settings/tokens/#{id}", nil, headers(token))
40
+ end
41
+
42
+ def get_access_tokens(token)
43
+ PredicsisMlSdk.logger.debug 'GET settings/tokens'
44
+ get("#{api_host}/settings/tokens", nil, headers(token))
45
+ end
46
+
47
+ def delete_access_token(token, id)
48
+ PredicsisMlSdk.logger.debug "DELETE settings/tokens/#{id}"
49
+ delete("#{api_host}/settings/tokens/#{id}", nil, headers(token))
50
+ end
51
+
52
+ def get_credentials(token)
53
+ PredicsisMlSdk.logger.debug 'GET credentials'
54
+ get("#{api_host}/sources/credentials/s3", nil, headers(token))['credentials']
55
+ end
56
+
57
+ def upload(params = {})
58
+ filename = params.delete(:file)
59
+ endpoint = params.delete(:url)
60
+ aws_access_key_id = params.delete(:aws_access_key_id)
61
+ params.merge!(AwsAccessKeyId: aws_access_key_id, :'Content-Type' => 'multipart/form-data',
62
+ acl: 'private', success_action_status: '201', file: File.new(filename))
63
+ PredicsisMlSdk.logger.debug "UPLOAD #{filename}"
64
+ response = HTTMultiParty.post("#{endpoint}", query: params)
65
+ if [200, 201, 204].include? response.code
66
+ return response['PostResponse']['Key'] ||
67
+ Nokogiri::XML.parse(response).xpath('PostResponse/Key').map { |key| key.content }.first
68
+ else
69
+ fail PredicsisError::RequestError.new(response['message'], JSON.parse(response.body))
70
+ end
71
+ end
72
+
73
+ def get_job(token, id)
74
+ get("#{api_host}/jobs/#{id}", nil, headers(token))['job']
75
+ end
76
+
77
+ def get_jobs(token)
78
+ PredicsisMlSdk.logger.debug 'GET jobs'
79
+ get("#{api_host}/jobs", nil, headers(token))['jobs']
80
+ end
81
+
82
+ def delete_job(token, id)
83
+ PredicsisMlSdk.logger.debug "DELETE job/#{id}"
84
+ delete("#{api_host}/jobs/#{id}", nil, headers(token))
85
+ end
86
+
87
+ def get_variables(token, parent_id)
88
+ PredicsisMlSdk.logger.debug "GET dictionaries/#{parent_id}/variables"
89
+ get("#{api_host}/dictionaries/#{parent_id}/variables", nil, headers(token))['variables']
90
+ end
91
+
92
+ def patch_variable(token, id, parent_id, params = {})
93
+ PredicsisMlSdk.logger.debug "PATCH dictionaries/#{parent_id}/variables/#{id}"
94
+ params = { variable: params }.to_json
95
+ patch("#{api_host}/dictionaries/#{parent_id}/variables/#{id}",
96
+ params, headers(token))['variable']
97
+ end
98
+
99
+ MODELS.each do |model|
100
+ define_method("post_#{model}") do |token, params = {}|
101
+ PredicsisMlSdk.logger.debug "POST #{model.pluralize}"
102
+ params = { :"#{model}" => params }
103
+ response = post("#{api_host}/#{model.pluralize}", params.to_json, headers(token))
104
+ PredicsisMlSdk.logger.info("#{model}_id: #{response[model]['id']}")
105
+ response[model]
106
+ end
107
+
108
+ define_method("delete_#{model}") do |token, id|
109
+ PredicsisMlSdk.logger.debug "DELETE #{model.pluralize}/#{id}"
110
+ delete("#{api_host}/#{model.pluralize}/#{id}", nil, headers(token))
111
+ end
112
+
113
+ define_method("get_#{model}") do |token, id|
114
+ PredicsisMlSdk.logger.debug "GET #{model.pluralize}/#{id}"
115
+ get("#{api_host}/#{model.pluralize}/#{id}", nil, headers(token))[model]
116
+ end
117
+
118
+ define_method("get_#{model.pluralize}") do |token|
119
+ PredicsisMlSdk.logger.debug "GET #{model.pluralize}"
120
+ get("#{api_host}/#{model.pluralize}", nil, headers(token))[model.pluralize]
121
+ end
122
+
123
+ define_method("patch_#{model}") do |token, id, params = {}|
124
+ params = { :"#{model}" => params }.to_json
125
+ PredicsisMlSdk.logger.debug "PATCH #{model.pluralize}/#{id}"
126
+ patch("#{api_host}/#{model.pluralize}/#{id}", params, headers(token))[model]
127
+ end
128
+ end
129
+
130
+ private
131
+
132
+ def headers(token)
133
+ @headers ||= {
134
+ 'Accept' => 'application/json',
135
+ 'Content-Type' => 'application/json',
136
+ 'Authorization' => "Bearer #{token}"
137
+ }
138
+ end
139
+
140
+ def api_host
141
+ PredicsisMlSdk.config.predicsis_api_host
142
+ end
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,58 @@
1
+ module PredicsisMlSdk
2
+ class Source
3
+ attr_accessor :id
4
+
5
+ def self.create(params = {}, token = nil)
6
+ Source.new(nil, token).create(params)
7
+ end
8
+
9
+ def self.all(token = nil)
10
+ data = Requests.get_sources(token)
11
+ data.each_with_object([]) do |e, a|
12
+ a << Source.new(e['id'], token).tap do |resource|
13
+ resource.send(:define_attributes, e)
14
+ end
15
+ end
16
+ end
17
+
18
+ def self.get(id, token = nil)
19
+ Source.new(id, token).get
20
+ end
21
+
22
+ def self.update(id, params = {}, token = nil)
23
+ Source.new(id, token).update(params)
24
+ end
25
+
26
+ def self.delete(id, token = nil)
27
+ Source.new(id, token).delete
28
+ end
29
+
30
+ def initialize(id = nil, token = nil)
31
+ @token = token
32
+ @id = id
33
+ end
34
+
35
+ def create(params = {})
36
+ data = Requests.post_source(@token, params)
37
+ define_attributes(data)
38
+ self
39
+ end
40
+
41
+ def update(params = {})
42
+ data = Requests.patch_source(@token, @id, params)
43
+ define_attributes(data)
44
+ self
45
+ end
46
+
47
+ def delete
48
+ Requests.delete_source(@token, @id)
49
+ self
50
+ end
51
+
52
+ def get
53
+ data = Requests.get_source(@token, @id)
54
+ define_attributes(data)
55
+ self
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,40 @@
1
+ module PredicsisMlSdk
2
+ class Variable
3
+ attr_accessor :dictionary_id, :id
4
+
5
+ def self.get(dictionary_id, id, token = nil)
6
+ Variable.new(dictionary_id, id, token).get
7
+ end
8
+
9
+ def self.update(dictionary_id, id, params = {}, token = nil)
10
+ Variable.new(dictionary_id, id, token).update(params)
11
+ end
12
+
13
+ def self.all(dictionary_id, token = nil)
14
+ data = Requests.get_variables(token, dictionary_id)
15
+ data.each_with_object([]) do |e, a|
16
+ a << Variable.new(dictionary_id, e['id'], token).tap do |variable|
17
+ variable.send(:define_attributes, e)
18
+ end
19
+ end
20
+ end
21
+
22
+ def initialize(dictionary_id, id = nil, token = nil)
23
+ @dictionary_id = dictionary_id
24
+ @id = id
25
+ @token = token
26
+ end
27
+
28
+ def get
29
+ data = Requests.get_variable(@token, @id, @dictionary_id)
30
+ define_attributes(data)
31
+ self
32
+ end
33
+
34
+ def update(params = {})
35
+ data = Requests.patch_variable(@token, @id, @dictionary_id, params)
36
+ define_attributes(data)
37
+ self
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,3 @@
1
+ module PredicsisMlSdk
2
+ VERSION = '0.1.0'
3
+ end
@@ -0,0 +1,25 @@
1
+ require 'initializer'
2
+ require 'support/helper'
3
+ require 'json'
4
+ require 'stringio'
5
+ require 'logger'
6
+
7
+ module PredicsisMlSdk
8
+ class << self
9
+ attr_accessor :config
10
+ end
11
+
12
+ def self.config
13
+ @config ||= Configuration.new
14
+ end
15
+
16
+ def self.configure
17
+ yield config
18
+ end
19
+
20
+ def self.logger
21
+ config.logger
22
+ end
23
+
24
+ Initializer.autoload_paths
25
+ end
@@ -0,0 +1,34 @@
1
+ def with_captured_console
2
+ old_stdout = $stdout
3
+ old_stderr = $stderr
4
+ $stdout = $stderr = StringIO.new('', 'w')
5
+ yield
6
+ $stdout.string
7
+ ensure
8
+ $stdout = old_stdout
9
+ $stderr = old_stderr
10
+ end
11
+
12
+ def define_attributes(data)
13
+ data.each do |k, v|
14
+ if k.eql?('error')
15
+ self.class.class_eval { attr_accessor "#{k}" }
16
+ send("#{k}=", v)
17
+ elsif v.is_a?(Hash)
18
+ v.delete('id')
19
+ define_attributes(v)
20
+ else
21
+ self.class.class_eval { attr_accessor "#{k}" }
22
+ send("#{k}=", v)
23
+ end
24
+ end
25
+ end
26
+
27
+ class String
28
+ IRREGULAR = %w(dictionary)
29
+
30
+ def pluralize
31
+ return 'dictionaries' if self.eql? 'dictionary'
32
+ self + 's'
33
+ end
34
+ end
metadata ADDED
@@ -0,0 +1,163 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: predicsis_ml_sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Armand
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.8.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.8.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: oj
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 2.7.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 2.7.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: httmultiparty
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.3.16
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.3.16
55
+ - !ruby/object:Gem::Dependency
56
+ name: json-schema
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 2.2.5
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 2.2.5
69
+ - !ruby/object:Gem::Dependency
70
+ name: nokogiri
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 1.6.3
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 1.6.3
83
+ - !ruby/object:Gem::Dependency
84
+ name: cod
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.6.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 0.6.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 3.1.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 3.1.0
111
+ description:
112
+ email:
113
+ - armand.bourquin@predicsis.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - lib/initializer.rb
119
+ - lib/predicsis_ml_sdk.rb
120
+ - lib/predicsis_ml_sdk/access_token.rb
121
+ - lib/predicsis_ml_sdk/configuration.rb
122
+ - lib/predicsis_ml_sdk/credentials.rb
123
+ - lib/predicsis_ml_sdk/data_file.rb
124
+ - lib/predicsis_ml_sdk/dataset.rb
125
+ - lib/predicsis_ml_sdk/dictionary.rb
126
+ - lib/predicsis_ml_sdk/job.rb
127
+ - lib/predicsis_ml_sdk/job_stuff.rb
128
+ - lib/predicsis_ml_sdk/modalities_set.rb
129
+ - lib/predicsis_ml_sdk/model.rb
130
+ - lib/predicsis_ml_sdk/predicsis_error.rb
131
+ - lib/predicsis_ml_sdk/preparation_rules_set.rb
132
+ - lib/predicsis_ml_sdk/report.rb
133
+ - lib/predicsis_ml_sdk/requests.rb
134
+ - lib/predicsis_ml_sdk/source.rb
135
+ - lib/predicsis_ml_sdk/variable.rb
136
+ - lib/predicsis_ml_sdk/version.rb
137
+ - lib/support/helper.rb
138
+ homepage: https://github.com/PredicSis/predicsis_ml_sdk-ruby
139
+ licenses:
140
+ - MIT
141
+ metadata: {}
142
+ post_install_message:
143
+ rdoc_options: []
144
+ require_paths:
145
+ - lib
146
+ required_ruby_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ required_rubygems_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ requirements: []
157
+ rubyforge_project:
158
+ rubygems_version: 2.2.2
159
+ signing_key:
160
+ specification_version: 4
161
+ summary: PredicSis ML SDK
162
+ test_files: []
163
+ has_rdoc: