batchly-sdk 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/batchly-sdk.rb +30 -0
- data/lib/batchly-sdk/iprocessor.rb +36 -0
- data/lib/batchly-sdk/request/db_request.rb +36 -0
- data/lib/batchly-sdk/request/delimited_request.rb +34 -0
- data/lib/batchly-sdk/request/file_request.rb +30 -0
- data/lib/batchly-sdk/request/irequest.rb +21 -0
- data/lib/batchly-sdk/request/queue_request.rb +33 -0
- data/lib/batchly-sdk/response/db_response.rb +25 -0
- data/lib/batchly-sdk/response/default_response.rb +24 -0
- data/lib/batchly-sdk/response/file_response.rb +29 -0
- data/lib/batchly-sdk/response/iresponse.rb +24 -0
- metadata +54 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9478b8678d7cbf01eadc1a13efb0a8cdd16c1011
|
4
|
+
data.tar.gz: aa728e723f1c612650a73dade9396cfe12aba993
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bc805adb475825c730deb7a287359b98f0e933ade9b13a8b04a7410a216bced7005e5c511a95799531a026b081b2058ea528a29bafd72c316f51cd2aeec85f18
|
7
|
+
data.tar.gz: 349f2155b6e0621572ef3573aced79ca66441425d08f8d1419752e9b2442df6d744cc65deed7951f075504718cc15722a78571926d75e1375102aa36147a1237
|
data/lib/batchly-sdk.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require_relative 'batchly-sdk/iprocessor'
|
2
|
+
|
3
|
+
require_relative 'batchly-sdk/request/irequest'
|
4
|
+
require_relative 'batchly-sdk/request/db_request'
|
5
|
+
require_relative 'batchly-sdk/request/file_request'
|
6
|
+
require_relative 'batchly-sdk/request/queue_request'
|
7
|
+
require_relative 'batchly-sdk/request/delimited_request'
|
8
|
+
|
9
|
+
require_relative 'batchly-sdk/response/iresponse'
|
10
|
+
require_relative 'batchly-sdk/response/default_response'
|
11
|
+
require_relative 'batchly-sdk/response/file_response'
|
12
|
+
require_relative 'batchly-sdk/response/db_response'
|
13
|
+
|
14
|
+
##
|
15
|
+
# Batchly SDK is a service provider interface offered to create processors for use in batchly
|
16
|
+
# http://www.batchly.net
|
17
|
+
module Batchly
|
18
|
+
|
19
|
+
##
|
20
|
+
# All request types that batchly supports for different data sources are available as part of this module
|
21
|
+
# Currently supports QueueRequest, FileRequest, DelimitedRequest and DbRequest
|
22
|
+
module Request
|
23
|
+
end
|
24
|
+
|
25
|
+
##
|
26
|
+
# All response types that batchly supports for different data destinations are available as part of this module
|
27
|
+
# Currently supports DefaultResponse, FileResponse and DbResponse
|
28
|
+
module Response
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative "request/irequest"
|
2
|
+
|
3
|
+
module Batchly
|
4
|
+
|
5
|
+
##
|
6
|
+
# This is the basic interface for implementation of a processor. The name of the class is IProcessor to keep it compliant with other language sdk.
|
7
|
+
# Ruby doesn't support interfaces and so this base abstract class needs to be extended to write a new processor
|
8
|
+
class IProcessor
|
9
|
+
##
|
10
|
+
# Process method should be implemented in a stateless manner to ensure fault tolerance.
|
11
|
+
# Once implemented, all the files along with necessary dependencies should be compressed into a zip folder and uploaded into batchly portal to create a new processor.
|
12
|
+
# While uploading the processor, you need to configure the right request/response parameters for ensuring the right bootstrapping during operations.
|
13
|
+
# You can consider the parameters as Idempotent as long as you configure the same on portal. The parameters will be assigned automatically during Job run.
|
14
|
+
#
|
15
|
+
#
|
16
|
+
# Supports the following implementations.
|
17
|
+
#
|
18
|
+
# 1. QueueRequest - The unique identifier for UoW will be assigned and sent to processor. Actual usage is completely within the processor Implementation.
|
19
|
+
# 2. FileRequest - Built for file storage input sources. The file would be downloaded from storage and saved to local disk.
|
20
|
+
# 3. DelimitedFileRequest - Built for file storage input sources.
|
21
|
+
# 4. DbRequest - Records would be retrieved from the give database/table connectionString
|
22
|
+
# </param>
|
23
|
+
# <returns>
|
24
|
+
#
|
25
|
+
# Supports the following implementations.
|
26
|
+
#
|
27
|
+
# 1. DefaultResponse - Share the status of your processing.
|
28
|
+
# 2. FileResponse - Built for file storage output. Allows processor to share the location of response files that need to be saved to storage.
|
29
|
+
# 3. DbResponse - updates the database for the process input TableDataRequest record.
|
30
|
+
#
|
31
|
+
# </returns>
|
32
|
+
def process(request)
|
33
|
+
raise 'this method should be overriden and return the IResponse object'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative 'irequest'
|
2
|
+
|
3
|
+
module Batchly
|
4
|
+
module Request
|
5
|
+
|
6
|
+
##
|
7
|
+
# DbRequest is a type of request that supports relational data sources
|
8
|
+
# Request holds the base data and source connection string
|
9
|
+
class DbRequest < IRequest
|
10
|
+
|
11
|
+
def initialize(id = nil, parameters = nil, connection_string = nil, data = nil, content_path = nil)
|
12
|
+
@id = id
|
13
|
+
@parameters = parameters
|
14
|
+
@connection_string = connection_string
|
15
|
+
@data = data
|
16
|
+
@content_path = content_path
|
17
|
+
end
|
18
|
+
|
19
|
+
# id for the Unit of Work +string+
|
20
|
+
attr_accessor :id
|
21
|
+
|
22
|
+
# Values for parameters configured via UI +hashTable+
|
23
|
+
attr_accessor :parameters
|
24
|
+
|
25
|
+
# connection string +string+
|
26
|
+
attr_accessor :connection_string
|
27
|
+
|
28
|
+
# dataset of data required to process unit of work. +hashTable+
|
29
|
+
# If the configured query returns multiple record sets, each record set is a table within the dataset.
|
30
|
+
attr_accessor :data
|
31
|
+
|
32
|
+
# Path for loading additional content - Path to container from where code is executed +string+
|
33
|
+
attr_accessor :content_path
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative 'irequest'
|
2
|
+
|
3
|
+
module Batchly
|
4
|
+
module Request
|
5
|
+
|
6
|
+
##
|
7
|
+
# DelimitedFileRequest is a type of request that supports csv and other delmited type of source files
|
8
|
+
# Request holds the fields as an array. The fields are column values from a single row
|
9
|
+
class DelimitedFileRequest < IRequest
|
10
|
+
|
11
|
+
def initialize(id = nil, parameters = nil, fields = nil, content_path = nil)
|
12
|
+
@id = id
|
13
|
+
@parameters = parameters
|
14
|
+
@fields = fields
|
15
|
+
@content_path = content_path
|
16
|
+
end
|
17
|
+
|
18
|
+
# Unique id of the Unit of Work +string+
|
19
|
+
attr_accessor :id
|
20
|
+
|
21
|
+
# parameters that has been configured in portal +hashTable+
|
22
|
+
attr_accessor :parameters
|
23
|
+
|
24
|
+
# Fields contain the individual columns of a delimited row +array+
|
25
|
+
attr_accessor :fields
|
26
|
+
|
27
|
+
|
28
|
+
# Path for loading additional content - Path to container from where code is executed +string+
|
29
|
+
attr_accessor :content_path
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require_relative 'irequest'
|
2
|
+
|
3
|
+
module Batchly
|
4
|
+
module Request
|
5
|
+
##
|
6
|
+
# FileRequest is a type of request that supports file storage
|
7
|
+
# Request holds the location of the file thats available for your processing
|
8
|
+
class FileRequest < IRequest
|
9
|
+
|
10
|
+
def initialize(id = nil, parameters = nil, location = nil, content_path = nil )
|
11
|
+
@id = id
|
12
|
+
@parameters = parameters
|
13
|
+
@location = location
|
14
|
+
@content_path = content_path
|
15
|
+
end
|
16
|
+
|
17
|
+
# Unique id of the Unit of Work +string+
|
18
|
+
attr_accessor :id
|
19
|
+
|
20
|
+
# parameters that has been configured in portal +hashTable+
|
21
|
+
attr_accessor :parameters
|
22
|
+
|
23
|
+
# Location of the file on disk +string+
|
24
|
+
attr_accessor :location
|
25
|
+
|
26
|
+
# Path for loading additional content - Path to container from where code is executed +string+
|
27
|
+
attr_accessor :content_path
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
module Batchly
|
3
|
+
module Request
|
4
|
+
|
5
|
+
##
|
6
|
+
# IRequest is the base interface for all request types
|
7
|
+
# Use the actual implementations while duck typing - File, Delimited, Db or Queue
|
8
|
+
class IRequest
|
9
|
+
|
10
|
+
# id for the Unit of Work +string+
|
11
|
+
attr_accessor :id
|
12
|
+
|
13
|
+
# Values for parameters configured via UI +hashTable+
|
14
|
+
attr_accessor :parameters
|
15
|
+
|
16
|
+
# Current working directory +string+
|
17
|
+
attr_accessor :content_path
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require_relative 'irequest'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module Batchly
|
5
|
+
module Request
|
6
|
+
|
7
|
+
##
|
8
|
+
# QueueRequest is a type of request that supports pub/sub or queue sources
|
9
|
+
# Request holds the content of a single message
|
10
|
+
class QueueRequest < IRequest
|
11
|
+
|
12
|
+
def initialize(id = nil, parameters = nil, content = nil, content_path = nil )
|
13
|
+
@id = id
|
14
|
+
@parameters = parameters
|
15
|
+
@content = content
|
16
|
+
@content_path = content_path
|
17
|
+
end
|
18
|
+
|
19
|
+
# id for the Unit of Work +string+
|
20
|
+
attr_accessor :id
|
21
|
+
|
22
|
+
# Values for parameters configured via UI +hashTable+
|
23
|
+
attr_accessor :parameters
|
24
|
+
|
25
|
+
# Path for content +string+
|
26
|
+
attr_accessor :content
|
27
|
+
|
28
|
+
# Path for loading additional content - Path to container from where code is executed +string+
|
29
|
+
attr_accessor :content_path
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative 'iresponse'
|
2
|
+
|
3
|
+
module Batchly
|
4
|
+
module Response
|
5
|
+
|
6
|
+
##
|
7
|
+
# The DbResponse is a type of response when you want batchly to execute queries on destination database
|
8
|
+
class DbResponse < IResponse
|
9
|
+
|
10
|
+
# Unique id of the Unit of Work +string+
|
11
|
+
attr_accessor :id
|
12
|
+
|
13
|
+
# Status of the processing +boolean+
|
14
|
+
attr_accessor :is_processing_success
|
15
|
+
|
16
|
+
# Parameter Name and Data pair for each parameter of the SQL Query that is run on successful processing +hashTable+
|
17
|
+
# The query is configured as part of Batchly Portal and is run in sequence to ensure successful writes to the database.
|
18
|
+
attr_accessor :parameter_values
|
19
|
+
|
20
|
+
# Duplicate message that can be deleted without any post processing +boolean+
|
21
|
+
attr_accessor :is_duplicate
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require_relative 'iresponse'
|
2
|
+
|
3
|
+
module Batchly
|
4
|
+
module Response
|
5
|
+
|
6
|
+
##
|
7
|
+
# This is the minimal response to return when the processing doesn't generate any output that requires processing by batchly agent
|
8
|
+
# The *is_processing_success* represents status of processing. +boolean+ _true_ for success and _false_ for failure
|
9
|
+
# The *is_duplicate* field represents duplicate tracking if state is managed by processor.
|
10
|
+
# The *id* should equal the request id
|
11
|
+
class DefaultResponse < IResponse
|
12
|
+
|
13
|
+
# Unique id of the Unit of Work +string+
|
14
|
+
attr_accessor :id
|
15
|
+
|
16
|
+
# Status of the processing +boolean+
|
17
|
+
attr_accessor :is_processing_success
|
18
|
+
|
19
|
+
# Duplicate message that can be deleted without any post processing +boolean+
|
20
|
+
attr_accessor :is_duplicate
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative 'iresponse'
|
2
|
+
|
3
|
+
module Batchly
|
4
|
+
module Response
|
5
|
+
|
6
|
+
##
|
7
|
+
# FileResponse is the type of response to return when you generate a file output
|
8
|
+
# Batchly Agent automatically takes the output file and sends it to the right destination(s)
|
9
|
+
# The destinations are configured from the portal and is processor independent
|
10
|
+
# Destinations are attached at the Job Level. The processor is reusable across many jobs without knowing the source and destination
|
11
|
+
class FileResponse < IResponse
|
12
|
+
|
13
|
+
# Unique id of the Unit of Work +string+
|
14
|
+
attr_accessor :id
|
15
|
+
|
16
|
+
# Status of the processing +boolean+
|
17
|
+
attr_accessor :is_processing_success
|
18
|
+
|
19
|
+
# locations of the ouptut files on disk +Array+
|
20
|
+
# One full path per output file. Disk File Name is used as file name for response.
|
21
|
+
# E.g.:- C:\Processed\Output\File1.png - Saved to storage as File.Png
|
22
|
+
attr_accessor :locations
|
23
|
+
|
24
|
+
# Duplicate message that can be deleted without any post processing +boolean+
|
25
|
+
attr_accessor :is_duplicate
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Batchly
|
2
|
+
module Response
|
3
|
+
|
4
|
+
##
|
5
|
+
# This is the basic interface for returning the values post processing
|
6
|
+
# Use the implemented classes for returning the right type of bootstrapping by the batchly agent
|
7
|
+
# Supported implementations are:-
|
8
|
+
# * DefaultResponse
|
9
|
+
# * FileResponse
|
10
|
+
# * DbResponse
|
11
|
+
class IResponse
|
12
|
+
|
13
|
+
# Unique id of the Unit of Work
|
14
|
+
attr_accessor :id
|
15
|
+
|
16
|
+
# Status of the processing
|
17
|
+
attr_accessor :is_processing_success
|
18
|
+
|
19
|
+
# Duplicate message that can be deleted without any post processing
|
20
|
+
attr_accessor :is_duplicate
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: batchly-sdk
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Batchly Tech Team
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-09-08 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A simple interface for writing new processors for using batchly
|
14
|
+
email: support@batchly.net
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/batchly-sdk.rb
|
20
|
+
- lib/batchly-sdk/iprocessor.rb
|
21
|
+
- lib/batchly-sdk/request/db_request.rb
|
22
|
+
- lib/batchly-sdk/request/delimited_request.rb
|
23
|
+
- lib/batchly-sdk/request/file_request.rb
|
24
|
+
- lib/batchly-sdk/request/irequest.rb
|
25
|
+
- lib/batchly-sdk/request/queue_request.rb
|
26
|
+
- lib/batchly-sdk/response/db_response.rb
|
27
|
+
- lib/batchly-sdk/response/default_response.rb
|
28
|
+
- lib/batchly-sdk/response/file_response.rb
|
29
|
+
- lib/batchly-sdk/response/iresponse.rb
|
30
|
+
homepage: http://www.batchly.net
|
31
|
+
licenses:
|
32
|
+
- Proprietary
|
33
|
+
metadata: {}
|
34
|
+
post_install_message:
|
35
|
+
rdoc_options: []
|
36
|
+
require_paths:
|
37
|
+
- lib
|
38
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 2.0.0.pre.p647
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
requirements: []
|
49
|
+
rubyforge_project:
|
50
|
+
rubygems_version: 2.4.5.1
|
51
|
+
signing_key:
|
52
|
+
specification_version: 4
|
53
|
+
summary: Batchly Processor SDK
|
54
|
+
test_files: []
|