kynetx_am_api 0.1.2 → 0.1.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/LICENSE +16 -19
- data/lib/kynetx_am_api/application.rb +4 -7
- data/lib/kynetx_am_api/direct_api.rb +22 -18
- data/lib/kynetx_am_api/oauth.rb +28 -20
- data/lib/kynetx_am_api/user.rb +15 -48
- data/lib/kynetx_am_api.rb +23 -23
- metadata +2 -2
data/LICENSE
CHANGED
@@ -1,21 +1,18 @@
|
|
1
|
-
|
1
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
2
|
+
a copy of this software and associated documentation files (the
|
3
|
+
"Software"), to deal in the Software without restriction, including
|
4
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
5
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
6
|
+
permit persons to whom the Software is furnished to do so, subject to
|
7
|
+
the following conditions:
|
2
8
|
|
3
|
-
|
9
|
+
The above copyright notice and this permission notice shall be
|
10
|
+
included in all copies or substantial portions of the Software.
|
4
11
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
13
|
-
all copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
-
THE SOFTWARE.
|
12
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
13
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
14
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
15
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
16
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
17
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
18
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -158,7 +158,7 @@ module KynetxAmApi
|
|
158
158
|
options = {
|
159
159
|
"extname" => name,
|
160
160
|
"extdesc" => description,
|
161
|
-
"extauthor" => author.
|
161
|
+
"extauthor" => author.blank? ? @user.name : author
|
162
162
|
}
|
163
163
|
options["appguid"] = @guid if type == :ie
|
164
164
|
return @api.post_app_generate(@application_id, type.to_s, options)
|
@@ -174,10 +174,7 @@ module KynetxAmApi
|
|
174
174
|
|
175
175
|
def load_base
|
176
176
|
app_details = @api.get_app_details(@application_id)
|
177
|
-
puts "APPDETAILS: #{app_details.inspect}"
|
178
|
-
if app_details["error"]
|
179
|
-
raise app_details["error"]
|
180
|
-
end
|
177
|
+
puts "APPDETAILS: #{app_details.inspect}"
|
181
178
|
@name = app_details["name"]
|
182
179
|
@application_id = app_details["appid"]
|
183
180
|
@guid = app_details["guid"]
|
@@ -200,7 +197,7 @@ module KynetxAmApi
|
|
200
197
|
|
201
198
|
def load_versions
|
202
199
|
app_info = @api.get_app_info(@application_id)
|
203
|
-
puts "APPINFO: #{app_info.inspect}"
|
200
|
+
puts "APPINFO: #{app_info.inspect}"
|
204
201
|
@production_version = app_info["production"]["version"] if app_info["production"]
|
205
202
|
@development_version = app_info["development"]["version"] if app_info["development"]
|
206
203
|
@application_id = app_info["appid"]
|
@@ -210,7 +207,7 @@ module KynetxAmApi
|
|
210
207
|
def set_krl(krl)
|
211
208
|
# ensure that the ruleset_id is correct.
|
212
209
|
krl.gsub!(/ruleset.*?\{/m, "ruleset #{@application_id} {")
|
213
|
-
puts "NEW KRL: #{krl}"
|
210
|
+
puts "NEW KRL: #{krl}"
|
214
211
|
response = @api.post_app_source(@application_id, krl, "krl")
|
215
212
|
response = JSON.parse(response)
|
216
213
|
if response["valid"]
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module KynetxAmApi
|
2
|
-
require 'rubygems'
|
3
2
|
require 'oauth'
|
4
3
|
require 'json'
|
4
|
+
require 'pp'
|
5
5
|
require 'net/http/post/multipart'
|
6
6
|
|
7
7
|
class DirectApi
|
@@ -128,9 +128,13 @@ module KynetxAmApi
|
|
128
128
|
end
|
129
129
|
|
130
130
|
def post_app_updateappimage(application_id, filename, content_type, image_data)
|
131
|
-
#
|
132
|
-
|
133
|
-
|
131
|
+
# headers = {'Content-type'=>'multipart/form-data'}
|
132
|
+
# puts "IMAGE INFO: #{image.class}"
|
133
|
+
# return multipart_post_response("app/#{application_id}/updateappimage", {:image => image})
|
134
|
+
response = ""
|
135
|
+
|
136
|
+
url = URI.parse('https://accounts.kynetx.com/api/0.1/updateAppInfo')
|
137
|
+
|
134
138
|
StringIO.open(image_data) do |i|
|
135
139
|
req = Net::HTTP::Post::Multipart.new url.path,
|
136
140
|
"image" => UploadIO.new(i, content_type, filename),
|
@@ -149,7 +153,7 @@ module KynetxAmApi
|
|
149
153
|
|
150
154
|
def get_user_info
|
151
155
|
user = @oauth.user
|
152
|
-
if user.username.
|
156
|
+
if user.username.blank?
|
153
157
|
user_info = get_response("userinfo", :json)
|
154
158
|
user.username = user_info["username"]
|
155
159
|
user.userid = user_info["userid"]
|
@@ -165,16 +169,16 @@ module KynetxAmApi
|
|
165
169
|
headers = {'Accept'=>'application/json'}
|
166
170
|
end
|
167
171
|
api_call = "/0.1/#{api_method}"
|
168
|
-
puts "---------GET---------------"
|
169
|
-
puts api_call
|
170
|
-
puts "___________________________"
|
172
|
+
puts "---------GET---------------"
|
173
|
+
puts api_call
|
174
|
+
puts "___________________________"
|
171
175
|
response = @oauth.get_access_token.get(api_call, headers).body
|
172
|
-
puts response.inspect if
|
173
|
-
puts "___________________________"
|
176
|
+
puts response.inspect if RAILS_ENV == 'development'
|
177
|
+
puts "___________________________"
|
174
178
|
begin
|
175
179
|
response = JSON.parse(response) if format == :json
|
176
180
|
rescue
|
177
|
-
puts $!
|
181
|
+
puts $!
|
178
182
|
raise "Unexpected response from the api: (#{api_method}) :: #{response}"
|
179
183
|
end
|
180
184
|
return response
|
@@ -189,17 +193,17 @@ module KynetxAmApi
|
|
189
193
|
headers.merge!(additional_headers)
|
190
194
|
end
|
191
195
|
api_call = "/0.1/#{api_method}"
|
192
|
-
puts "---------POST--------------"
|
193
|
-
puts api_call
|
194
|
-
puts data.inspect if
|
195
|
-
puts "___________________________"
|
196
|
+
puts "---------POST--------------"
|
197
|
+
puts api_call
|
198
|
+
puts data.inspect if RAILS_ENV == 'development'
|
199
|
+
puts "___________________________"
|
196
200
|
response = @oauth.get_access_token.post(api_call, data, headers).body
|
197
|
-
puts response.inspect if
|
198
|
-
puts "---------------------------"
|
201
|
+
puts response.inspect if RAILS_ENV == 'development'
|
202
|
+
puts "---------------------------"
|
199
203
|
begin
|
200
204
|
response = JSON.parse(response) if format == :json
|
201
205
|
rescue
|
202
|
-
puts $!
|
206
|
+
puts $!
|
203
207
|
raise "Unexpected response from the api: (#{api_method}) :: #{response}"
|
204
208
|
end
|
205
209
|
return response
|
data/lib/kynetx_am_api/oauth.rb
CHANGED
@@ -1,9 +1,15 @@
|
|
1
1
|
module KynetxAmApi
|
2
2
|
require 'oauth'
|
3
3
|
require 'json'
|
4
|
+
require 'pp'
|
4
5
|
|
5
6
|
class Oauth
|
6
7
|
|
8
|
+
cattr_accessor :accounts_server_url
|
9
|
+
cattr_accessor :api_server_url
|
10
|
+
cattr_accessor :consumer_key
|
11
|
+
cattr_accessor :consumer_secret
|
12
|
+
|
7
13
|
attr_accessor :request_token
|
8
14
|
attr_accessor :account_consumer
|
9
15
|
attr_accessor :api_consumer
|
@@ -29,22 +35,6 @@ module KynetxAmApi
|
|
29
35
|
end
|
30
36
|
|
31
37
|
|
32
|
-
def self.accounts_server_url=(v)
|
33
|
-
@@accounts_server_url = v
|
34
|
-
end
|
35
|
-
|
36
|
-
def self.api_server_url=(v)
|
37
|
-
@@api_server_url = v
|
38
|
-
end
|
39
|
-
|
40
|
-
def self.consumer_key=(v)
|
41
|
-
@@consumer_key = v
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.consumer_secret=(v)
|
45
|
-
@@consumer_secret = v
|
46
|
-
end
|
47
|
-
|
48
38
|
private
|
49
39
|
|
50
40
|
|
@@ -56,10 +46,20 @@ module KynetxAmApi
|
|
56
46
|
|
57
47
|
end
|
58
48
|
|
49
|
+
|
50
|
+
private
|
51
|
+
|
59
52
|
def get_account_consumer
|
53
|
+
# puts Oauth.consumer_key
|
54
|
+
# puts Oauth.consumer_secret
|
55
|
+
# puts Oauth.accounts_server_url
|
56
|
+
|
60
57
|
return @account_consumer if @account_consumer
|
61
|
-
|
62
|
-
|
58
|
+
|
59
|
+
# TODO: Accounts url must come form settings.
|
60
|
+
|
61
|
+
return @account_consumer = OAuth::Consumer.new(Oauth.consumer_key, Oauth.consumer_secret, {
|
62
|
+
:site => Oauth.accounts_server_url,
|
63
63
|
:scheme => :header,
|
64
64
|
:method => :get,
|
65
65
|
:request_token_path => "/oauth/request_token",
|
@@ -74,8 +74,16 @@ module KynetxAmApi
|
|
74
74
|
|
75
75
|
def get_api_consumer
|
76
76
|
return @api_consumer if @api_consumer
|
77
|
-
|
78
|
-
|
77
|
+
|
78
|
+
# TODO: Accounts url must come form settings.
|
79
|
+
|
80
|
+
# puts Oauth.consumer_key
|
81
|
+
# puts Oauth.consumer_secret
|
82
|
+
# puts Oauth.api_server_url
|
83
|
+
|
84
|
+
|
85
|
+
return @api_consumer = OAuth::Consumer.new(Oauth.consumer_key, Oauth.consumer_secret, {
|
86
|
+
:site => Oauth.api_server_url,
|
79
87
|
:scheme => :header,
|
80
88
|
:method => :get,
|
81
89
|
:request_token_path => "/oauth/request_token",
|
data/lib/kynetx_am_api/user.rb
CHANGED
@@ -1,40 +1,17 @@
|
|
1
1
|
module KynetxAmApi
|
2
|
-
#
|
3
|
-
# Simple wrapper to allow access to the OAuth user information. This also hold some basic user data like
|
4
|
-
# username, name and user id.
|
5
|
-
#
|
6
2
|
class User
|
7
|
-
# OAuth Request Token
|
8
3
|
attr_accessor :request_token
|
9
|
-
# OAuth Secret Token
|
10
4
|
attr_accessor :request_secret
|
11
|
-
# OAuth Verifieer
|
12
5
|
attr_accessor :oauth_verifier
|
13
|
-
# OAuth Access Token
|
14
6
|
attr_accessor :access_token
|
15
|
-
# OAuth Access Secret
|
16
7
|
attr_accessor :access_secret
|
17
|
-
# Kynetx User name
|
18
8
|
attr_accessor :username
|
19
|
-
# Kynetx User ID
|
20
9
|
attr_accessor :userid
|
21
|
-
# Full name of user
|
22
10
|
attr_accessor :name
|
23
|
-
# Current Application context.
|
24
11
|
attr_reader :current_application
|
25
12
|
|
26
|
-
|
27
|
-
#
|
28
|
-
# Accepts a hash that has the following entries.
|
29
|
-
# - :request_token
|
30
|
-
# - :request_secret
|
31
|
-
# - :oauth_verifier
|
32
|
-
# - :access_token
|
33
|
-
# - :access_secret
|
34
|
-
# - :username
|
35
|
-
# - :userid
|
36
|
-
# - :name
|
37
|
-
#
|
13
|
+
# attr :api
|
14
|
+
# attr :applications
|
38
15
|
|
39
16
|
def initialize(attributes)
|
40
17
|
@request_token = attributes[:request_token]
|
@@ -48,9 +25,7 @@ module KynetxAmApi
|
|
48
25
|
@current_applicaion = nil
|
49
26
|
end
|
50
27
|
|
51
|
-
|
52
|
-
# Returns the direct api to the Kynetx Application Manager.
|
53
|
-
#
|
28
|
+
|
54
29
|
def api
|
55
30
|
@api ||= KynetxAmApi::DirectApi.new({:access_token => @access_token, :access_secret => @access_secret})
|
56
31
|
return @api
|
@@ -59,12 +34,12 @@ module KynetxAmApi
|
|
59
34
|
#
|
60
35
|
# Read applications list
|
61
36
|
#
|
62
|
-
#
|
63
|
-
#
|
37
|
+
# :offset => Start in list (not implemented)
|
38
|
+
# :size => Number of application to list (not implemented)
|
64
39
|
#
|
65
40
|
# Returns a has with two keys
|
66
|
-
#
|
67
|
-
#
|
41
|
+
# "apps" => Array Off Hashes with :appid , :role, :name, :created
|
42
|
+
# "valid" => true
|
68
43
|
#
|
69
44
|
def applications(options = {})
|
70
45
|
@applications = api.get_applist if !@applications
|
@@ -72,18 +47,21 @@ module KynetxAmApi
|
|
72
47
|
end
|
73
48
|
|
74
49
|
#
|
75
|
-
#
|
76
|
-
#
|
50
|
+
# :application_id => application_id
|
51
|
+
# :version => Version of application to obtain
|
77
52
|
#
|
78
53
|
def find_application(options = {})
|
79
54
|
options[:version] ||= "development"
|
80
55
|
raise "Expecting :application_id" unless options[:application_id]
|
81
56
|
|
57
|
+
puts "Creating a new Application object."
|
82
58
|
if @current_application && @current_application.application_id != options[:application_id]
|
83
59
|
@current_application = KynetxAmApi::Application.new(self, options[:application_id], options[:version])
|
84
60
|
else
|
85
61
|
@current_application ||= KynetxAmApi::Application.new(self, options[:application_id], options[:version])
|
86
62
|
end
|
63
|
+
# rst = api.get_app_source(options[:application_id],options[:version], :krl);
|
64
|
+
# app.source = rst;
|
87
65
|
return @current_application
|
88
66
|
end
|
89
67
|
|
@@ -97,28 +75,17 @@ module KynetxAmApi
|
|
97
75
|
|
98
76
|
def duplicate_application(application_id)
|
99
77
|
old_app = KynetxAmApi::Application.new(self, application_id)
|
100
|
-
new_app = create_application(old_app.name
|
78
|
+
new_app = create_application(old_app.name, "")
|
101
79
|
new_app.krl = old_app.krl
|
102
80
|
return new_app
|
103
81
|
end
|
104
82
|
|
105
83
|
def owns_current?
|
84
|
+
puts "OWNER / CURRENT_APP: #{@current_application.name}"
|
106
85
|
return false unless @current_application
|
86
|
+
puts "ME: #{self.userid.to_i} OWNER: #{@current_application.owner["kynetxuserid"].to_i}"
|
107
87
|
return @current_application.owner["kynetxuserid"].to_i == self.userid.to_i
|
108
88
|
end
|
109
|
-
|
110
|
-
def to_h
|
111
|
-
return {
|
112
|
-
:access_secret => @access_secret,
|
113
|
-
:access_token => @access_token,
|
114
|
-
:request_token => @request_token,
|
115
|
-
:request_secret => @request_secret,
|
116
|
-
:oauth_verifier => @oauth_verifier,
|
117
|
-
:name => @name,
|
118
|
-
:userid => @userid,
|
119
|
-
:username => @username
|
120
|
-
}
|
121
|
-
end
|
122
89
|
|
123
90
|
|
124
91
|
end
|
data/lib/kynetx_am_api.rb
CHANGED
@@ -5,37 +5,37 @@ require File.dirname(__FILE__) + '/kynetx_am_api/application.rb'
|
|
5
5
|
|
6
6
|
|
7
7
|
DEFAULT_META = <<-KRL
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
8
|
+
meta {
|
9
|
+
name "<<NAME>>"
|
10
|
+
description <<
|
11
|
+
<<DESCRIPTION>>
|
12
|
+
>>
|
13
|
+
author ""
|
14
|
+
// Uncomment this line to require Markeplace purchase to use this app.
|
15
|
+
// authz require user
|
16
|
+
logging off
|
17
|
+
}
|
18
18
|
KRL
|
19
19
|
|
20
20
|
DEFAULT_GLOBAL = <<-KRL
|
21
|
-
|
21
|
+
global {
|
22
22
|
|
23
|
-
|
23
|
+
}
|
24
24
|
KRL
|
25
25
|
|
26
26
|
DEFAULT_DISPATCH = <<-KRL
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
dispatch {
|
28
|
+
// Some example dispatch domains
|
29
|
+
// www.exmple.com
|
30
|
+
// other.example.com
|
31
|
+
}
|
32
32
|
KRL
|
33
33
|
|
34
34
|
DEFAULT_RULE = <<-KRL
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
rule <<NAME>> is active {
|
36
|
+
select using "" setting ()
|
37
|
+
// pre { }
|
38
|
+
// notify("Hello World", "This is a sample rule.");
|
39
|
+
noop();
|
40
|
+
}
|
41
41
|
KRL
|