ue-ruby-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 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: []