onepagecrm 0.0.7 → 0.2.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 +5 -5
- data/.gitignore +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +48 -0
- data/README.md +27 -15
- data/lib/onepagecrm/version.rb +3 -2
- data/lib/onepagecrm.rb +25 -112
- data/onepagecrm.gemspec +9 -12
- metadata +21 -55
- data/config/config_orig.yml +0 -2
- data/spec/contacts_spec.rb +0 -53
- data/spec/spec_helper.rb +0 -7
- data/tasks/rspec.rake +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6f43b8af18d61a41037c8f68194d03d919f7474f0dc22ddbf532c0821d52faa0
|
4
|
+
data.tar.gz: aaf2df2075abd43f72d288fe2e5e7018b7d9b41bd5e65c2f68a1cde3989292fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0db66e59769acc854b5a97004ab8f350294487b598ac08b2e53764ec1530910944011702d9a07dede643ef934a1ca7273901583c07adaac3cf06b71ba4d7b351
|
7
|
+
data.tar.gz: 57ea63f3882375254073ed092d6ebc55c7eacf2634be5da8490072506282d8e49abcc7fe522128fa231c00474e3a225323caa7ca41c2e0d7b0ed5b3d81345b05
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
onepagecrm (0.2.0)
|
5
|
+
faraday
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
coderay (1.1.3)
|
11
|
+
faraday (1.7.1)
|
12
|
+
faraday-em_http (~> 1.0)
|
13
|
+
faraday-em_synchrony (~> 1.0)
|
14
|
+
faraday-excon (~> 1.1)
|
15
|
+
faraday-httpclient (~> 1.0.1)
|
16
|
+
faraday-net_http (~> 1.0)
|
17
|
+
faraday-net_http_persistent (~> 1.1)
|
18
|
+
faraday-patron (~> 1.0)
|
19
|
+
faraday-rack (~> 1.0)
|
20
|
+
multipart-post (>= 1.2, < 3)
|
21
|
+
ruby2_keywords (>= 0.0.4)
|
22
|
+
faraday-em_http (1.0.0)
|
23
|
+
faraday-em_synchrony (1.0.0)
|
24
|
+
faraday-excon (1.1.0)
|
25
|
+
faraday-httpclient (1.0.1)
|
26
|
+
faraday-net_http (1.0.1)
|
27
|
+
faraday-net_http_persistent (1.2.0)
|
28
|
+
faraday-patron (1.0.0)
|
29
|
+
faraday-rack (1.0.0)
|
30
|
+
method_source (1.0.0)
|
31
|
+
multipart-post (2.1.1)
|
32
|
+
pry (0.14.1)
|
33
|
+
coderay (~> 1.1)
|
34
|
+
method_source (~> 1.0)
|
35
|
+
rake (10.5.0)
|
36
|
+
ruby2_keywords (0.0.5)
|
37
|
+
|
38
|
+
PLATFORMS
|
39
|
+
ruby
|
40
|
+
|
41
|
+
DEPENDENCIES
|
42
|
+
bundler (~> 2.2.18)
|
43
|
+
onepagecrm!
|
44
|
+
pry
|
45
|
+
rake (~> 10.5)
|
46
|
+
|
47
|
+
BUNDLED WITH
|
48
|
+
2.2.18
|
data/README.md
CHANGED
@@ -1,18 +1,14 @@
|
|
1
|
-
|
1
|
+
# OnePageCRM
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
TODO: Write a gem description
|
3
|
+
This gem is a basic wrapper around the OnePageCRM API.
|
4
|
+
It does not abstract all API calls to ruby methods on the gem object but simply gives the `GET`, `POST`, `PUT` and `DELETE` methods.
|
5
|
+
The gem handles all the authentication with the OnePageCRM API.
|
8
6
|
|
9
7
|
## Installation
|
10
8
|
|
11
9
|
Add this line to your application's Gemfile:
|
12
10
|
|
13
|
-
|
14
|
-
gem 'onepagecrm'
|
15
|
-
```
|
11
|
+
gem 'onepagecrm'
|
16
12
|
|
17
13
|
And then execute:
|
18
14
|
|
@@ -23,13 +19,29 @@ Or install it yourself as:
|
|
23
19
|
$ gem install onepagecrm
|
24
20
|
|
25
21
|
## Usage
|
22
|
+
You can try out the OnePageCRM gem in an interactive ruby session
|
23
|
+
|
24
|
+
$ irb
|
25
|
+
irb:> require 'onepagecrm'
|
26
|
+
irb:> api_client = OnePageCRM.new('user_id', 'api_key')
|
27
|
+
irb:> api_client.get('contacts.json')
|
28
|
+
irb:> api_client.post('contacts.json', {'last_name': 'Bravo', 'first_name': 'Johnny'} )
|
29
|
+
|
30
|
+
Take a look at the [OnePageCRM Developer][1] site for more details on API functionality.
|
26
31
|
|
27
|
-
|
32
|
+
## Support
|
33
|
+
The best way to get support is through the [OnePageCRM Developer Forum][2]
|
28
34
|
|
29
35
|
## Contributing
|
30
36
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
37
|
+
We welcome any contributions.
|
38
|
+
|
39
|
+
1. Create an issue relating to the feature that you require.
|
40
|
+
2. Fork the repo ( https://github.com/[my-github-username]/onepagecrm/fork )
|
41
|
+
3. Create your feature branch (`git checkout -b my-new-feature`)
|
42
|
+
4. Commit your changes (`git commit -am 'Add some feature'`)
|
43
|
+
5. Push to the branch (`git push origin my-new-feature`)
|
44
|
+
6. Create a new Pull Request
|
45
|
+
|
46
|
+
[1]: http://developer.onepagecrm.com
|
47
|
+
[2]: http://forum.developer.onepagecrm.com
|
data/lib/onepagecrm/version.rb
CHANGED
data/lib/onepagecrm.rb
CHANGED
@@ -1,123 +1,36 @@
|
|
1
1
|
require 'onepagecrm/version'
|
2
|
-
require 'net/http'
|
3
|
-
require 'openssl'
|
4
2
|
require 'base64'
|
5
3
|
require 'json'
|
6
|
-
require '
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
@
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
password: @password
|
21
|
-
}
|
22
|
-
|
23
|
-
auth_data = post('login.json', params)
|
24
|
-
@uid = auth_data['data']['user_id']
|
25
|
-
|
26
|
-
@api_key = Base64.decode64(auth_data['data']['auth_key'])
|
27
|
-
end
|
28
|
-
|
29
|
-
def return_uid
|
30
|
-
@uid
|
31
|
-
end
|
32
|
-
|
33
|
-
# Send GET request
|
34
|
-
def get(method, params = {})
|
35
|
-
url = URI.parse(@url + method)
|
36
|
-
get_data = params.empty? ? '' : '?' + params.to_a.map do|x|
|
37
|
-
x[0] + '=' +
|
38
|
-
URI.escape(x[1], Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
|
39
|
-
end.join('&').gsub(/%[0-9A-Fa-f]{2}/) { |x| x.downcase }
|
40
|
-
|
41
|
-
req = Net::HTTP::Get.new(url.request_uri)
|
42
|
-
|
43
|
-
add_auth_headers(req, 'GET', method, params)
|
44
|
-
|
45
|
-
http = Net::HTTP.new(url.host, url.port)
|
46
|
-
http.use_ssl = true
|
47
|
-
result = http.request(req).body
|
48
|
-
JSON.parse result
|
4
|
+
require 'faraday'
|
5
|
+
|
6
|
+
# OnePageCRM API Client Object
|
7
|
+
class OnePageCRM
|
8
|
+
def initialize(user_id, api_key)
|
9
|
+
url = 'https://app.onepagecrm.com/api/v3/'
|
10
|
+
@conn = Faraday.new(url: url) do |conn|
|
11
|
+
conn.adapter Faraday.default_adapter
|
12
|
+
conn.basic_auth(user_id, api_key)
|
13
|
+
conn.headers.merge!(
|
14
|
+
'Content-Type' => 'application/json',
|
15
|
+
'X-OnePageCRM-UID' => user_id,
|
16
|
+
'X-OnePageCRM-Source' => 'ruby_gem'
|
17
|
+
)
|
49
18
|
end
|
50
|
-
|
51
|
-
# Send POST request
|
52
|
-
def post(method, params = {})
|
53
|
-
url = URI.parse(@url + method)
|
54
|
-
req = Net::HTTP::Post.new(url.path)
|
55
|
-
req.body = params.to_json
|
56
|
-
req.add_field('Content-Type', 'application/json; charset=utf-8')
|
57
|
-
|
58
|
-
add_auth_headers(req, 'POST', method, params)
|
59
|
-
|
60
|
-
http = Net::HTTP.new(url.host, url.port)
|
61
|
-
http.use_ssl = true
|
62
|
-
result = http.request(req).body
|
63
|
-
JSON.parse result
|
64
19
|
end
|
65
20
|
|
66
|
-
#
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
add_auth_headers(req, 'PUT', method, params)
|
73
|
-
|
74
|
-
http = Net::HTTP.new(url.host, url.port)
|
75
|
-
http.use_ssl = true
|
76
|
-
result = http.request(req).body
|
77
|
-
JSON.parse result
|
21
|
+
# defines get and delete methods
|
22
|
+
%w(get delete).each do |http_method|
|
23
|
+
define_method http_method do |endpoint, params = {}|
|
24
|
+
response = @conn.send(http_method, endpoint, params)
|
25
|
+
JSON.parse response.body
|
26
|
+
end
|
78
27
|
end
|
79
28
|
|
80
|
-
#
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
x[0] + '=' +
|
86
|
-
URI.escape(x[1], Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
|
87
|
-
end.join('&').gsub(/%[0-9A-Fa-f]{2}/) { |x| x.downcase }
|
88
|
-
|
89
|
-
req = Net::HTTP::Delete.new(url.request_uri)
|
90
|
-
add_auth_headers(req, 'DELETE', method, params)
|
91
|
-
http = Net::HTTP.new(url.host, url.port)
|
92
|
-
http.use_ssl = true
|
93
|
-
result = http.request(req).body
|
94
|
-
JSON.parse result
|
29
|
+
# Defines put and post methods
|
30
|
+
%w(post put).each do |http_method|
|
31
|
+
define_method http_method do |endpoint, params = {}|
|
32
|
+
response = @conn.send(http_method, endpoint, params.to_json)
|
33
|
+
JSON.parse response.body
|
95
34
|
end
|
96
|
-
|
97
|
-
# Add authentication headers
|
98
|
-
def add_auth_headers(req, http_method, api_method, params)
|
99
|
-
return if @uid.nil? || @api_key.nil?
|
100
|
-
|
101
|
-
url_to_sign = @url + api_method
|
102
|
-
params_to_sign = params.empty? ? nil : URI.encode_www_form(params)
|
103
|
-
url_to_sign += '?' + params_to_sign unless params_to_sign.nil? || %w(POST PUT).include?(http_method)
|
104
|
-
|
105
|
-
# puts url_to_sign
|
106
|
-
timestamp = Time.now.to_i.to_s
|
107
|
-
|
108
|
-
token = create_signature(@uid, @api_key, timestamp, http_method, url_to_sign, params)
|
109
|
-
|
110
|
-
req.add_field('X-OnePageCRM-UID', @uid)
|
111
|
-
req.add_field('X-OnePageCRM-TS', timestamp)
|
112
|
-
req.add_field('X-OnePageCRM-Auth', token)
|
113
|
-
req.add_field('X-OnePageCRM-Source', 'lead_clip_chrome')
|
114
|
-
end
|
115
|
-
|
116
|
-
def create_signature(uid, api_key, timestamp, request_type, request_url, request_body)
|
117
|
-
request_url_hash = Digest::SHA1.hexdigest request_url
|
118
|
-
request_body_hash = Digest::SHA1.hexdigest request_body.to_json
|
119
|
-
signature_message = [uid, timestamp, request_type.upcase, request_url_hash].join '.'
|
120
|
-
signature_message += ('.' + request_body_hash) unless request_body.empty?
|
121
|
-
OpenSSL::HMAC.hexdigest('sha256', api_key, signature_message).to_s
|
122
35
|
end
|
123
36
|
end
|
data/onepagecrm.gemspec
CHANGED
@@ -2,25 +2,22 @@
|
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
4
|
require 'onepagecrm/version'
|
5
|
-
|
6
5
|
Gem::Specification.new do |spec|
|
7
6
|
spec.name = 'onepagecrm'
|
8
|
-
spec.version =
|
7
|
+
spec.version = OnePageCRM::VERSION
|
9
8
|
spec.authors = ['Peter Armstrong']
|
10
|
-
spec.email = ['
|
11
|
-
spec.summary =
|
12
|
-
spec.description =
|
13
|
-
spec.homepage = ''
|
9
|
+
spec.email = ['devteam@onepagecrm.com']
|
10
|
+
spec.summary = 'Basic Gem for OnePageCRM'
|
11
|
+
spec.description = 'Basic Gem for the OnePageCRM API'
|
12
|
+
spec.homepage = 'http://developer.onepagecrm.com'
|
14
13
|
spec.license = 'MIT'
|
15
|
-
|
16
14
|
spec.files = `git ls-files -z`.split("\x0")
|
17
15
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
17
|
spec.require_paths = ['lib']
|
20
18
|
|
21
|
-
spec.
|
22
|
-
|
23
|
-
spec.add_development_dependency '
|
24
|
-
spec.add_development_dependency '
|
25
|
-
spec.add_development_dependency 'codeclimate-test-reporter'
|
19
|
+
spec.add_dependency 'faraday'
|
20
|
+
|
21
|
+
spec.add_development_dependency 'bundler', '~> 2.2.18'
|
22
|
+
spec.add_development_dependency 'rake', '~> 10.5'
|
26
23
|
end
|
metadata
CHANGED
@@ -1,51 +1,23 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: onepagecrm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Armstrong
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.7'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.7'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '10.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '10.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec
|
14
|
+
name: faraday
|
43
15
|
requirement: !ruby/object:Gem::Requirement
|
44
16
|
requirements:
|
45
17
|
- - ">="
|
46
18
|
- !ruby/object:Gem::Version
|
47
19
|
version: '0'
|
48
|
-
type: :
|
20
|
+
type: :runtime
|
49
21
|
prerelease: false
|
50
22
|
version_requirements: !ruby/object:Gem::Requirement
|
51
23
|
requirements:
|
@@ -53,53 +25,50 @@ dependencies:
|
|
53
25
|
- !ruby/object:Gem::Version
|
54
26
|
version: '0'
|
55
27
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
28
|
+
name: bundler
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
58
30
|
requirements:
|
59
|
-
- - "
|
31
|
+
- - "~>"
|
60
32
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
33
|
+
version: 2.2.18
|
62
34
|
type: :development
|
63
35
|
prerelease: false
|
64
36
|
version_requirements: !ruby/object:Gem::Requirement
|
65
37
|
requirements:
|
66
|
-
- - "
|
38
|
+
- - "~>"
|
67
39
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
40
|
+
version: 2.2.18
|
69
41
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
42
|
+
name: rake
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
72
44
|
requirements:
|
73
|
-
- - "
|
45
|
+
- - "~>"
|
74
46
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
47
|
+
version: '10.5'
|
76
48
|
type: :development
|
77
49
|
prerelease: false
|
78
50
|
version_requirements: !ruby/object:Gem::Requirement
|
79
51
|
requirements:
|
80
|
-
- - "
|
52
|
+
- - "~>"
|
81
53
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
83
|
-
description: Basic Gem for OnePageCRM
|
54
|
+
version: '10.5'
|
55
|
+
description: Basic Gem for the OnePageCRM API
|
84
56
|
email:
|
85
|
-
-
|
57
|
+
- devteam@onepagecrm.com
|
86
58
|
executables: []
|
87
59
|
extensions: []
|
88
60
|
extra_rdoc_files: []
|
89
61
|
files:
|
90
62
|
- ".gitignore"
|
91
63
|
- Gemfile
|
64
|
+
- Gemfile.lock
|
92
65
|
- LICENSE.txt
|
93
66
|
- README.md
|
94
67
|
- Rakefile
|
95
|
-
- config/config_orig.yml
|
96
68
|
- lib/onepagecrm.rb
|
97
69
|
- lib/onepagecrm/version.rb
|
98
70
|
- onepagecrm.gemspec
|
99
|
-
|
100
|
-
- spec/spec_helper.rb
|
101
|
-
- tasks/rspec.rake
|
102
|
-
homepage: ''
|
71
|
+
homepage: http://developer.onepagecrm.com
|
103
72
|
licenses:
|
104
73
|
- MIT
|
105
74
|
metadata: {}
|
@@ -118,11 +87,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
87
|
- !ruby/object:Gem::Version
|
119
88
|
version: '0'
|
120
89
|
requirements: []
|
121
|
-
|
122
|
-
rubygems_version: 2.2.2
|
90
|
+
rubygems_version: 3.1.6
|
123
91
|
signing_key:
|
124
92
|
specification_version: 4
|
125
|
-
summary: Basic Gem for OnePageCRM
|
126
|
-
test_files:
|
127
|
-
- spec/contacts_spec.rb
|
128
|
-
- spec/spec_helper.rb
|
93
|
+
summary: Basic Gem for OnePageCRM
|
94
|
+
test_files: []
|
data/config/config_orig.yml
DELETED
data/spec/contacts_spec.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'json_spec'
|
3
|
-
|
4
|
-
describe Onepagecrm do
|
5
|
-
subject { Onepagecrm.new(TEST_CONFIG['login'], TEST_CONFIG['password']) }
|
6
|
-
|
7
|
-
describe '#create_contact' do
|
8
|
-
it 'creates a new contact' do
|
9
|
-
new_contact_details = ({
|
10
|
-
'first_name' => 'yes',
|
11
|
-
'last_name' => 'address',
|
12
|
-
'company_name' => 'ACME&inc',
|
13
|
-
'starred' => false,
|
14
|
-
'tags' => %w(api_test1 api_test2),
|
15
|
-
'emails' => [{
|
16
|
-
'type' => 'work',
|
17
|
-
'value' => 'johnny@exammmple.com' }],
|
18
|
-
'phones' => [{
|
19
|
-
'type' => 'work',
|
20
|
-
'value' => '00033353' }],
|
21
|
-
'urls' => [{
|
22
|
-
'type' => 'website',
|
23
|
-
'value' => 'lsdkiteboarding.com' }],
|
24
|
-
'background' => 'BACKGROUND',
|
25
|
-
'job_title' => 'JOBTITLE',
|
26
|
-
'address_list' => [
|
27
|
-
'city' => 'San Francisco',
|
28
|
-
'state' => 'CA'
|
29
|
-
]
|
30
|
-
})
|
31
|
-
|
32
|
-
new_contact = subject.post('contacts.json', new_contact_details)['data']
|
33
|
-
new_contact_id = new_contact['contact']['id']
|
34
|
-
got_deets = subject.get("contacts/#{new_contact_id}.json")['data']['contact']
|
35
|
-
expect(got_deets['first_name']).to eq(new_contact_details['first_name'])
|
36
|
-
|
37
|
-
details_without_address = new_contact_details.reject { |k| k == 'address_list' }
|
38
|
-
|
39
|
-
details_without_address.each do |k, _v|
|
40
|
-
expect(got_deets[k]).to eq(new_contact_details[k])
|
41
|
-
end
|
42
|
-
|
43
|
-
# check address
|
44
|
-
address = got_deets['address_list'][0]
|
45
|
-
expect(address['city']).to eq 'San Francisco'
|
46
|
-
expect(address['state']).to eq 'CA'
|
47
|
-
|
48
|
-
# delete contact
|
49
|
-
subject.delete("contacts/#{new_contact_id}.json")
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
data/spec/spec_helper.rb
DELETED
data/tasks/rspec.rake
DELETED