sugarcrb 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []