ue-ruby-sdk 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3b52662de41b96ef88b027da7174ae3806f0e9f5
4
+ data.tar.gz: 8e3c77c92b15c04621a4d39a5ef584482aabc5e3
5
+ SHA512:
6
+ metadata.gz: d3165ceaf5d067d472c66e5abea2e36d2c2645121616424241314bedd1a80e0828e4cd10c07719e4cca1e8afe5efe73af381619b5defbfb5ae66c62c333b63b2
7
+ data.tar.gz: 9e14f8970f7e4f9c4a71d1d674a723fbe7e1fcf676faead02f82dc1d26b7fb699f52e78d0df477601e4dd6b552ef5e9ab54a495c74f06b36400a6bdad1e4ec42
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.versions.conf ADDED
@@ -0,0 +1,4 @@
1
+ ruby=ruby-2.1.3
2
+ ruby-gemset=ue
3
+ #ruby-gem-install=bundler rake
4
+ #ruby-bundle-install=true
data/Gemfile ADDED
@@ -0,0 +1,25 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+
6
+ # Add dependencies to develop your gem here.
7
+ # Include everything needed to run rake, tests, features, etc.
8
+ group :development do
9
+ gem "shoulda", ">= 0"
10
+ gem "rdoc", "~> 3.12"
11
+ gem "bundler", "~> 1.0"
12
+ gem "jeweler", "~> 2.0.1"
13
+ gem "simplecov", ">= 0"
14
+ gem "logging"
15
+ gem "pry"
16
+ gem "pry-byebug"
17
+ end
18
+
19
+ group :production do
20
+ gem "facets"
21
+ gem "json"
22
+ gem "rest-client"
23
+ gem "require_all"
24
+ gem "uuidtools"
25
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,118 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ activesupport (4.2.5.1)
5
+ i18n (~> 0.7)
6
+ json (~> 1.7, >= 1.7.7)
7
+ minitest (~> 5.1)
8
+ thread_safe (~> 0.3, >= 0.3.4)
9
+ tzinfo (~> 1.1)
10
+ addressable (2.4.0)
11
+ builder (3.2.2)
12
+ byebug (8.2.2)
13
+ coderay (1.1.1)
14
+ descendants_tracker (0.0.4)
15
+ thread_safe (~> 0.3, >= 0.3.1)
16
+ docile (1.1.5)
17
+ domain_name (0.5.20160128)
18
+ unf (>= 0.0.5, < 1.0.0)
19
+ facets (3.0.0)
20
+ faraday (0.9.2)
21
+ multipart-post (>= 1.2, < 3)
22
+ git (1.2.9.1)
23
+ github_api (0.13.1)
24
+ addressable (~> 2.4.0)
25
+ descendants_tracker (~> 0.0.4)
26
+ faraday (~> 0.8, < 0.10)
27
+ hashie (>= 3.4)
28
+ multi_json (>= 1.7.5, < 2.0)
29
+ oauth2
30
+ hashie (3.4.3)
31
+ highline (1.7.8)
32
+ http-cookie (1.0.2)
33
+ domain_name (~> 0.5)
34
+ i18n (0.7.0)
35
+ jeweler (2.0.1)
36
+ builder
37
+ bundler (>= 1.0)
38
+ git (>= 1.2.5)
39
+ github_api
40
+ highline (>= 1.6.15)
41
+ nokogiri (>= 1.5.10)
42
+ rake
43
+ rdoc
44
+ json (1.8.3)
45
+ jwt (1.5.1)
46
+ little-plugger (1.1.4)
47
+ logging (2.0.0)
48
+ little-plugger (~> 1.1)
49
+ multi_json (~> 1.10)
50
+ method_source (0.8.2)
51
+ mime-types (2.99.1)
52
+ mini_portile2 (2.0.0)
53
+ minitest (5.8.4)
54
+ multi_json (1.11.2)
55
+ multi_xml (0.5.5)
56
+ multipart-post (2.0.0)
57
+ netrc (0.11.0)
58
+ nokogiri (1.6.7.2)
59
+ mini_portile2 (~> 2.0.0.rc2)
60
+ oauth2 (1.1.0)
61
+ faraday (>= 0.8, < 0.10)
62
+ jwt (~> 1.0, < 1.5.2)
63
+ multi_json (~> 1.3)
64
+ multi_xml (~> 0.5)
65
+ rack (>= 1.2, < 3)
66
+ pry (0.10.3)
67
+ coderay (~> 1.1.0)
68
+ method_source (~> 0.8.1)
69
+ slop (~> 3.4)
70
+ pry-byebug (3.3.0)
71
+ byebug (~> 8.0)
72
+ pry (~> 0.10)
73
+ rack (1.6.4)
74
+ rake (10.5.0)
75
+ rdoc (3.12.2)
76
+ json (~> 1.4)
77
+ require_all (1.3.3)
78
+ rest-client (1.8.0)
79
+ http-cookie (>= 1.0.2, < 2.0)
80
+ mime-types (>= 1.16, < 3.0)
81
+ netrc (~> 0.7)
82
+ shoulda (3.5.0)
83
+ shoulda-context (~> 1.0, >= 1.0.1)
84
+ shoulda-matchers (>= 1.4.1, < 3.0)
85
+ shoulda-context (1.2.1)
86
+ shoulda-matchers (2.8.0)
87
+ activesupport (>= 3.0.0)
88
+ simplecov (0.11.2)
89
+ docile (~> 1.1.0)
90
+ json (~> 1.8)
91
+ simplecov-html (~> 0.10.0)
92
+ simplecov-html (0.10.0)
93
+ slop (3.6.0)
94
+ thread_safe (0.3.5)
95
+ tzinfo (1.2.2)
96
+ thread_safe (~> 0.1)
97
+ unf (0.1.4)
98
+ unf_ext
99
+ unf_ext (0.0.7.2)
100
+ uuidtools (2.1.5)
101
+
102
+ PLATFORMS
103
+ ruby
104
+
105
+ DEPENDENCIES
106
+ bundler (~> 1.0)
107
+ facets
108
+ jeweler (~> 2.0.1)
109
+ json
110
+ logging
111
+ pry
112
+ pry-byebug
113
+ rdoc (~> 3.12)
114
+ require_all
115
+ rest-client
116
+ shoulda
117
+ simplecov
118
+ uuidtools
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2016 Hossam Saraya
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,86 @@
1
+ # ue-ruby-sdk
2
+ > A UnificationEngine client SDK for Ruby/Rails
3
+
4
+ ## Installation
5
+
6
+ ```sh
7
+ $ gem install ue-ruby-sdk
8
+ ```
9
+
10
+ ## Usage
11
+
12
+ ```ruby
13
+ var app = UEApp.new("APP_KEY","APP_SECRET");
14
+ ```
15
+
16
+ #### Creating User
17
+ ```ruby
18
+ user = app.create_user
19
+ #user is an instance of UEUser
20
+ ```
21
+
22
+ #### Listing Users
23
+ ```ruby
24
+ users = app.list_users
25
+ #users is an array of User objects
26
+ ```
27
+
28
+ #### Deleting User
29
+ ```ruby
30
+ user = app.create_user
31
+ app.delete_user(user) #true
32
+ ```
33
+
34
+ #### Adding a connection to a user
35
+ ```ruby
36
+ connection = user.add_connection "myconnectionname", "facebook", "facebook_access_token")
37
+ #connection is an instance of UEConnection
38
+ ```
39
+
40
+ - `connection_name` must be unique per connection.
41
+ - `access_token` has to be valid and working from the provider side
42
+
43
+
44
+ #### Listing User connections
45
+ ```ruby
46
+ connections = user.list_connections
47
+ # connections is an array of UEConnection objects
48
+ ```
49
+ #### Removing a User Connection
50
+ ```ruby
51
+ user.remove_connection(connection_name) #true | false
52
+ ```
53
+
54
+ #### Testing a connection
55
+ ```ruby
56
+ #return true if working, false otherwise
57
+ user.test_connection(service_url) #eg: facebook://accesstoken@facebook.com
58
+ ```
59
+
60
+ ### Sending a message using a connection
61
+ ```ruby
62
+ options = {
63
+ receivers:[
64
+ {
65
+ name:"me"
66
+ },
67
+ {
68
+ name:"Page",
69
+ id:"122"
70
+ }
71
+ ],
72
+ message:{
73
+ subject:"test",
74
+ body: "ABC",
75
+ image:"http://politibits.blogs.tuscaloosanews.com/files/2010/07/sanford_big_dummy_navy_shirt.jpg",
76
+ link:{
77
+ uri: "http://google.com",
78
+ description: "link desc",
79
+ title:"link title"
80
+ }
81
+ }
82
+ }
83
+
84
+ #uris will hold the uris for the sent messages
85
+ uris = app.list_connections[0].send_message options
86
+ ```
data/Rakefile ADDED
@@ -0,0 +1,53 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
17
+ gem.name = "ue-ruby-sdk"
18
+ gem.homepage = "https://github.com/unifiedinbox/ue-ruby-sdk"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{UnificationEngine Ruby Client SDK}
21
+ gem.description = %Q{UnificationEngine Ruby SDK as a wrapper over UnificationEngine API}
22
+ gem.email = "hossam.saraya@gmail.com"
23
+ gem.authors = ["Hossam Saraya"]
24
+
25
+
26
+ # dependencies defined in Gemfile
27
+ end
28
+ Jeweler::RubygemsDotOrgTasks.new
29
+
30
+ require 'rake/testtask'
31
+ Rake::TestTask.new(:test) do |test|
32
+ test.libs << 'lib' << 'test'
33
+ test.pattern = 'test/**/test_*.rb'
34
+ test.verbose = true
35
+ end
36
+
37
+ desc "Code coverage detail"
38
+ task :simplecov do
39
+ ENV['COVERAGE'] = "true"
40
+ Rake::Task['test'].execute
41
+ end
42
+
43
+ task :default => :test
44
+
45
+ require 'rdoc/task'
46
+ Rake::RDocTask.new do |rdoc|
47
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
+
49
+ rdoc.rdoc_dir = 'rdoc'
50
+ rdoc.title = "ruby-unificationengine #{version}"
51
+ rdoc.rdoc_files.include('README*')
52
+ rdoc.rdoc_files.include('lib/**/*.rb')
53
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
@@ -0,0 +1,30 @@
1
+ require 'ue-ruby-sdk'
2
+
3
+ app = UEApp.new("UE_APP_ID","UE_APP_SECRET")
4
+
5
+ options = {
6
+ receivers:[
7
+ {
8
+ name:"me"
9
+ },
10
+ {
11
+ name:"Page",
12
+ id:"122"
13
+ }
14
+ ],
15
+ message:{
16
+ subject:"test",
17
+ body: "ABC",
18
+ image:"http://politibits.blogs.tuscaloosanews.com/files/2010/07/sanford_big_dummy_navy_shirt.jpg",
19
+ link:{
20
+ uri: "http://google.com",
21
+ description: "link desc",
22
+ title:"link title"
23
+ }
24
+ }
25
+ }
26
+
27
+
28
+ user = app.create_user
29
+ user.list_connections[0].send_message options #send message using the first connector
30
+
@@ -0,0 +1,5 @@
1
+ class Constants
2
+ def self.base_url
3
+ "https://apiv2.unificationengine.com/v2/"
4
+ end
5
+ end
@@ -0,0 +1,59 @@
1
+ require "facets"
2
+ class UEApp
3
+ ##
4
+ # Constructor
5
+ # @param {String} app_key
6
+ # @param {String} app_secret
7
+ def initialize(api_key, api_secret)
8
+ @api_key = api_key
9
+ @api_secret = api_secret
10
+ end
11
+
12
+
13
+
14
+ ##
15
+ # Creates a UE User
16
+ #
17
+ # @return {UEUser} user the created user
18
+ #
19
+ def create_user()
20
+ response = UERequest.fetch "user/create", {
21
+ user: @api_key,
22
+ pass: @api_secret
23
+ }
24
+ response[:uri] ? UEUser.new(response[:uri]) : nil
25
+ end
26
+
27
+ ##
28
+ # Deletes a UE User
29
+ #
30
+ # @param {UEUser} user the user to delete
31
+ # @return {Boolean} success/fail
32
+ #
33
+ def delete_user( user )
34
+ response = UERequest.fetch "user/delete", {
35
+ user: @api_key,
36
+ pass: @api_secret,
37
+ form: {
38
+ uri: user.uri
39
+ }
40
+ }
41
+ response[:status] == 200? true: false
42
+ end
43
+
44
+ ##
45
+ # Returns a list of users for the current app
46
+ #
47
+ # @return {String[]} array of user uri without password
48
+ #
49
+ def list_users()
50
+ response = UERequest.fetch "user/list", {
51
+ user: @api_key,
52
+ pass: @api_secret
53
+ }
54
+
55
+ $logger.debug response[:users].inspect
56
+ users = response[:users].map { |user| user.symbolize_keys[:uri] }
57
+ end
58
+
59
+ end
@@ -0,0 +1,174 @@
1
+ require "uuidtools"
2
+ class UEConnection
3
+
4
+
5
+ ##
6
+ # @param {String} connection_name the connection identifier
7
+ # @param {String} connection_uri the connection uri
8
+ # @param {User} User the User instance of the user owning the connection
9
+ def initialize(connection_name, connection_uri, user)
10
+ @name = connection_name
11
+ @uri = connection_uri
12
+ @user = user
13
+ end
14
+
15
+ def user
16
+ @user
17
+ end
18
+
19
+ def refresh_connection()
20
+ end
21
+
22
+ ##
23
+ # Used for message parts
24
+ # @access private
25
+ # @returns {Number} random id
26
+ #
27
+ def self.generate_unique_id()
28
+ UUIDTools::UUID.timestamp_create.to_s
29
+ end
30
+
31
+
32
+ ##
33
+ # Builds the API message parameter from passed options
34
+ #
35
+ # @access private
36
+ # @param {Object} message_options options for message
37
+ # @param {Array} message_options.receivers channels receiving the message
38
+ # @param {String} message_options.receivers.name channel name (Me | Page)
39
+ # @param {String} message_options.receivers.id in case of Page, this is the page id
40
+ # @param {String} message_options.message.subject message subject
41
+ # @param {Array} message_options.message.body message body
42
+ # @param {Array} message_options.message.image image uri
43
+ # @param {Array} message_options.message.link message link
44
+ # @param {Array} message_options.message.link.uri message link uri
45
+ # @param {Array} message_options.message.link.description message link description
46
+ # @param {Array} message_options.message.link.title message link title
47
+ # @returns {Boolean}
48
+ #
49
+ def build_message_query(message_options)
50
+ throw :RECEIVERS_AND_MESSAGE_REQUIRED if !message_options.key?(:receivers) || !message_options.key?(:message)
51
+
52
+
53
+ default_content_type = "binary";
54
+ params = message_options
55
+ queryObject = {}
56
+
57
+ #Formulate Receivers
58
+ params[:receivers] = params[:receivers].map { |receiver|
59
+ if receiver[:name ] && receiver[:name].downcase == "me"
60
+ {
61
+ name:"Me",
62
+ address:"test.test",
63
+ Connector: @name
64
+ }
65
+ elsif receiver[:name] && receiver[:name].downcase == "page"
66
+ {
67
+ name:"Page",
68
+ address: receiver[:id],
69
+ Connector: @name
70
+ }
71
+ end
72
+ }
73
+ queryObject[:receivers] = params[:receivers];
74
+
75
+
76
+ #Formulate Message Parts
77
+ queryObject[:parts] = [];
78
+ if params[:message].key?(:body)
79
+ queryObject[:parts].push({
80
+ id: UEConnection.generate_unique_id,
81
+ contentType: default_content_type,
82
+ type: "body",
83
+ data: params[:message][:body],
84
+ })
85
+ end
86
+
87
+ #Image Part
88
+ if params[:message].key?(:image)
89
+ queryObject[:parts].push({
90
+ id: UEConnection.generate_unique_id,
91
+ contentType: default_content_type,
92
+ type: "image_link",
93
+ data: params[:message][:image]
94
+ })
95
+ end
96
+
97
+
98
+ #Link Part
99
+ if params[:message].key?(:link)
100
+ if params[:message][:link][:uri]
101
+ queryObject[:parts].push({
102
+ id: UEConnection.generate_unique_id,
103
+ contentType: default_content_type,
104
+ type: "link",
105
+ data: params[:message][:link][:uri]
106
+ });
107
+ end
108
+
109
+ if params[:message][:link][:description]
110
+ queryObject[:parts].push({
111
+
112
+ id: UEConnection.generate_unique_id,
113
+ contentType: default_content_type,
114
+ type: "link_description",
115
+ data: params[:message][:link][:description]
116
+ })
117
+ end
118
+
119
+ if params[:message][:link][:title]
120
+ queryObject[:parts].push({
121
+ id: UEConnection.generate_unique_id,
122
+ contentType: default_content_type,
123
+ type: "link_title",
124
+ data: params[:message][:link][:title]
125
+ })
126
+ end
127
+
128
+ end
129
+
130
+ #Subject
131
+ if params[:message][:subject]
132
+ queryObject[:subject ]= params[:message][:subject];
133
+ end
134
+
135
+
136
+ $logger.info(queryObject);
137
+ return queryObject;
138
+
139
+
140
+ end
141
+
142
+
143
+
144
+ ##
145
+ # Sends a message to service using a connector. A message can have multiple parts each with a different type.
146
+ # eg: One can send a message with 2 parts (image_link, body) to send a message with an image and text
147
+ #
148
+ # @param {Object} message_options options for message
149
+ # @param {Array} message_options.receivers channels receiving the message
150
+ # @param {String} message_options.receivers.name channel name (Me | Page)
151
+ # @param {String} message_options.receivers.id in case of Page, this is the page id
152
+ # @param {String} message_options.message.subject message subject
153
+ # @param {Array} message_options.message.body message body
154
+ # @param {Array} message_options.message.image image uri
155
+ # @param {Array} message_options.message.link message link
156
+ # @param {Array} message_options.message.link.uri message link uri
157
+ # @param {Array} message_options.message.link.description message link description
158
+ # @param {Array} message_options.message.link.title message link title
159
+ #
160
+ # @returns {Promise}
161
+ #
162
+ def send_message(message_options)
163
+ response = UERequest.fetch "message/send", {
164
+ user: @user.user_key,
165
+ pass: @user.user_secret,
166
+ form:{
167
+ message: self.build_message_query(message_options)
168
+ }
169
+ }
170
+
171
+ response[:URIs] rescue []
172
+
173
+ end
174
+ end
@@ -0,0 +1,130 @@
1
+ require "facets"
2
+ class UEUser
3
+
4
+ #URI: user://e9759590-54ef-4cd3-a01c-cb2241ddd812:1aee1a25-e0c4-4036-a8fd-4d41adc8611b@
5
+ #COMB: key,secret
6
+ ## Constructor
7
+ # @desc The constructor can be in one of two forms; URI form or key,secret form. eg new User(key,secret) or new User(uri)
8
+ # @param {String} uri the user uri string
9
+ # @param {String} key the user key
10
+ # @param {String} secret the user secret
11
+ def initialize(uri_or_key, secret=nil)
12
+ if secret then
13
+ # key,secret format
14
+ @user_key, @user_secret = [uri_or_key, secret]
15
+ @uri = "user://#{@user_key}:#{@user_secret}@"
16
+ else
17
+ # uri format
18
+ @uri = uri_or_key
19
+ @user_key, @user_secret = uri_or_key.match(/user:\/\/(.+):(.+)@/).captures
20
+ end
21
+ end
22
+
23
+
24
+ #Getters
25
+ def uri
26
+ @uri
27
+ end
28
+
29
+ def user_key
30
+ @user_key
31
+ end
32
+
33
+ def user_secret
34
+ @user_secret
35
+ end
36
+
37
+ ###
38
+ # Adds a connection to the current user
39
+ #
40
+ # @param {String} connection_name the connection identifier. Unique per connection
41
+ # @param {String} service_scheme a string representing a connector service (service scheme)
42
+ # @param {String} service_access_token service access token acquired from the provider (fb token, twitter token..etc)
43
+ #
44
+ # @return {UEConnection} connection the created connection
45
+ #/
46
+ def add_connection(connection_name, service_scheme, service_access_token)
47
+
48
+ response = UERequest.fetch "connection/add",{
49
+ user: @user_key,
50
+ pass: @user_secret,
51
+ form: {
52
+ uri: "#{service_scheme}://#{service_access_token}@#{service_scheme}.com",
53
+ name: connection_name
54
+ }
55
+ }
56
+
57
+ (response[:status] == 200) || response
58
+
59
+
60
+ end
61
+
62
+ ##
63
+ # List connections for current user
64
+ # @return {Connection>} List of Connection objects representing the user connections
65
+ def list_connections()
66
+
67
+ response = UERequest.fetch "connection/list",{
68
+ user: @user_key,
69
+ pass: @user_secret,
70
+ }
71
+
72
+ if !response[:connections]
73
+ return []
74
+ end
75
+
76
+ connections = []
77
+ response[:connections].each do |cname,v|
78
+ connections.push(UEConnection.new cname, response[:connections][cname.to_sym][:uri], self)
79
+ end
80
+ connections
81
+
82
+ end
83
+
84
+
85
+
86
+ #
87
+ # Removes a connection from a user
88
+ #
89
+ # @param {String} connection_name the connection identifier
90
+ # @return {Boolean} Success/Fail
91
+ #
92
+ def remove_connection(connection_name)
93
+ response = UERequest.fetch "connection/remove",{
94
+ user: @user_key,
95
+ pass: @user_secret,
96
+ form:{
97
+ name: connection_name
98
+ }
99
+ }
100
+
101
+ response[:status] == 200
102
+
103
+
104
+ end
105
+
106
+
107
+ #
108
+ # Tests a connection to a connector
109
+ #
110
+ # @param {String} serviceUri service uri. eg: facebook://accesstoken@facebook.com
111
+ # @return {Boolean} Success/Fail
112
+ #
113
+ def test_connection(service_uri)
114
+ response = UERequest.fetch "connection/test",{
115
+ user: @user_key,
116
+ pass: @user_secret,
117
+ form:{
118
+ uri: service_uri
119
+ }
120
+ }
121
+
122
+ response[:Status][:""][:status] == 200
123
+
124
+
125
+
126
+ end
127
+
128
+
129
+
130
+ end
@@ -0,0 +1,8 @@
1
+ require "pry"
2
+ require "require_all"
3
+ require_all "lib/models", "lib/utilities/", "lib/config"
4
+
5
+
6
+
7
+
8
+
@@ -0,0 +1,26 @@
1
+ require 'logging'
2
+
3
+ Logging.color_scheme( 'bright',
4
+ :levels => {
5
+ :info => :green,
6
+ :warn => :yellow,
7
+ :error => :red,
8
+ :fatal => [:white, :on_red]
9
+ },
10
+ :date => :blue,
11
+ :logger => :cyan,
12
+ :message => :magenta
13
+ )
14
+
15
+ Logging.appenders.stdout(
16
+ 'stdout',
17
+ :layout => Logging.layouts.pattern(
18
+ :pattern => '[%d] %-5l %c: %m\n',
19
+ :color_scheme => 'bright'
20
+ )
21
+ )
22
+
23
+ $logger = Logging.logger['UE']
24
+ $logger.add_appenders 'stdout'
25
+ $logger.level = :error
26
+
@@ -0,0 +1,23 @@
1
+ require "json"
2
+ require "rest-client"
3
+ require "facets"
4
+
5
+ class UERequest
6
+ def self.fetch(resource, request_options)
7
+ form = request_options[:form] || {}
8
+ user = request_options[:user]
9
+ pass = request_options[:pass]
10
+
11
+ $logger.debug form.inspect
12
+ #Inject user:pass into base url
13
+ url_prefix = Constants.base_url.gsub /https?:\/\//, "https://#{user}:#{pass}@"
14
+ #Concat base url with resource
15
+ url = url_prefix + resource
16
+ $logger.debug "http => #{url}"
17
+
18
+ response = RestClient.post url, form.to_json
19
+
20
+ $logger.debug "resp => #{JSON.parse(response).deep_symbolize_keys}"
21
+ JSON.parse(response).deep_symbolize_keys rescue response
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ #Object
2
+ class Object
3
+ def deep_symbolize_keys
4
+ self
5
+ end
6
+ end
7
+
8
+ class Hash
9
+ def deep_symbolize_keys
10
+ symbolize_keys.tap { |h| h.each { |k, v| h[k] = v.deep_symbolize_keys } }
11
+ end
12
+ end
13
+
14
+
15
+ #Array
16
+ class Array
17
+ def deep_symbolize_keys
18
+ map(&:deep_symbolize_keys)
19
+ end
20
+ end
21
+
data/test/helper.rb ADDED
@@ -0,0 +1,34 @@
1
+ require 'simplecov'
2
+
3
+ module SimpleCov::Configuration
4
+ def clean_filters
5
+ @filters = []
6
+ end
7
+ end
8
+
9
+ SimpleCov.configure do
10
+ clean_filters
11
+ load_adapter 'test_frameworks'
12
+ end
13
+
14
+ ENV["COVERAGE"] && SimpleCov.start do
15
+ add_filter "/.rvm/"
16
+ end
17
+ require 'rubygems'
18
+ require 'bundler'
19
+ begin
20
+ Bundler.setup(:default, :development)
21
+ rescue Bundler::BundlerError => e
22
+ $stderr.puts e.message
23
+ $stderr.puts "Run `bundle install` to install missing gems"
24
+ exit e.status_code
25
+ end
26
+ require 'test/unit'
27
+ require 'shoulda'
28
+
29
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
30
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
31
+ require 'ruby-unificationengine'
32
+
33
+ class Test::Unit::TestCase
34
+ end
@@ -0,0 +1,7 @@
1
+ require 'helper'
2
+
3
+ class TestRubyUnificationengine < Test::Unit::TestCase
4
+ should "probably rename this file and start testing for real" do
5
+ flunk "hey buddy, you should probably rename this file and start testing for real"
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,176 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ue-ruby-sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Hossam Saraya
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: shoulda
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rdoc
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.12'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.12'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: jeweler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 2.0.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 2.0.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: logging
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry-byebug
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: UnificationEngine Ruby SDK as a wrapper over UnificationEngine API
126
+ email: hossam.saraya@gmail.com
127
+ executables: []
128
+ extensions: []
129
+ extra_rdoc_files:
130
+ - LICENSE.txt
131
+ - README.md
132
+ files:
133
+ - ".document"
134
+ - ".versions.conf"
135
+ - Gemfile
136
+ - Gemfile.lock
137
+ - LICENSE.txt
138
+ - README.md
139
+ - Rakefile
140
+ - VERSION
141
+ - example/example1.rb
142
+ - lib/config/Constants.rb
143
+ - lib/models/UEApp.rb
144
+ - lib/models/UEConnection.rb
145
+ - lib/models/UEUser.rb
146
+ - lib/ue-ruby-sdk.rb
147
+ - lib/utilities/UELogger.rb
148
+ - lib/utilities/UERequest.rb
149
+ - lib/utilities/extensions.rb
150
+ - test/helper.rb
151
+ - test/test_ruby-unificationengine.rb
152
+ homepage: https://github.com/unifiedinbox/ue-ruby-sdk
153
+ licenses:
154
+ - MIT
155
+ metadata: {}
156
+ post_install_message:
157
+ rdoc_options: []
158
+ require_paths:
159
+ - lib
160
+ required_ruby_version: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ required_rubygems_version: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
170
+ requirements: []
171
+ rubyforge_project:
172
+ rubygems_version: 2.2.2
173
+ signing_key:
174
+ specification_version: 4
175
+ summary: UnificationEngine Ruby Client SDK
176
+ test_files: []