App42_Ruby_API 0.8.4
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 +7 -0
- data/.gitignore +21 -0
- data/App42_Ruby_API.gemspec +33 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/TODO.rb +3 -0
- data/lib/App42_Ruby_API.rb +232 -0
- data/lib/App42_Ruby_API/App42BadParameterException.rb +31 -0
- data/lib/App42_Ruby_API/App42Exception.rb +39 -0
- data/lib/App42_Ruby_API/App42LimitException.rb +15 -0
- data/lib/App42_Ruby_API/App42NotFoundException.rb +15 -0
- data/lib/App42_Ruby_API/App42Response.rb +13 -0
- data/lib/App42_Ruby_API/App42ResponseBuilder.rb +67 -0
- data/lib/App42_Ruby_API/App42SecurityException.rb +15 -0
- data/lib/App42_Ruby_API/version.rb +3 -0
- data/lib/connection/RESTConnection.rb +713 -0
- data/lib/email/Email.rb +51 -0
- data/lib/email/EmailMIME.rb +51 -0
- data/lib/email/EmailResponseBuilder.rb +76 -0
- data/lib/email/EmailService.rb +244 -0
- data/lib/gallery/Album.rb +56 -0
- data/lib/gallery/AlbumResponseBuilder.rb +168 -0
- data/lib/gallery/AlbumService.rb +337 -0
- data/lib/gallery/PhotoService.rb +591 -0
- data/lib/game/Game.rb +39 -0
- data/lib/game/GameResponseBuilder.rb +106 -0
- data/lib/game/GameService.rb +268 -0
- data/lib/game/Reward.rb +24 -0
- data/lib/game/RewardResponseBuilder.rb +85 -0
- data/lib/game/RewardService.rb +440 -0
- data/lib/game/ScoreBoardService.rb +433 -0
- data/lib/game/ScoreService.rb +157 -0
- data/lib/geo/Geo.rb +51 -0
- data/lib/geo/GeoPoint.rb +43 -0
- data/lib/geo/GeoResponseBuilder.rb +145 -0
- data/lib/geo/GeoService.rb +505 -0
- data/lib/imageProcessor/Image.rb +42 -0
- data/lib/imageProcessor/ImageProcessorResponseBuilder.rb +40 -0
- data/lib/imageProcessor/ImageProcessorService.rb +1054 -0
- data/lib/log/Log.rb +49 -0
- data/lib/log/LogResponseBuilder.rb +61 -0
- data/lib/log/LogService.rb +920 -0
- data/lib/message/Queue.rb +50 -0
- data/lib/message/QueueResponseBuilder.rb +64 -0
- data/lib/message/QueueService.rb +469 -0
- data/lib/push/DeviceType.rb +56 -0
- data/lib/push/PushNotification.rb +38 -0
- data/lib/push/PushNotificationResposneBuilder.rb +74 -0
- data/lib/push/PushNotificationService.rb +458 -0
- data/lib/recommend/PreferenceData.rb +25 -0
- data/lib/recommend/Recommender.rb +48 -0
- data/lib/recommend/RecommenderResponseBuilder.rb +70 -0
- data/lib/recommend/RecommenderService.rb +1092 -0
- data/lib/recommend/RecommenderSimilarity.rb +52 -0
- data/lib/review/Review.rb +38 -0
- data/lib/review/ReviewResponseBuilder.rb +76 -0
- data/lib/review/ReviewService.rb +590 -0
- data/lib/session/Session.rb +43 -0
- data/lib/session/SessionResponseBuilder.rb +70 -0
- data/lib/session/SessionService.rb +427 -0
- data/lib/shopping/Cart.rb +77 -0
- data/lib/shopping/CartResponseBuilder.rb +118 -0
- data/lib/shopping/CartService.rb +902 -0
- data/lib/shopping/Catalogue.rb +79 -0
- data/lib/shopping/CatalogueResponseBuilder.rb +170 -0
- data/lib/shopping/CatalogueService.rb +649 -0
- data/lib/shopping/ItemData.rb +29 -0
- data/lib/shopping/PaymentStatus.rb +60 -0
- data/lib/social/Social.rb +35 -0
- data/lib/social/SocialResponseBuilder.rb +38 -0
- data/lib/social/SocialService.rb +585 -0
- data/lib/storage/OrderByType.rb +29 -0
- data/lib/storage/Query.rb +39 -0
- data/lib/storage/QueryBuilder.rb +118 -0
- data/lib/storage/Storage.rb +45 -0
- data/lib/storage/StorageResponseBuilder.rb +86 -0
- data/lib/storage/StorageService.rb +775 -0
- data/lib/upload/Upload.rb +40 -0
- data/lib/upload/UploadFileType.rb +83 -0
- data/lib/upload/UploadResponseBuilder.rb +58 -0
- data/lib/upload/UploadService.rb +960 -0
- data/lib/user/User.rb +102 -0
- data/lib/user/UserResponseBuilder.rb +105 -0
- data/lib/user/UserService.rb +1209 -0
- data/lib/util/util.rb +244 -0
- data/question.rb +79 -0
- metadata +204 -0
@@ -0,0 +1,42 @@
|
|
1
|
+
# -----------------------------------------------------------------------
|
2
|
+
# Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
|
3
|
+
# -----------------------------------------------------------------------
|
4
|
+
|
5
|
+
require 'App42_Ruby_API/App42Response'
|
6
|
+
|
7
|
+
#
|
8
|
+
#
|
9
|
+
# This Image object is the value object which contains the properties of Image.
|
10
|
+
#
|
11
|
+
#
|
12
|
+
|
13
|
+
module App42
|
14
|
+
module ImageProcessor
|
15
|
+
class Image < App42Response
|
16
|
+
attr_accessor :name, :action, :originalImage, :convertedImage, :percentage, :width, :height, :x, :y, :originalImageTinyUrl, :convertedImageTinyUrl
|
17
|
+
|
18
|
+
@name
|
19
|
+
@action
|
20
|
+
@originalImage
|
21
|
+
@convertedImage
|
22
|
+
@percentage
|
23
|
+
@width
|
24
|
+
@height
|
25
|
+
@x
|
26
|
+
@y
|
27
|
+
@convertedImageTinyUrl
|
28
|
+
@originalImageTinyUrl
|
29
|
+
|
30
|
+
#
|
31
|
+
# Returns the Image Response in JSON format.
|
32
|
+
#
|
33
|
+
# @return the response in JSON format.
|
34
|
+
#
|
35
|
+
#
|
36
|
+
def to_s
|
37
|
+
return "Name : #{@name}" + "Action : #{@action}" + "originalImage : #{@originalImage}" + "convertedImage : #{@convertedImage}" + "percentage : #{@percentage}" + "width : #{@width}" + "height : #{@height}" + "x : #{@x}" + "y : #{@y}";
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# -----------------------------------------------------------------------
|
2
|
+
# Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
|
3
|
+
# -----------------------------------------------------------------------
|
4
|
+
|
5
|
+
require 'json/pure'
|
6
|
+
require 'App42_Ruby_API/App42ResponseBuilder'
|
7
|
+
require 'imageProcessor/Image'
|
8
|
+
|
9
|
+
module App42
|
10
|
+
module ImageProcessor
|
11
|
+
|
12
|
+
#
|
13
|
+
#
|
14
|
+
# ImageProcessResponseBuilder class converts the JSON response retrieved from
|
15
|
+
# the server to the value object i.e Image
|
16
|
+
#
|
17
|
+
#
|
18
|
+
class ImageProcessorResponseBuilder < App42ResponseBuilder
|
19
|
+
|
20
|
+
#
|
21
|
+
# Converts the response in JSON format to the value object i.e Image
|
22
|
+
#
|
23
|
+
# @param json
|
24
|
+
# - response in JSON format
|
25
|
+
#
|
26
|
+
# @return Image object filled with json data
|
27
|
+
#
|
28
|
+
#
|
29
|
+
def buildResponse(json)
|
30
|
+
imageJSONObj = getServiceJSONObject("image", json)
|
31
|
+
imageObj = Image.new
|
32
|
+
imageObj.strResponse=json
|
33
|
+
imageObj.isResponseSuccess= isResponseSuccess(json)
|
34
|
+
buildObjectFromJSONTree(imageObj, imageJSONObj);
|
35
|
+
return imageObj
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
@@ -0,0 +1,1054 @@
|
|
1
|
+
# -----------------------------------------------------------------------
|
2
|
+
# Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved.
|
3
|
+
# -----------------------------------------------------------------------
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'connection/RESTConnection'
|
7
|
+
require 'util/util'
|
8
|
+
require 'json/pure'
|
9
|
+
require 'App42_Ruby_API/App42Response'
|
10
|
+
require 'imageProcessor/ImageProcessorResponseBuilder'
|
11
|
+
require 'imageProcessor/Image'
|
12
|
+
require 'bigdecimal'
|
13
|
+
|
14
|
+
module App42
|
15
|
+
module ImageProcessor
|
16
|
+
#
|
17
|
+
# The ImageProcessor service is an Image utility service on the Cloud. Developers can
|
18
|
+
# upload files on the cloud and perform various Image Manipulation operations on the Uploaded
|
19
|
+
# Images e.g. resize, scale, thumbnail, crop etc. It is especially useful for Mobile Apps when
|
20
|
+
# they dont want to store Images locally and dont want to perform processor intensive operations.
|
21
|
+
# It is also useful for web applications who want to perform complex Image Operations
|
22
|
+
#
|
23
|
+
# @see Image
|
24
|
+
#
|
25
|
+
class ImageProcessorService
|
26
|
+
#
|
27
|
+
# this is a constructor that takes
|
28
|
+
#
|
29
|
+
# @param apiKey
|
30
|
+
# @param secretKey
|
31
|
+
# @param baseURL
|
32
|
+
#
|
33
|
+
def initialize(api_key, secret_key, base_url)
|
34
|
+
puts "Session Service->initialize"
|
35
|
+
@api_key = api_key
|
36
|
+
@secret_key = secret_key
|
37
|
+
@base_url = base_url
|
38
|
+
@resource = "image"
|
39
|
+
@version = "1.0"
|
40
|
+
end
|
41
|
+
|
42
|
+
#
|
43
|
+
# Resize image. Returns the original image url and converted image url.
|
44
|
+
# Images are stored on the cloud and can be accessed through the urls
|
45
|
+
# Resizing is done based on the width and height provided
|
46
|
+
#
|
47
|
+
# @param name
|
48
|
+
# - Name of the image to resize
|
49
|
+
# @param imagePath
|
50
|
+
# - Path of the local file to resize
|
51
|
+
# @param width
|
52
|
+
# - Width of the image to resize
|
53
|
+
# @param height
|
54
|
+
# - Height of the image to resize
|
55
|
+
#
|
56
|
+
# @return Image object containing urls for the original and converted images
|
57
|
+
#
|
58
|
+
# @raise App42Exception
|
59
|
+
#
|
60
|
+
|
61
|
+
def resize(name, imagePath, width, height)
|
62
|
+
puts "resize Called "
|
63
|
+
puts "Base url #{@base_url}"
|
64
|
+
response = nil
|
65
|
+
imageObj = nil
|
66
|
+
imageObj = Image.new()
|
67
|
+
util = Util.new
|
68
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
69
|
+
util.throwExceptionIfNullOrBlank(imagePath, "Image Path");
|
70
|
+
util.throwExceptionIfNullOrBlank(width, "Width");
|
71
|
+
util.throwExceptionIfNullOrBlank(height, "Height");
|
72
|
+
begin
|
73
|
+
file = File.new(imagePath,"rb")
|
74
|
+
ext = File.extname(file)
|
75
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
76
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
77
|
+
end
|
78
|
+
if File.file?(imagePath) == false
|
79
|
+
raise App42Exception.new(" File " + imagePath.to_s + " does not exist");
|
80
|
+
end
|
81
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
82
|
+
params = Hash.new
|
83
|
+
query_params = Hash.new
|
84
|
+
query_params = {
|
85
|
+
'apiKey'=> @api_key,
|
86
|
+
'version' => @version,
|
87
|
+
'timeStamp' => util.get_timestamp_utc
|
88
|
+
}
|
89
|
+
params = query_params.clone
|
90
|
+
post_params = Hash.new
|
91
|
+
post_params.store("name", name)
|
92
|
+
post_params.store("width", width.to_s + "")
|
93
|
+
post_params.store("height", height.to_s + "")
|
94
|
+
params = params.merge(post_params)
|
95
|
+
signature = util.sign(@secret_key, params)
|
96
|
+
resource_url = "#{@version}/#{@resource}/resize"
|
97
|
+
response = connection.imageMultipart(signature, resource_url, query_params, params, imagePath)
|
98
|
+
image = ImageProcessorResponseBuilder.new
|
99
|
+
imageObj = image.buildResponse(response)
|
100
|
+
rescue App42Exception =>e
|
101
|
+
raise e
|
102
|
+
rescue Exception => e
|
103
|
+
raise App42Exception.new(e)
|
104
|
+
end
|
105
|
+
return imageObj
|
106
|
+
end
|
107
|
+
|
108
|
+
#
|
109
|
+
# Resize image via Stream. Returns the original image url and converted image url.
|
110
|
+
# Images are stored on the cloud and can be accessed through the urls
|
111
|
+
# Resizing is done based on the width and height provided
|
112
|
+
#
|
113
|
+
# @param name
|
114
|
+
# - Name of the image to resize
|
115
|
+
# @param inputStream
|
116
|
+
# - InputStream of the local file to resize
|
117
|
+
# @param width
|
118
|
+
# - Width of the image to resize
|
119
|
+
# @param height
|
120
|
+
# - Height of the image to resize
|
121
|
+
#
|
122
|
+
# @return Image object containing urls for the original and converted images
|
123
|
+
#
|
124
|
+
# @raise App42Exception
|
125
|
+
#
|
126
|
+
|
127
|
+
def resize_stream(name, imagePath, width, height)
|
128
|
+
puts "resize stream Called "
|
129
|
+
puts "Base url #{@base_url}"
|
130
|
+
response = nil
|
131
|
+
imageObj = nil
|
132
|
+
imageObj = Image.new()
|
133
|
+
util = Util.new
|
134
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
135
|
+
util.throwExceptionIfNotValidImageExtension(name, "Name");
|
136
|
+
util.throwExceptionIfNullOrBlank(width, "Width");
|
137
|
+
util.throwExceptionIfNullOrBlank(height, "Height");
|
138
|
+
begin
|
139
|
+
file = File.new(imagePath,"rb")
|
140
|
+
ext = File.extname(file)
|
141
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
142
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
143
|
+
end
|
144
|
+
if File.file?(imagePath) == false
|
145
|
+
raise App42Exception.new(" File " + imagePath.to_s + " does not exist");
|
146
|
+
end
|
147
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
148
|
+
query_params = Hash.new
|
149
|
+
params = {
|
150
|
+
'apiKey'=> @api_key,
|
151
|
+
'version' => @version,
|
152
|
+
'timeStamp' => util.get_timestamp_utc,
|
153
|
+
}
|
154
|
+
query_params = params.clone
|
155
|
+
params.store("name", name)
|
156
|
+
params.store("width", width.to_s + "")
|
157
|
+
params.store("height", height.to_s + "")
|
158
|
+
signature = util.sign(@secret_key, params)
|
159
|
+
resource_url = "#{@version}/#{@resource}/resize"
|
160
|
+
response = connection.imageMultipartStream(signature, resource_url, query_params, params, imagePath)
|
161
|
+
image = ImageProcessorResponseBuilder.new
|
162
|
+
imageObj = image.buildResponse(response)
|
163
|
+
rescue App42Exception =>e
|
164
|
+
raise e
|
165
|
+
rescue Exception => e
|
166
|
+
raise App42Exception.new(e)
|
167
|
+
end
|
168
|
+
return imageObj
|
169
|
+
end
|
170
|
+
|
171
|
+
#
|
172
|
+
# Creates a thumbnail of the image. There is a difference between thumbnail and resize
|
173
|
+
# The thumbnail operation is optimized for speed, it removes information of the image which is not necessary for a
|
174
|
+
# thumbnail e.g header information. Returns the original image url and converted image url.
|
175
|
+
# Images are stored on the cloud and can be accessed through the urls
|
176
|
+
# Resizing is done based on the width and height provided
|
177
|
+
#
|
178
|
+
# @param name
|
179
|
+
# - Name of the image file for which thumbnail has to be created
|
180
|
+
# @param imagePath
|
181
|
+
# - Path of the local file whose thumbnail has to be created
|
182
|
+
# @param width
|
183
|
+
# - Width of the image for thumbnail
|
184
|
+
# @param height
|
185
|
+
# - Height of the image for thumbnail
|
186
|
+
#
|
187
|
+
# @return Image object containing urls for the original and converted images
|
188
|
+
#
|
189
|
+
# @raise App42Exception
|
190
|
+
#
|
191
|
+
|
192
|
+
def thumbnail(name, imagePath, width, height)
|
193
|
+
puts "thumbnail Called "
|
194
|
+
puts "Base url #{@base_url}"
|
195
|
+
response = nil
|
196
|
+
imageObj = nil
|
197
|
+
imageObj = Image.new()
|
198
|
+
util = Util.new
|
199
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
200
|
+
util.throwExceptionIfNullOrBlank(imagePath, "Image Path");
|
201
|
+
util.throwExceptionIfNullOrBlank(width, "Width");
|
202
|
+
util.throwExceptionIfNullOrBlank(height, "Height");
|
203
|
+
begin
|
204
|
+
file = File.new(imagePath,"rb")
|
205
|
+
ext = File.extname(file)
|
206
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
207
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
208
|
+
end
|
209
|
+
if File.file?(imagePath) == false
|
210
|
+
raise App42Exception.new(" File " + imagePath.to_s + " does not exist");
|
211
|
+
end
|
212
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
213
|
+
query_params = Hash.new
|
214
|
+
params = {
|
215
|
+
'apiKey'=> @api_key,
|
216
|
+
'version' => @version,
|
217
|
+
'timeStamp' => util.get_timestamp_utc,
|
218
|
+
}
|
219
|
+
query_params = params.clone
|
220
|
+
params.store("name", name)
|
221
|
+
params.store("width", width.to_s + "")
|
222
|
+
params.store("height", height.to_s + "")
|
223
|
+
signature = util.sign(@secret_key, params)
|
224
|
+
resource_url = "#{@version}/#{@resource}/thumbnail"
|
225
|
+
response = connection.imageMultipart(signature, resource_url, query_params, params, imagePath)
|
226
|
+
image = ImageProcessorResponseBuilder.new
|
227
|
+
imageObj = image.buildResponse(response)
|
228
|
+
rescue App42Exception =>e
|
229
|
+
raise e
|
230
|
+
rescue Exception => e
|
231
|
+
raise App42Exception.new(e)
|
232
|
+
end
|
233
|
+
return imageObj
|
234
|
+
end
|
235
|
+
|
236
|
+
#
|
237
|
+
# Creates a thumbnail of the image via Stream. There is a difference between thumbnail and resize
|
238
|
+
# The thumbnail operation is optimized for speed, it removes information of the image which is not necessary for a
|
239
|
+
# thumbnail e.g header information. Returns the original image url and converted image url.
|
240
|
+
# Images are stored on the cloud and can be accessed through the urls
|
241
|
+
# Resizing is done based on the width and height provided
|
242
|
+
#
|
243
|
+
# @param name
|
244
|
+
# - Name of the image file for which thumbnail has to be created
|
245
|
+
# @param inputStream
|
246
|
+
# - InputStream of the local file whose thumbnail has to be created
|
247
|
+
# @param width
|
248
|
+
# - Width of the image for thumbnail
|
249
|
+
# @param height
|
250
|
+
# - Height of the image for thumbnail
|
251
|
+
#
|
252
|
+
# @return Image object containing urls for the original and converted images
|
253
|
+
#
|
254
|
+
# @raise App42Exception
|
255
|
+
#
|
256
|
+
|
257
|
+
def thumbnail_stream(name, imagePath, width, height)
|
258
|
+
puts "thumbnail Called "
|
259
|
+
puts "Base url #{@base_url}"
|
260
|
+
response = nil
|
261
|
+
imageObj = nil
|
262
|
+
imageObj = Image.new()
|
263
|
+
util = Util.new
|
264
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
265
|
+
util.throwExceptionIfNotValidImageExtension(name, "Name");
|
266
|
+
util.throwExceptionIfNullOrBlank(width, "Width");
|
267
|
+
util.throwExceptionIfNullOrBlank(height, "Height");
|
268
|
+
begin
|
269
|
+
file = File.new(imagePath,"rb")
|
270
|
+
ext = File.extname(file)
|
271
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
272
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
273
|
+
end
|
274
|
+
if File.file?(imagePath) == false
|
275
|
+
raise App42Exception.new(" File " + imagePath.to_s + " does not exist");
|
276
|
+
end
|
277
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
278
|
+
query_params = Hash.new
|
279
|
+
params = {
|
280
|
+
'apiKey'=> @api_key,
|
281
|
+
'version' => @version,
|
282
|
+
'timeStamp' => util.get_timestamp_utc,
|
283
|
+
}
|
284
|
+
query_params = params.clone
|
285
|
+
params.store("name", name)
|
286
|
+
params.store("width", width.to_s + "")
|
287
|
+
params.store("height", height.to_s + "")
|
288
|
+
signature = util.sign(@secret_key, params)
|
289
|
+
resource_url = "#{@version}/#{@resource}/thumbnail"
|
290
|
+
response = connection.imageMultipartStream(signature, resource_url, query_params, params, imagePath)
|
291
|
+
image = ImageProcessorResponseBuilder.new
|
292
|
+
imageObj = image.buildResponse(response)
|
293
|
+
rescue App42Exception =>e
|
294
|
+
raise e
|
295
|
+
rescue Exception => e
|
296
|
+
raise App42Exception.new(e)
|
297
|
+
end
|
298
|
+
return imageObj
|
299
|
+
end
|
300
|
+
|
301
|
+
#
|
302
|
+
# Scales the image based on width and height. Returns the original image url and converted image url.
|
303
|
+
# Images are stored in the cloud and can be accessed through the urls
|
304
|
+
# Resizing is done based on the width and height provided
|
305
|
+
#
|
306
|
+
# @param name
|
307
|
+
# - Name of the image to scale
|
308
|
+
# @param imagePath
|
309
|
+
# - Path of the local file to scale
|
310
|
+
# @param width
|
311
|
+
# - Width of the image to scale
|
312
|
+
# @param height
|
313
|
+
# - Height of the image to scale
|
314
|
+
#
|
315
|
+
# @return Image object containing urls for the original and converted images
|
316
|
+
#
|
317
|
+
# @raise App42Exception
|
318
|
+
#
|
319
|
+
|
320
|
+
def scale(name, imagePath, width, height)
|
321
|
+
puts "scale Called "
|
322
|
+
puts "Base url #{@base_url}"
|
323
|
+
response = nil
|
324
|
+
imageObj = nil
|
325
|
+
imageObj = Image.new()
|
326
|
+
util = Util.new
|
327
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
328
|
+
util.throwExceptionIfNullOrBlank(imagePath, "Image Path");
|
329
|
+
util.throwExceptionIfNullOrBlank(width, "Width");
|
330
|
+
util.throwExceptionIfNullOrBlank(height, "Height");
|
331
|
+
begin
|
332
|
+
file = File.new(imagePath,"rb")
|
333
|
+
ext = File.extname(file)
|
334
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
335
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
336
|
+
end
|
337
|
+
if File.file?(imagePath) == false
|
338
|
+
raise App42Exception.new(" File " + imagePath.to_s + " does not exist");
|
339
|
+
end
|
340
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
341
|
+
query_params = Hash.new
|
342
|
+
params = {
|
343
|
+
'apiKey'=> @api_key,
|
344
|
+
'version' => @version,
|
345
|
+
'timeStamp' => util.get_timestamp_utc,
|
346
|
+
}
|
347
|
+
query_params = params.clone
|
348
|
+
params.store("name", name)
|
349
|
+
params.store("width", (width.to_i).to_s + "")
|
350
|
+
params.store("height", (height.to_i).to_s + "")
|
351
|
+
signature = util.sign(@secret_key, params)
|
352
|
+
resource_url = "#{@version}/#{@resource}/scale"
|
353
|
+
response = connection.imageMultipart(signature, resource_url, query_params, params, imagePath)
|
354
|
+
image = ImageProcessorResponseBuilder.new
|
355
|
+
imageObj = image.buildResponse(response)
|
356
|
+
rescue App42Exception =>e
|
357
|
+
raise e
|
358
|
+
rescue Exception => e
|
359
|
+
raise App42Exception.new(e)
|
360
|
+
end
|
361
|
+
return imageObj
|
362
|
+
end
|
363
|
+
|
364
|
+
#
|
365
|
+
# Scales the image based on width and height via Stream. Returns the original image url and converted image url.
|
366
|
+
# Images are stored in the cloud and can be accessed through the urls
|
367
|
+
# Resizing is done based on the width and height provided
|
368
|
+
#
|
369
|
+
# @param name
|
370
|
+
# - Name of the image to scale
|
371
|
+
# @param inputStream
|
372
|
+
# - InputStream of the local file to scale
|
373
|
+
# @param width
|
374
|
+
# - Width of the image to scale
|
375
|
+
# @param height
|
376
|
+
# - Height of the image to scale
|
377
|
+
#
|
378
|
+
# @return Image object containing urls for the original and converted images
|
379
|
+
#
|
380
|
+
# @raise App42Exception
|
381
|
+
#
|
382
|
+
|
383
|
+
def scale_stream(name, imagePath, width, height)
|
384
|
+
puts "scale Called "
|
385
|
+
puts "Base url #{@base_url}"
|
386
|
+
response = nil
|
387
|
+
imageObj = nil
|
388
|
+
imageObj = Image.new()
|
389
|
+
util = Util.new
|
390
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
391
|
+
util.throwExceptionIfNotValidImageExtension(name, "Name");
|
392
|
+
util.throwExceptionIfNullOrBlank(width, "Width");
|
393
|
+
util.throwExceptionIfNullOrBlank(height, "Height");
|
394
|
+
begin
|
395
|
+
file = File.new(imagePath,"rb")
|
396
|
+
ext = File.extname(file)
|
397
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
398
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
399
|
+
end
|
400
|
+
if File.file?(imagePath) == false
|
401
|
+
raise App42Exception.new(" File " + imagePath.to_s + " does not exist");
|
402
|
+
end
|
403
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
404
|
+
query_params = Hash.new
|
405
|
+
params = {
|
406
|
+
'apiKey'=> @api_key,
|
407
|
+
'version' => @version,
|
408
|
+
'timeStamp' => util.get_timestamp_utc,
|
409
|
+
}
|
410
|
+
query_params = params.clone
|
411
|
+
params.store("name", name)
|
412
|
+
params.store("width", (width.to_i).to_s + "")
|
413
|
+
params.store("height", (height.to_i).to_s + "")
|
414
|
+
signature = util.sign(@secret_key, params)
|
415
|
+
resource_url = "#{@version}/#{@resource}/scale"
|
416
|
+
response = connection.imageMultipartStream(signature, resource_url, query_params, params, imagePath)
|
417
|
+
image = ImageProcessorResponseBuilder.new
|
418
|
+
imageObj = image.buildResponse(response)
|
419
|
+
rescue App42Exception =>e
|
420
|
+
raise e
|
421
|
+
rescue Exception => e
|
422
|
+
raise App42Exception.new(e)
|
423
|
+
end
|
424
|
+
return imageObj
|
425
|
+
end
|
426
|
+
|
427
|
+
#
|
428
|
+
# Crops image based on width, height and x, y coordinates. Returns the original image url and converted image url.
|
429
|
+
# Images are stored in the cloud and can be accessed through the urls
|
430
|
+
# Resizing is done based on the width and height provided
|
431
|
+
#
|
432
|
+
# @param name
|
433
|
+
# - Name of the image to crop
|
434
|
+
# @param imagePath
|
435
|
+
# - Path of the local file to crop
|
436
|
+
# @param width
|
437
|
+
# - Width of the image to crop
|
438
|
+
# @param height
|
439
|
+
# - Height of the image to crop
|
440
|
+
# @param x
|
441
|
+
# - Coordinate X
|
442
|
+
# @param y
|
443
|
+
# - Coordinate Y
|
444
|
+
#
|
445
|
+
# @return Image object containing urls for the original and converted images
|
446
|
+
#
|
447
|
+
# @raise App42Exception
|
448
|
+
#
|
449
|
+
|
450
|
+
def crop(name, imagePath, width, height, x, y)
|
451
|
+
puts "crop Called "
|
452
|
+
puts "Base url #{@base_url}"
|
453
|
+
response = nil
|
454
|
+
imageObj = nil
|
455
|
+
imageObj = Image.new()
|
456
|
+
util = Util.new
|
457
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
458
|
+
util.throwExceptionIfNullOrBlank(imagePath, "Image Path");
|
459
|
+
util.throwExceptionIfNullOrBlank(width, "Width");
|
460
|
+
util.throwExceptionIfNullOrBlank(height, "Height");
|
461
|
+
util.throwExceptionIfNullOrBlank(x, "x");
|
462
|
+
util.throwExceptionIfNullOrBlank(y, "y");
|
463
|
+
begin
|
464
|
+
file = File.new(imagePath,"rb")
|
465
|
+
ext = File.extname(file)
|
466
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
467
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
468
|
+
end
|
469
|
+
if File.file?(imagePath) == false
|
470
|
+
raise App42Exception.new(" File " + imagePath.to_s + " does not exist");
|
471
|
+
end
|
472
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
473
|
+
query_params = Hash.new
|
474
|
+
params = {
|
475
|
+
'apiKey'=> @api_key,
|
476
|
+
'version' => @version,
|
477
|
+
'timeStamp' => util.get_timestamp_utc,
|
478
|
+
}
|
479
|
+
query_params = params.clone
|
480
|
+
params.store("name", name)
|
481
|
+
params.store("width", (width.to_i).to_s + "")
|
482
|
+
params.store("height", (height.to_i).to_s + "")
|
483
|
+
params.store("x", (x.to_i).to_s + "")
|
484
|
+
params.store("y", (y.to_i).to_s + "")
|
485
|
+
signature = util.sign(@secret_key, params)
|
486
|
+
resource_url = "#{@version}/#{@resource}/crop"
|
487
|
+
response = connection.imageMultipart(signature, resource_url, query_params, params, imagePath)
|
488
|
+
image = ImageProcessorResponseBuilder.new
|
489
|
+
imageObj = image.buildResponse(response)
|
490
|
+
rescue App42Exception =>e
|
491
|
+
raise e
|
492
|
+
rescue Exception => e
|
493
|
+
raise App42Exception.new(e)
|
494
|
+
end
|
495
|
+
return imageObj
|
496
|
+
end
|
497
|
+
|
498
|
+
#
|
499
|
+
# Crops image based on width, height and x, y coordinates via Stream. Returns the original image url and converted image url.
|
500
|
+
# Images are stored in the cloud and can be accessed through the urls
|
501
|
+
# Resizing is done based on the width and height provided
|
502
|
+
#
|
503
|
+
# @param name
|
504
|
+
# - Name of the image to crop
|
505
|
+
# @param inputStream
|
506
|
+
# - InputStream of the local file to crop
|
507
|
+
# @param width
|
508
|
+
# - Width of the image to crop
|
509
|
+
# @param height
|
510
|
+
# - Height of the image to crop
|
511
|
+
# @param x
|
512
|
+
# - Coordinate X
|
513
|
+
# @param y
|
514
|
+
# - Coordinate Y
|
515
|
+
#
|
516
|
+
# @return Image object containing urls for the original and converted images
|
517
|
+
#
|
518
|
+
# @raise App42Exception
|
519
|
+
#
|
520
|
+
|
521
|
+
def crop_stream(name, imagePath, width, height, x, y)
|
522
|
+
puts "crop Called "
|
523
|
+
puts "Base url #{@base_url}"
|
524
|
+
response = nil
|
525
|
+
imageObj = nil
|
526
|
+
imageObj = Image.new()
|
527
|
+
util = Util.new
|
528
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
529
|
+
util.throwExceptionIfNotValidImageExtension(name, "Name");
|
530
|
+
util.throwExceptionIfNullOrBlank(width, "Width");
|
531
|
+
util.throwExceptionIfNullOrBlank(height, "Height");
|
532
|
+
util.throwExceptionIfNullOrBlank(x, "x");
|
533
|
+
util.throwExceptionIfNullOrBlank(y, "y");
|
534
|
+
begin
|
535
|
+
file = File.new(imagePath,"rb")
|
536
|
+
ext = File.extname(file)
|
537
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
538
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
539
|
+
end
|
540
|
+
if File.file?(imagePath) == false
|
541
|
+
raise App42Exception.new(" File " + imagePath.to_s + " does not exist");
|
542
|
+
end
|
543
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
544
|
+
query_params = Hash.new
|
545
|
+
params = {
|
546
|
+
'apiKey'=> @api_key,
|
547
|
+
'version' => @version,
|
548
|
+
'timeStamp' => util.get_timestamp_utc,
|
549
|
+
}
|
550
|
+
query_params = params.clone
|
551
|
+
params.store("name", name)
|
552
|
+
params.store("width", (width.to_i).to_s + "")
|
553
|
+
params.store("height", (height.to_i).to_s + "")
|
554
|
+
params.store("x", (x.to_i).to_s + "")
|
555
|
+
params.store("y", (y.to_i).to_s + "")
|
556
|
+
signature = util.sign(@secret_key, params)
|
557
|
+
resource_url = "#{@version}/#{@resource}/crop"
|
558
|
+
response = connection.imageMultipartStream(signature, resource_url, query_params, params, imagePath)
|
559
|
+
image = ImageProcessorResponseBuilder.new
|
560
|
+
imageObj = image.buildResponse(response)
|
561
|
+
rescue App42Exception =>e
|
562
|
+
raise e
|
563
|
+
rescue Exception => e
|
564
|
+
raise App42Exception.new(e)
|
565
|
+
end
|
566
|
+
return imageObj
|
567
|
+
end
|
568
|
+
|
569
|
+
#
|
570
|
+
# Resize image by Percentage. Returns the original image url and converted image url.
|
571
|
+
# Images are stored in the cloud and can be accessed through the urls
|
572
|
+
# Resizing is done based on the width and height provided
|
573
|
+
#
|
574
|
+
# @param name
|
575
|
+
# - Name of the image to resize
|
576
|
+
# @param imagePath
|
577
|
+
# - Path of the local file to resize
|
578
|
+
# @param percentage
|
579
|
+
# - Percentage to which image has to be resized
|
580
|
+
#
|
581
|
+
# @return Image object containing urls for the original and converted images
|
582
|
+
#
|
583
|
+
# @raise App42Exception
|
584
|
+
#
|
585
|
+
|
586
|
+
def resize_by_percentage(name, imagePath, percentage)
|
587
|
+
puts "resizeByPercentage Called "
|
588
|
+
puts "Base url #{@base_url}"
|
589
|
+
response = nil
|
590
|
+
imageObj = nil
|
591
|
+
imageObj = Image.new()
|
592
|
+
util = Util.new
|
593
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
594
|
+
util.throwExceptionIfNullOrBlank(imagePath, "Image Path");
|
595
|
+
util.throwExceptionIfNullOrBlank(percentage, "Percentage");
|
596
|
+
begin
|
597
|
+
file = File.new(imagePath,"rb")
|
598
|
+
ext = File.extname(file)
|
599
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
600
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
601
|
+
end
|
602
|
+
if File.file?(imagePath) == false
|
603
|
+
raise App42Exception.new("File " + imagePath.to_s + " does not exist");
|
604
|
+
end
|
605
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
606
|
+
query_params = Hash.new
|
607
|
+
params = {
|
608
|
+
'apiKey'=> @api_key,
|
609
|
+
'version' => @version,
|
610
|
+
'timeStamp' => util.get_timestamp_utc,
|
611
|
+
}
|
612
|
+
query_params = params.clone
|
613
|
+
params.store("name", name)
|
614
|
+
params.store("percentage", (percentage.to_f).to_s + "")
|
615
|
+
signature = util.sign(@secret_key, params)
|
616
|
+
resource_url = "#{@version}/#{@resource}/resizePercentage"
|
617
|
+
response = connection.imageMultipart(signature, resource_url, query_params, params, imagePath)
|
618
|
+
image = ImageProcessorResponseBuilder.new
|
619
|
+
imageObj = image.buildResponse(response)
|
620
|
+
rescue App42Exception =>e
|
621
|
+
raise e
|
622
|
+
rescue Exception => e
|
623
|
+
raise App42Exception.new(e)
|
624
|
+
end
|
625
|
+
return imageObj
|
626
|
+
end
|
627
|
+
|
628
|
+
#
|
629
|
+
# Resize image by Percentage via Stream. Returns the original image url and converted image url.
|
630
|
+
# Images are stored in the cloud and can be accessed through the urls
|
631
|
+
# Resizing is done based on the width and height provided
|
632
|
+
#
|
633
|
+
# @param name
|
634
|
+
# - Name of the image to resize
|
635
|
+
# @param inputStream
|
636
|
+
# - InputStream of the local file to resize
|
637
|
+
# @param percentage
|
638
|
+
# - Percentage to which image has to be resized
|
639
|
+
#
|
640
|
+
# @return Image object containing urls for the original and converted images
|
641
|
+
#
|
642
|
+
# @raise App42Exception
|
643
|
+
#
|
644
|
+
|
645
|
+
def resize_by_percentage_by_stream(name, imagePath, percentage)
|
646
|
+
puts "resizeByPercentage Called "
|
647
|
+
puts "Base url #{@base_url}"
|
648
|
+
response = nil
|
649
|
+
imageObj = nil
|
650
|
+
imageObj = Image.new()
|
651
|
+
util = Util.new
|
652
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
653
|
+
util.throwExceptionIfNotValidImageExtension(name, "Name");
|
654
|
+
util.throwExceptionIfNullOrBlank(percentage, "Percentage");
|
655
|
+
begin
|
656
|
+
file = File.new(imagePath,"rb")
|
657
|
+
ext = File.extname(file)
|
658
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
659
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
660
|
+
end
|
661
|
+
if File.file?(imagePath) == false
|
662
|
+
raise App42Exception.new("File " + imagePath.to_s + " does not exist");
|
663
|
+
end
|
664
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
665
|
+
query_params = Hash.new
|
666
|
+
params = {
|
667
|
+
'apiKey'=> @api_key,
|
668
|
+
'version' => @version,
|
669
|
+
'timeStamp' => util.get_timestamp_utc,
|
670
|
+
}
|
671
|
+
query_params = params.clone
|
672
|
+
params.store("name", name)
|
673
|
+
params.store("percentage", (percentage.to_f).to_s + "")
|
674
|
+
signature = util.sign(@secret_key, params)
|
675
|
+
resource_url = "#{@version}/#{@resource}/resizePercentage"
|
676
|
+
response = connection.imageMultipartStream(signature, resource_url, query_params, params, imagePath)
|
677
|
+
image = ImageProcessorResponseBuilder.new
|
678
|
+
imageObj = image.buildResponse(response)
|
679
|
+
rescue App42Exception =>e
|
680
|
+
raise e
|
681
|
+
rescue Exception => e
|
682
|
+
raise App42Exception.new(e)
|
683
|
+
end
|
684
|
+
return imageObj
|
685
|
+
end
|
686
|
+
|
687
|
+
#
|
688
|
+
# Creates a thumbnail of the image by Percentage. There is a difference between thumbnail and resize
|
689
|
+
# The thumbnail operation is optimized for speed removes information of the image which is not necessary for a
|
690
|
+
# thumbnail to reduce size e.g header information. Returns the original image url and converted image url.
|
691
|
+
# Images are stored in the cloud and can be accessed through the urls
|
692
|
+
# Resizing is done based on the width and height provided
|
693
|
+
#
|
694
|
+
# @param name
|
695
|
+
# - Name of the image file for which thumbnail has to be created
|
696
|
+
# @param imagePath
|
697
|
+
# - Path of the local file whose thumbnail has to be created
|
698
|
+
# @param percentage
|
699
|
+
# - Percentage for thumbnail
|
700
|
+
#
|
701
|
+
# @return Image object containing urls for the original and converted images
|
702
|
+
#
|
703
|
+
# @raise App42Exception
|
704
|
+
#
|
705
|
+
|
706
|
+
def thumbnail_by_percentage(name, imagePath, percentage)
|
707
|
+
puts "thumbnailByPercentage Called "
|
708
|
+
puts "Base url #{@base_url}"
|
709
|
+
response = nil
|
710
|
+
imageObj = nil
|
711
|
+
imageObj = Image.new()
|
712
|
+
util = Util.new
|
713
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
714
|
+
util.throwExceptionIfNullOrBlank(imagePath, "Image Path");
|
715
|
+
util.throwExceptionIfNullOrBlank(percentage, "Percentage");
|
716
|
+
begin
|
717
|
+
file = File.new(imagePath,"rb")
|
718
|
+
ext = File.extname(file)
|
719
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
720
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
721
|
+
end
|
722
|
+
if File.file?(imagePath) == false
|
723
|
+
raise App42Exception.new(" File " + imagePath.to_s + " does not exist");
|
724
|
+
end
|
725
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
726
|
+
params = Hash.new
|
727
|
+
query_params = Hash.new
|
728
|
+
query_params = {
|
729
|
+
'apiKey'=> @api_key,
|
730
|
+
'version' => @version,
|
731
|
+
'timeStamp' => util.get_timestamp_utc,
|
732
|
+
}
|
733
|
+
params = query_params.clone
|
734
|
+
post_params = Hash.new
|
735
|
+
post_params.store("name", name)
|
736
|
+
post_params.store("percentage", (percentage.to_f).to_s + "")
|
737
|
+
params = params.merge(post_params)
|
738
|
+
signature = util.sign(@secret_key, params)
|
739
|
+
resource_url = "#{@version}/#{@resource}/thumbnailPercentage"
|
740
|
+
response = connection.imageMultipart(signature, resource_url, query_params, params, imagePath)
|
741
|
+
image = ImageProcessorResponseBuilder.new
|
742
|
+
imageObj = image.buildResponse(response)
|
743
|
+
rescue App42Exception =>e
|
744
|
+
raise e
|
745
|
+
rescue Exception => e
|
746
|
+
raise App42Exception.new(e)
|
747
|
+
end
|
748
|
+
return imageObj
|
749
|
+
end
|
750
|
+
|
751
|
+
#
|
752
|
+
# Creates a thumbnail of the image by Percentage via Stream. There is a difference between thumbnail and resize
|
753
|
+
# The thumbnail operation is optimized for speed removes information of the image which is not necessary for a
|
754
|
+
# thumbnail to reduce size e.g header information. Returns the original image url and converted image url.
|
755
|
+
# Images are stored in the cloud and can be accessed through the urls
|
756
|
+
# Resizing is done based on the width and height provided
|
757
|
+
#
|
758
|
+
# @param name
|
759
|
+
# - Name of the image file for which thumbnail has to be created
|
760
|
+
# @param inputStream
|
761
|
+
# - InputStream of the local file whose thumbnail has to be created
|
762
|
+
# @param percentage
|
763
|
+
# - Percentage for thumbnail
|
764
|
+
#
|
765
|
+
# @return Image object containing urls for the original and converted images
|
766
|
+
#
|
767
|
+
# @raise App42Exception
|
768
|
+
#
|
769
|
+
|
770
|
+
def thumbnail_by_percentage_stream(name, imagePath, percentage)
|
771
|
+
puts "thumbnailByPercentage Called "
|
772
|
+
puts "Base url #{@base_url}"
|
773
|
+
response = nil
|
774
|
+
imageObj = nil
|
775
|
+
imageObj = Image.new()
|
776
|
+
util = Util.new
|
777
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
778
|
+
util.throwExceptionIfNotValidImageExtension(name, "Name");
|
779
|
+
util.throwExceptionIfNullOrBlank(percentage, "Percentage");
|
780
|
+
begin
|
781
|
+
file = File.new(imagePath,"rb")
|
782
|
+
ext = File.extname(file)
|
783
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
784
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
785
|
+
end
|
786
|
+
if File.file?(imagePath) == false
|
787
|
+
raise App42Exception.new(" File " + imagePath.to_s + " does not exist");
|
788
|
+
end
|
789
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
790
|
+
query_params = Hash.new
|
791
|
+
params = {
|
792
|
+
'apiKey'=> @api_key,
|
793
|
+
'version' => @version,
|
794
|
+
'timeStamp' => util.get_timestamp_utc,
|
795
|
+
}
|
796
|
+
query_params = params.clone
|
797
|
+
params.store("name", name)
|
798
|
+
params.store("percentage", (percentage.to_f).to_s + "")
|
799
|
+
signature = util.sign(@secret_key, params)
|
800
|
+
resource_url = "#{@version}/#{@resource}/thumbnailPercentage"
|
801
|
+
response = connection.imageMultipartStream(signature, resource_url, query_params, params, imagePath)
|
802
|
+
image = ImageProcessorResponseBuilder.new
|
803
|
+
imageObj = image.buildResponse(response)
|
804
|
+
rescue App42Exception =>e
|
805
|
+
raise e
|
806
|
+
rescue Exception => e
|
807
|
+
raise App42Exception.new(e)
|
808
|
+
end
|
809
|
+
return imageObj
|
810
|
+
end
|
811
|
+
|
812
|
+
#
|
813
|
+
# Scales the image by Percentage. Returns the original image url and converted image url.
|
814
|
+
# Images are stored in the cloud and can be accessed through the urls
|
815
|
+
# Resizing is done based on the width and height provided
|
816
|
+
#
|
817
|
+
# @param name
|
818
|
+
# - Name of the image file to scale
|
819
|
+
# @param imagePath
|
820
|
+
# - Path of the local file to scale
|
821
|
+
# @param percentage
|
822
|
+
# - Percentage to which image has to be scaled
|
823
|
+
#
|
824
|
+
# @return Image object containing urls for the original and converted images
|
825
|
+
#
|
826
|
+
# @raise App42Exception
|
827
|
+
#
|
828
|
+
|
829
|
+
def scale_by_percentage(name, imagePath, percentage)
|
830
|
+
puts "scaleByPercentage Called "
|
831
|
+
puts "Base url #{@base_url}"
|
832
|
+
response = nil
|
833
|
+
imageObj = nil
|
834
|
+
imageObj = Image.new()
|
835
|
+
util = Util.new
|
836
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
837
|
+
util.throwExceptionIfNullOrBlank(imagePath, "Image Path");
|
838
|
+
util.throwExceptionIfNullOrBlank(percentage, "Percentage");
|
839
|
+
begin
|
840
|
+
file = File.new(imagePath,"rb")
|
841
|
+
ext = File.extname(file)
|
842
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
843
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
844
|
+
end
|
845
|
+
if File.file?(imagePath) == false
|
846
|
+
raise App42Exception.new("File " + imagePath.to_s + " does not exist");
|
847
|
+
end
|
848
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
849
|
+
query_params = Hash.new
|
850
|
+
params = {
|
851
|
+
'apiKey'=> @api_key,
|
852
|
+
'version' => @version,
|
853
|
+
'timeStamp' => util.get_timestamp_utc,
|
854
|
+
}
|
855
|
+
query_params = params.clone
|
856
|
+
params.store("name", name)
|
857
|
+
params.store("percentage", (percentage.to_f).to_s + "")
|
858
|
+
signature = util.sign(@secret_key, params)
|
859
|
+
resource_url = "#{@version}/#{@resource}/scalePercentage"
|
860
|
+
response = connection.imageMultipart(signature, resource_url, query_params, params, imagePath)
|
861
|
+
image = ImageProcessorResponseBuilder.new
|
862
|
+
imageObj = image.buildResponse(response)
|
863
|
+
rescue App42Exception =>e
|
864
|
+
raise e
|
865
|
+
rescue Exception => e
|
866
|
+
raise App42Exception.new(e)
|
867
|
+
end
|
868
|
+
return imageObj
|
869
|
+
end
|
870
|
+
|
871
|
+
#
|
872
|
+
# Scales the image by Percentage via Stream. Returns the original image url and converted image url.
|
873
|
+
# Images are stored in the cloud and can be accessed through the urls
|
874
|
+
# Resizing is done based on the width and height provided
|
875
|
+
#
|
876
|
+
# @param name
|
877
|
+
# - Name of the image file to scale
|
878
|
+
# @param inputStream
|
879
|
+
# - InputStream of the local file to scale
|
880
|
+
# @param percentage
|
881
|
+
# - Percentage to which image has to be scaled
|
882
|
+
#
|
883
|
+
# @return Image object containing urls for the original and converted images
|
884
|
+
#
|
885
|
+
# @raise App42Exception
|
886
|
+
#
|
887
|
+
|
888
|
+
def scale_by_percentage_stream(name, imagePath, percentage)
|
889
|
+
puts "scaleByPercentage Called "
|
890
|
+
puts "Base url #{@base_url}"
|
891
|
+
response = nil
|
892
|
+
imageObj = nil
|
893
|
+
imageObj = Image.new()
|
894
|
+
util = Util.new
|
895
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
896
|
+
util.throwExceptionIfNotValidImageExtension(name, "Name");
|
897
|
+
util.throwExceptionIfNullOrBlank(percentage, "Percentage");
|
898
|
+
begin
|
899
|
+
file = File.new(imagePath,"rb")
|
900
|
+
ext = File.extname(file)
|
901
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
902
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
903
|
+
end
|
904
|
+
if File.file?(imagePath) == false
|
905
|
+
raise App42Exception.new("File " + imagePath.to_s + " does not exist");
|
906
|
+
end
|
907
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
908
|
+
query_params = Hash.new
|
909
|
+
params = {
|
910
|
+
'apiKey'=> @api_key,
|
911
|
+
'version' => @version,
|
912
|
+
'timeStamp' => util.get_timestamp_utc,
|
913
|
+
}
|
914
|
+
query_params = params.clone
|
915
|
+
params.store("name", name)
|
916
|
+
params.store("percentage", (percentage.to_f).to_s + "")
|
917
|
+
signature = util.sign(@secret_key, params)
|
918
|
+
resource_url = "#{@version}/#{@resource}/scalePercentage"
|
919
|
+
response = connection.imageMultipartStream(signature, resource_url, query_params, params, imagePath)
|
920
|
+
image = ImageProcessorResponseBuilder.new
|
921
|
+
imageObj = image.buildResponse(response)
|
922
|
+
rescue App42Exception =>e
|
923
|
+
raise e
|
924
|
+
rescue Exception => e
|
925
|
+
raise App42Exception.new(e)
|
926
|
+
end
|
927
|
+
return imageObj
|
928
|
+
end
|
929
|
+
|
930
|
+
#
|
931
|
+
# Converts the format of the image. Returns the original image url and converted image url.
|
932
|
+
# Images are stored on the cloud and can be accessed through the urls
|
933
|
+
# Conversion is done based on the formatToConvert provided
|
934
|
+
#
|
935
|
+
# @param name
|
936
|
+
# - Name of the image to resize
|
937
|
+
# @param imagePath
|
938
|
+
# - Path of the local file to resize
|
939
|
+
# @param formatToConvert
|
940
|
+
# - to which file needs to be converted
|
941
|
+
# @return Image object containing urls for the original and converted
|
942
|
+
# images
|
943
|
+
#
|
944
|
+
# @throws App42Exception
|
945
|
+
#
|
946
|
+
|
947
|
+
def convert_format(name, imagePath, formatToConvert)
|
948
|
+
puts "convert_format Called "
|
949
|
+
puts "Base url #{@base_url}"
|
950
|
+
response = nil
|
951
|
+
imageObj = nil
|
952
|
+
imageObj = Image.new()
|
953
|
+
util = Util.new
|
954
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
955
|
+
util.throwExceptionIfNullOrBlank(imagePath, "Image Path");
|
956
|
+
util.throwExceptionIfNullOrBlank(formatToConvert, "FormatToConvert");
|
957
|
+
begin
|
958
|
+
file = File.new(imagePath,"rb")
|
959
|
+
ext = File.extname(file)
|
960
|
+
if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false))
|
961
|
+
raise TypeError,"The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"
|
962
|
+
end
|
963
|
+
if((formatToConvert.eql?("jpg") == false) && (formatToConvert.eql?("JPG") == false) && (formatToConvert.eql?("jpeg") == false) && (formatToConvert.eql?("JPEG") == false) && (formatToConvert.eql?("gif") == false) && (formatToConvert.eql?("GIF") == false) && (formatToConvert.eql?("png") == false) && (formatToConvert.eql?("PNG") == false))
|
964
|
+
raise TypeError, "The Request parameters are invalid. Supported conversion extensions are jpg, jpeg, gif and png only"
|
965
|
+
end
|
966
|
+
if File.file?(imagePath) == false
|
967
|
+
raise App42Exception.new("File " + imagePath.to_s + " does not exist");
|
968
|
+
end
|
969
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
970
|
+
params = Hash.new
|
971
|
+
query_params = Hash.new
|
972
|
+
query_params = {
|
973
|
+
'apiKey'=> @api_key,
|
974
|
+
'version' => @version,
|
975
|
+
'timeStamp' => util.get_timestamp_utc,
|
976
|
+
}
|
977
|
+
params = query_params.clone
|
978
|
+
post_params = Hash.new
|
979
|
+
post_params.store("name", name)
|
980
|
+
post_params.store("formatToConvert", formatToConvert)
|
981
|
+
params = params.merge(post_params)
|
982
|
+
signature = util.sign(@secret_key, params)
|
983
|
+
resource_url = "#{@version}/#{@resource}/convertformat"
|
984
|
+
response = connection.imageMultipart(signature, resource_url, query_params, params, imagePath)
|
985
|
+
image = ImageProcessorResponseBuilder.new
|
986
|
+
imageObj = image.buildResponse(response)
|
987
|
+
rescue App42Exception =>e
|
988
|
+
raise e
|
989
|
+
rescue Exception => e
|
990
|
+
raise App42Exception.new(e)
|
991
|
+
end
|
992
|
+
return imageObj
|
993
|
+
end
|
994
|
+
|
995
|
+
#
|
996
|
+
# Converts the format of the image. Returns the original image url and converted image url.
|
997
|
+
# Images are stored on the cloud and can be accessed through the urls
|
998
|
+
# Conversion is done based on the formatToConvert provided
|
999
|
+
#
|
1000
|
+
# @param name
|
1001
|
+
# - Name of the image to convert
|
1002
|
+
# @param imagePath
|
1003
|
+
# - imagePath of the local file to convert
|
1004
|
+
# @param formatToConvert
|
1005
|
+
# - to which file needs to be converted
|
1006
|
+
# @return Image object containing urls for the original and converted
|
1007
|
+
# images
|
1008
|
+
#
|
1009
|
+
# @throws App42Exception
|
1010
|
+
#
|
1011
|
+
|
1012
|
+
def convert_format_with_stream(name, imagePath, formatToConvert)
|
1013
|
+
puts "convert_format_with_stream Called "
|
1014
|
+
puts "Base url #{@base_url}"
|
1015
|
+
response = nil
|
1016
|
+
imageObj = nil
|
1017
|
+
imageObj = Image.new()
|
1018
|
+
util = Util.new
|
1019
|
+
util.throwExceptionIfNullOrBlank(name, "Name");
|
1020
|
+
util.throwExceptionIfNotValidImageExtension(name, "Name");
|
1021
|
+
util.throwExceptionIfNullOrBlank(formatToConvert, "FormatToConvert");
|
1022
|
+
begin
|
1023
|
+
if((formatToConvert.eql?("jpg") == false) && (formatToConvert.eql?("JPG") == false) && (formatToConvert.eql?("jpeg") == false) && (formatToConvert.eql?("JPEG") == false) && (formatToConvert.eql?("gif") == false) && (formatToConvert.eql?("GIF") == false) && (formatToConvert.eql?("png") == false) && (formatToConvert.eql?("PNG") == false))
|
1024
|
+
raise TypeError, "The Request parameters are invalid. Supported conversion extensions are jpg, jpeg, gif and png only"
|
1025
|
+
end
|
1026
|
+
if File.file?(imagePath) == false
|
1027
|
+
raise App42Exception.new("File " + imagePath.to_s + " does not exist");
|
1028
|
+
end
|
1029
|
+
connection = App42::Connection::RESTConnection.new(@base_url)
|
1030
|
+
query_params = Hash.new
|
1031
|
+
params = {
|
1032
|
+
'apiKey'=> @api_key,
|
1033
|
+
'version' => @version,
|
1034
|
+
'timeStamp' => util.get_timestamp_utc,
|
1035
|
+
}
|
1036
|
+
query_params = params.clone
|
1037
|
+
params.store("name", name)
|
1038
|
+
params.store("formatToConvert", formatToConvert);
|
1039
|
+
signature = util.sign(@secret_key, params)
|
1040
|
+
resource_url = "#{@version}/#{@resource}/convertformat"
|
1041
|
+
response = connection.imageMultipartStream(signature, resource_url, query_params, params, imagePath)
|
1042
|
+
image = ImageProcessorResponseBuilder.new
|
1043
|
+
imageObj = image.buildResponse(response)
|
1044
|
+
rescue App42Exception =>e
|
1045
|
+
raise e
|
1046
|
+
rescue Exception => e
|
1047
|
+
raise App42Exception.new(e)
|
1048
|
+
end
|
1049
|
+
return imageObj
|
1050
|
+
end
|
1051
|
+
|
1052
|
+
end
|
1053
|
+
end
|
1054
|
+
end
|