springcm-sdk 0.1.0 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f378f7dc1698fe53469166c6ced20bbed1aef7c43ccf514ce748138624d5bafb
4
- data.tar.gz: 1933002ce3f5a7d2fdac68f8462c23aa7ceef4f56bec771da2e02a7054819a4c
3
+ metadata.gz: 62ce246eed8c9903f1a23c83296df864a39b29e7bdfc0dd1351833854ff9b2d4
4
+ data.tar.gz: 51bef14dbffb1245439232d41c10eb64d5ce29b31a3e1483aa6973e0be53b4ea
5
5
  SHA512:
6
- metadata.gz: 93f36689ee2c46f12fc2d30cc4bfb992c9908c90b0a6e0e4a6a984b7fa8bcddadd582e38e8a9c7ca7a3839ce3a166408b2dfe3a59fb5ed8776475c9b938f4709
7
- data.tar.gz: 6e65ec9ce5d2133f171254aee6ae1bab732f575977fb01b5c9eb2ec737332aabb7ae772f15db331c5760077d28ec4da6adf9de49de1cbf7a7b2b6da0799adc36
6
+ metadata.gz: f09b65c50f48af5ffa74584137bd79b3cb62fcab93f2b11ddca2089ef1815c82a455e23c6fc3591630a5238d29a37f452856d06e5e95bc25d0acd69f01c85d9d
7
+ data.tar.gz: d8f334881ad6de05354f696c8738344222750f177b2013e37492e71e1a392f1ce5173d8acd287ebddd768ade0c5d6ee9fe09532c3d911aa1d62469d04d931cd1
data/.gitignore CHANGED
@@ -1 +1,5 @@
1
1
  Gemfile.lock
2
+ springcm-sdk-*.gem
3
+ coverage
4
+ .yardoc
5
+ doc
data/.travis.yml CHANGED
@@ -5,3 +5,11 @@ cache: bundler
5
5
  rvm:
6
6
  - 2.5.5
7
7
  before_install: gem install bundler -v 2.0.1
8
+ before_script:
9
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
10
+ - chmod +x ./cc-test-reporter
11
+ - ./cc-test-reporter before-build
12
+ script:
13
+ - bundle exec rspec
14
+ after_script:
15
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
data/CHANGELOG.md ADDED
@@ -0,0 +1,22 @@
1
+ # springcm-sdk changelog
2
+
3
+ All notable changes to springcm-sdk will be documented in this file.
4
+
5
+ ## [Unreleased]
6
+
7
+ ## [0.1.1] - 2019-07-17
8
+ ### Added
9
+ * `Client#connect!` method
10
+ * Documentation generation
11
+ * Test coverage
12
+
13
+ ### Changed
14
+ * Fix issues with gemspec file
15
+
16
+ ## [0.1.0] - 2019-07-16
17
+ ### Added
18
+ * Initial release to reserve gem name
19
+
20
+ [Unreleased]: https://github.com/paulholden2/springcm-sdk/compare/v0.1.0...HEAD
21
+ [0.1.0]: https://github.com/paulholden2/springcm-sdk/releases/tag/v0.1.0
22
+ [0.1.1]: https://github.com/paulholden2/springcm-sdk/releases/tag/v0.1.1
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SpringCM
2
2
 
3
- [![Build Status](https://travis-ci.org/paulholden2/springcm-sdk.svg?branch=master)](https://travis-ci.org/paulholden2/springcm-sdk)
3
+ [![Gem Version](https://badge.fury.io/rb/springcm-sdk.svg)](https://badge.fury.io/rb/springcm-sdk) [![Build Status](https://travis-ci.org/paulholden2/springcm-sdk.svg?branch=master)](https://travis-ci.org/paulholden2/springcm-sdk) [![Maintainability](https://api.codeclimate.com/v1/badges/06e1dd90fde417de15da/maintainability)](https://codeclimate.com/github/paulholden2/springcm-sdk/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/06e1dd90fde417de15da/test_coverage)](https://codeclimate.com/github/paulholden2/springcm-sdk/test_coverage)
4
4
 
5
5
  This gem is a library for working with the SpringCM REST API.
6
6
 
data/lib/springcm.rb CHANGED
@@ -14,4 +14,10 @@ module Springcm
14
14
 
15
15
  class ConnectionInfoError < Error
16
16
  end
17
+
18
+ class InvalidClientIdOrSecretError < Error
19
+ def initialize
20
+ super('Invalid Client Id or Client Secret')
21
+ end
22
+ end
17
23
  end
@@ -2,6 +2,9 @@ require "faraday"
2
2
 
3
3
  module Springcm
4
4
  class Client
5
+ # @param data_center [String] Data center name, e.g. uatna11
6
+ # @param client_id [String] Your API client ID
7
+ # @param client_secret [String] Your API client secret
5
8
  def initialize(data_center:, client_id:, client_secret:)
6
9
  if !["na11", "uatna11"].include?(data_center)
7
10
  raise Springcm::ConnectionInfoError.new("Invalid data center '#{data_center.to_s}'")
@@ -15,7 +18,10 @@ module Springcm
15
18
  @access_token
16
19
  end
17
20
 
18
- def connect
21
+ # Connect to the configured SpringCM API service
22
+ # @param safe If truthy, connection failure does not raise an exception
23
+ # @return [Boolean] Whether connection was successful
24
+ def connect(safe=true)
19
25
  conn = Faraday.new(url: auth_url)
20
26
  res = conn.post do |req|
21
27
  req.url "/"
@@ -24,28 +30,46 @@ module Springcm
24
30
  client_secret: @client_secret
25
31
  }.to_json
26
32
  end
27
- data = JSON.parse(res.body)
28
- @access_token = data.fetch("access_token")
29
- @expiry = Time.now + data.fetch("expires_in")
30
- true
33
+ if res.success?
34
+ data = JSON.parse(res.body)
35
+ @access_token = data.fetch("access_token")
36
+ @expiry = Time.now + data.fetch("expires_in")
37
+ true
38
+ else
39
+ @access_token = nil
40
+ @expiry = nil
41
+ raise Springcm::InvalidClientIdOrSecretError.new if !safe
42
+ false
43
+ end
44
+ end
45
+
46
+ # Shorthand for connecting unsafely
47
+ def connect!
48
+ connect(false)
31
49
  end
32
50
 
51
+ # Check if client is successfully authenticated
52
+ # @return [Boolean] Whether a valid, unexpired access token is held.
33
53
  def authenticated?
34
54
  !!@access_token && @expiry > Time.now
35
55
  end
36
56
 
57
+ # Get the URL for object API requests
37
58
  def object_api_url
38
59
  "https://api#{@data_center}.springcm.com/v#{@api_version}"
39
60
  end
40
61
 
62
+ # Get the URL for content upload API requests
41
63
  def upload_api_url
42
64
  "https://apiupload#{@data_center}.springcm.com/v#{@api_version}"
43
65
  end
44
66
 
67
+ # Get the URL for content download requests
45
68
  def download_api_url
46
69
  "https://apidownload#{@data_center}.springcm.com/v#{@api_version}"
47
70
  end
48
71
 
72
+ # Get the URL for authentication requests
49
73
  def auth_url
50
74
  "https://auth#{auth_subdomain_suffix}.springcm.com/api/v#{@auth_version}/apiuser"
51
75
  end
@@ -1,3 +1,3 @@
1
1
  module Springcm
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/springcm-sdk.gemspec CHANGED
@@ -9,9 +9,9 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Paul Holden"]
10
10
  spec.email = ["pholden@stria.com"]
11
11
 
12
- spec.summary = %q{A library API working with the SpringCM REST API.}
13
- spec.description = %q{A library API working with the SpringCM REST API.}
14
- spec.homepage = "https://github.com/paulholden2/springcm"
12
+ spec.summary = %q{A library for working with the SpringCM REST API.}
13
+ spec.description = %q{A library for working with the SpringCM REST API and associated objects in Ruby applications.}
14
+ spec.homepage = "https://github.com/paulholden2/springcm-sdk"
15
15
  spec.license = "MIT"
16
16
 
17
17
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
@@ -20,8 +20,9 @@ Gem::Specification.new do |spec|
20
20
  spec.metadata["allowed_push_host"] = "https://rubygems.org"
21
21
 
22
22
  spec.metadata["homepage_uri"] = spec.homepage
23
- spec.metadata["source_code_uri"] = "https://github.com/paulholden2/springcm"
24
- # spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
23
+ spec.metadata["source_code_uri"] = "https://github.com/paulholden2/springcm-sdk"
24
+ spec.metadata["documentation_uri"] = "https://rubydoc.info/github/paulholden2/springcm-sdk/#{Springcm::VERSION}"
25
+ spec.metadata["changelog_uri"] = "https://github.com/paulholden2/springcm-sdk/blob/master/CHANGELOG.md"
25
26
  else
26
27
  raise "RubyGems 2.0 or newer is required to protect against " \
27
28
  "public gem pushes."
@@ -43,4 +44,6 @@ Gem::Specification.new do |spec|
43
44
  spec.add_development_dependency "rspec", "~> 3.0"
44
45
  spec.add_development_dependency "sinatra", "~> 2.0"
45
46
  spec.add_development_dependency "webmock", "~> 3.6"
47
+ spec.add_development_dependency "simplecov", "~> 0.17"
48
+ spec.add_development_dependency "yard", "~> 0.9"
46
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: springcm-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Holden
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-16 00:00:00.000000000 Z
11
+ date: 2019-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -94,7 +94,36 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '3.6'
97
- description: A library API working with the SpringCM REST API.
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.17'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.17'
111
+ - !ruby/object:Gem::Dependency
112
+ name: yard
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.9'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.9'
125
+ description: A library for working with the SpringCM REST API and associated objects
126
+ in Ruby applications.
98
127
  email:
99
128
  - pholden@stria.com
100
129
  executables: []
@@ -105,6 +134,7 @@ files:
105
134
  - ".gitignore"
106
135
  - ".rspec"
107
136
  - ".travis.yml"
137
+ - CHANGELOG.md
108
138
  - Gemfile
109
139
  - LICENSE.txt
110
140
  - README.md
@@ -115,13 +145,15 @@ files:
115
145
  - lib/springcm/client.rb
116
146
  - lib/springcm/version.rb
117
147
  - springcm-sdk.gemspec
118
- homepage: https://github.com/paulholden2/springcm
148
+ homepage: https://github.com/paulholden2/springcm-sdk
119
149
  licenses:
120
150
  - MIT
121
151
  metadata:
122
152
  allowed_push_host: https://rubygems.org
123
- homepage_uri: https://github.com/paulholden2/springcm
124
- source_code_uri: https://github.com/paulholden2/springcm
153
+ homepage_uri: https://github.com/paulholden2/springcm-sdk
154
+ source_code_uri: https://github.com/paulholden2/springcm-sdk
155
+ documentation_uri: https://rubydoc.info/github/paulholden2/springcm-sdk/0.1.1
156
+ changelog_uri: https://github.com/paulholden2/springcm-sdk/blob/master/CHANGELOG.md
125
157
  post_install_message:
126
158
  rdoc_options: []
127
159
  require_paths:
@@ -141,5 +173,5 @@ rubyforge_project:
141
173
  rubygems_version: 2.7.7
142
174
  signing_key:
143
175
  specification_version: 4
144
- summary: A library API working with the SpringCM REST API.
176
+ summary: A library for working with the SpringCM REST API.
145
177
  test_files: []