sugarcrb 0.0.1

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/sugarcrb.rb +76 -0
  3. metadata +72 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 171fd744883d3e2b829ee5f9a0b482ea142a0d08
4
+ data.tar.gz: eeefd3aa6beb44d8a579af5be3827c3154e85eb8
5
+ SHA512:
6
+ metadata.gz: f7703b7b402fa79422cc9644b000a068103ab3f34f17ed7bc99c4dfceee70447fff4912593fb079bf68d615c1554fac8f9d89d10807f13572910784f36c78cd7
7
+ data.tar.gz: 20145c6c57d50202541d6b14c35bc202ae8676626309a92d8696be51a5406bf48e66ada655c3d22b670f8e5d1bdefa923c195e1557af34673e129c0c6a9d8a94
data/lib/sugarcrb.rb ADDED
@@ -0,0 +1,76 @@
1
+ require 'rest-client'
2
+ class Sugarcrb
3
+
4
+ def initialize(host, username, password, platform, client_id, client_secret)
5
+ # Instance variables
6
+ @host = host
7
+ @username = username
8
+ @password = password
9
+ @platform = platform
10
+ @client_secret = client_secret
11
+ @client_id = client_id
12
+ @access_token = ""
13
+ @refresh_token = ""
14
+ end
15
+
16
+ attr_accessor :username
17
+ attr_accessor :access_token
18
+ attr_accessor :refresh_token
19
+
20
+ def oauth2_token (refresh = false)
21
+ data = {
22
+ "grant_type": "password",
23
+ "client_id": @client_id,
24
+ "client_secret": @client_secret,
25
+ "username": @username,
26
+ "password": @password,
27
+ "platform": @platform
28
+ }
29
+ response = RestClient.post "#{@host}/rest/v10/oauth2/token", data
30
+ response_json = JSON.load(response)
31
+ if (response.code == 200) then
32
+ @access_token = response_json['access_token']
33
+ @refresh_token = response_json['refresh_token']
34
+ end
35
+ return response
36
+ end
37
+
38
+ def oauth2_refresh_token
39
+ data = {
40
+ "grant_type": "refresh_token",
41
+ "refresh_token": @refresh_token,
42
+ "client_id": @client_id,
43
+ "client_secret": @client_secret,
44
+ }
45
+ begin
46
+ response = RestClient.post "#{@host}/rest/v10/oauth2/token", data
47
+ response_json = JSON.load(response)
48
+ if (response.code == 200) then
49
+ @access_token = response_json['access_token']
50
+ @refresh_token = response_json['refresh_token']
51
+ end
52
+ return response
53
+ rescue RestClient::Unauthorized => err
54
+ return self.oauth2_token
55
+ end
56
+ end
57
+
58
+ def call (method, endpoint, data = false, reintents = 0)
59
+ begin
60
+ response = case method
61
+ when "post" then RestClient.post "#{@host}/rest/v10/#{endpoint}", data, headers={"OAuth-Token" => @access_token}
62
+ when "get" then RestClient.get "#{@host}/rest/v10/#{endpoint}", headers={"OAuth-Token" => @access_token}
63
+ when "put" then RestClient.put "#{@host}/rest/v10/#{endpoint}", data, headers={"OAuth-Token" => @access_token}
64
+ when "delete" then RestClient.delete "#{@host}/rest/v10/#{endpoint}", headers={"OAuth-Token" => @access_token}
65
+ end
66
+
67
+ return response
68
+ rescue RestClient::Unauthorized => err
69
+ if reintents < 3 then
70
+ self.oauth2_refresh_token
71
+ reintents = reintents + 1
72
+ self.call(method, endpoint, data, reintents)
73
+ end
74
+ end
75
+ end
76
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sugarcrb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Pedro Bazan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-03-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
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: webmock
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Gem to use SugarCRM by API rest V10
42
+ email: pedrob@merxbp.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/sugarcrb.rb
48
+ homepage: https://github.com/betobaz/sugarcrb
49
+ licenses:
50
+ - MIT
51
+ metadata: {}
52
+ post_install_message:
53
+ rdoc_options: []
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubyforge_project:
68
+ rubygems_version: 2.4.6
69
+ signing_key:
70
+ specification_version: 4
71
+ summary: Gem to use SugarCRM by API rest V10
72
+ test_files: []