caplinked-api 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9a246e596746f56c885e545285546dafc71bc019
4
- data.tar.gz: c6e3ef73bd02fb2a64286e496e8d5c550f8c9366
3
+ metadata.gz: c0d4531955ecae124eecdd22fa0f9fd60c7e4725
4
+ data.tar.gz: 29e7dfccd6fdd947a5834e344d00a6060e00c535
5
5
  SHA512:
6
- metadata.gz: b5166ac3453bcc6126ffb6b5aac5ca2f94889522db7f51fd55777f4246fc06367835b2923ca6668113619a38e65f9e560d7ea86a1df4114a99bee1314d66f28d
7
- data.tar.gz: 961c9a18d1ffb959fd850eda834af29d242b2ce060fc8083eaa8318966bd3522f5b1400b6a82d6c5d924489d406c1f7a426fec89f7f14ba50bb68922cee070dc
6
+ metadata.gz: 51e08fdb619be01e391c385cb25618efd05eb403d29858c6548ef5763d311d550b715b24dce3ea16f74abe0e340a00cc0f3280c7b9f79b54d2ead54fdaa76082
7
+ data.tar.gz: 3f422623d166ad2036e3083b3bf9bb7b7f575f3c016155a30c17d6b95444114219bc09871cafe5f611b05feeba270708826002aec3c04aa179fe6512c0e688f9
data/README.md CHANGED
@@ -3,6 +3,8 @@
3
3
  Ruby SDK for Caplinked's API
4
4
  Documentation at https://developer.caplinked.com/docs
5
5
 
6
+ Changelog at https://developer.caplinked.com/api-changelog
7
+
6
8
  ## Quick start guide:
7
9
 
8
10
  Add Rubygem to Bundle:
@@ -14,7 +16,78 @@ gem 'caplinked-api'
14
16
  Assign Client
15
17
 
16
18
  ```
17
- client = Caplinked::Client.new api_key: 'YOUR_KEY_HERE', api_host: 'sandbox.caplinked.com', api_scheme: 'https'
19
+ client = Caplinked::Client.new api_host: 'sandbox.caplinked.com', api_scheme: 'https'
20
+
21
+ client.api_key = 'YOUR_PUBLIC_API_KEY'
22
+ client.api_secret_key = 'YOUR_SECRET_API_KEY'
23
+ client.api_user_token = 'USER_RESOURCE_IDENTIFIER_TOKEN'
24
+ ```
25
+
26
+ Get User Info
27
+
28
+ ```
29
+ # Info about the current user (in this case John Smith, an organization admin)
30
+
31
+ client.get_user_info
32
+
33
+ # response
34
+ {
35
+ "id": 9818,
36
+ "first_name": "John",
37
+ "last_name": "Smith",
38
+ "email": "john@example.com",
39
+ "time_zone": "Pacific Time (US & Canada)",
40
+ "user_token": "fc39b9012e47a5713932094065e17fb7ab76e83d"
41
+ }
42
+
43
+ # As an organization admin, list all members of your organization
44
+
45
+ client.show_organization_members
46
+
47
+ # response
48
+ {
49
+ "users": [
50
+ {
51
+ "id": 9818,
52
+ "first_name": "John",
53
+ "last_name": "Smith",
54
+ "email": "john@example.com",
55
+ "time_zone": "Pacific Time (US & Canada)",
56
+ "user_token": "fc39b9012e47a5713932094065e17fb7ab76e83d"
57
+ "organization_admin": true
58
+ },
59
+ {
60
+ "id": 9820,
61
+ "first_name": "Jina",
62
+ "last_name": "Baker",
63
+ "email": "jina@example.com",
64
+ "time_zone": "Pacific Time (US & Canada)",
65
+ "user_token": "e05b83c6714120fb87a176241bc2031f22f5cf4a",
66
+ "organization_admin": false
67
+ }
68
+ ]
69
+ }
70
+ ```
71
+
72
+ Make API calls for a different user resource
73
+
74
+ ```
75
+ # Switch to Jina's user token
76
+
77
+ client.api_user_token = 'e05b83c6714120fb87a176241bc2031f22f5cf4a'
78
+
79
+ client.get_user_info
80
+
81
+ # response
82
+ {
83
+ "id": 9820,
84
+ "first_name": "Jina",
85
+ "last_name": "Baker",
86
+ "email": "jina@example.com",
87
+ "time_zone": "Pacific Time (US & Canada)",
88
+ "user_token": "e05b83c6714120fb87a176241bc2031f22f5cf4a"
89
+ }
90
+
18
91
  ```
19
92
  ## Activities:
20
93
 
@@ -308,6 +381,12 @@ Update user
308
381
  update_user = client.update_user user: { email: 'new email address'}
309
382
  ```
310
383
 
384
+ Delete user
385
+
386
+ ```
387
+ result = client.delete_user user: { id: 32523 }
388
+ ```
389
+
311
390
  ##Workspace
312
391
  List all workspaces for a team
313
392
 
@@ -9,12 +9,15 @@ module Caplinked
9
9
  class Client
10
10
  include Caplinked::Utils
11
11
  include Caplinked::REST::API
12
- attr_accessor :api_key, :api_host, :api_scheme
12
+ attr_accessor :api_key, :api_secret_key, :api_user_token, :api_host, :api_scheme
13
13
 
14
14
  # Usage:
15
15
  # client = Caplinked::Client.new api_key: '...', api_host: 'sandbox.caplinked.com'
16
- # client.upload_file file_name: '...',
16
+ # client.upload_file file_name: '...',
17
17
  def initialize(options = {})
18
+ options[:api_key] ||= ''
19
+ options[:api_secret_key] ||= ''
20
+ options[:api_user_token] ||= ''
18
21
  options[:api_host] ||= 'sandbox.caplinked.com'
19
22
  options[:api_scheme] ||= 'https'
20
23
 
@@ -16,15 +16,27 @@ module Caplinked
16
16
  end
17
17
 
18
18
  def perform
19
- headers = (@options.delete(:headers) || {}).merge('X-Token' => @client.api_key)
20
19
  @uri.query_values = @options.delete(:params)
21
- response = HTTP.headers(headers).request(@request_method, @uri.to_s, @options)
20
+ response = HTTP.headers(req_headers).request(@request_method, @uri.to_s, @options)
22
21
  response_body = response.body.empty? ? '' : change_keys_to_symbols(response.parse)
23
22
  response_headers = response.headers
24
23
  fail_or_return_response_body(response.code, response_body, response_headers)
25
24
  end
26
25
 
27
26
  private
27
+
28
+ def req_headers
29
+ expiration = 5.minutes.from_now.utc.to_s
30
+ signature = "Method=HMAC-SHA256 Signature=" + OpenSSL::HMAC.hexdigest('SHA256', @client.api_secret_key, [@client.api_key.to_s, @client.api_user_token.to_s,expiration].join)
31
+ default_headers = {
32
+ 'x-api-key' => @client.api_key,
33
+ 'x-api-user-token' => @client.api_user_token,
34
+ 'x-api-exp-date' => expiration,
35
+ 'x-api-signature' => signature
36
+ }
37
+ (@options.delete(:headers) || {}).merge(default_headers)
38
+ end
39
+
28
40
  def change_keys_to_symbols(parsed_response)
29
41
  if parsed_response.is_a?(Hash)
30
42
  parsed_response.deep_symbolize_keys
@@ -16,6 +16,11 @@ module Caplinked
16
16
  perform_put('/api/v1/users/me', nil, body.to_json, {'Content-Type' => 'application/json'} )
17
17
  end
18
18
 
19
+ def delete_user(options = {})
20
+ body = options.stringify_keys.slice('user')
21
+ perform_delete('/api/v1/users', nil, body.to_json, {'Content-Type' => 'application/json'})
22
+ end
23
+
19
24
  end
20
25
  end
21
26
  end
@@ -8,8 +8,8 @@ module Caplinked
8
8
  perform_request(:get, path, { params: params })
9
9
  end
10
10
 
11
- def perform_delete(path, params = {})
12
- perform_request(:delete, path, { params: params })
11
+ def perform_delete(path, params = {}, body = {}, headers = {})
12
+ perform_request(:delete, path, { params: params, body: body, headers: headers })
13
13
  end
14
14
 
15
15
  def perform_put(path, params = {}, body = {}, headers = {})
@@ -9,7 +9,7 @@ module Caplinked
9
9
 
10
10
  # @return [Integer]
11
11
  def minor
12
- 2
12
+ 3
13
13
  end
14
14
 
15
15
  # @return [Integer]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caplinked-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordan Fowler
@@ -9,76 +9,76 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-01-24 00:00:00.000000000 Z
12
+ date: 2017-02-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '4.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '4.0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: addressable
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: '2.3'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '2.3'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: http
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '2.0'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '2.0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: http-form_data
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '1.0'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: '1.0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: bundler
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ~>
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
76
  version: '1.0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ~>
81
+ - - "~>"
82
82
  - !ruby/object:Gem::Version
83
83
  version: '1.0'
84
84
  description: Ruby SDK for Caplinked's API.
@@ -90,6 +90,7 @@ extra_rdoc_files: []
90
90
  files:
91
91
  - README.md
92
92
  - caplinked-api.gemspec
93
+ - lib/caplinked-api.rb
93
94
  - lib/caplinked/client.rb
94
95
  - lib/caplinked/error.rb
95
96
  - lib/caplinked/request.rb
@@ -106,7 +107,6 @@ files:
106
107
  - lib/caplinked/rest/workspaces.rb
107
108
  - lib/caplinked/utils.rb
108
109
  - lib/caplinked/version.rb
109
- - lib/caplinked-api.rb
110
110
  homepage: https://github.com/caplinked/caplinked-api-ruby
111
111
  licenses:
112
112
  - MIT
@@ -117,17 +117,17 @@ require_paths:
117
117
  - lib
118
118
  required_ruby_version: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - '>='
120
+ - - ">="
121
121
  - !ruby/object:Gem::Version
122
122
  version: 1.9.3
123
123
  required_rubygems_version: !ruby/object:Gem::Requirement
124
124
  requirements:
125
- - - '>='
125
+ - - ">="
126
126
  - !ruby/object:Gem::Version
127
127
  version: '0'
128
128
  requirements: []
129
129
  rubyforge_project:
130
- rubygems_version: 2.0.14
130
+ rubygems_version: 2.4.5
131
131
  signing_key:
132
132
  specification_version: 4
133
133
  summary: Ruby SDK for Caplinked's API.