zaikio-hub 0.6.2 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +29 -1
- data/README.md +11 -10
- data/Rakefile +1 -3
- data/lib/zaikio/hub/app.rb +12 -0
- data/lib/zaikio/hub/base.rb +3 -1
- data/lib/zaikio/hub/basic_auth_middleware.rb +0 -2
- data/lib/zaikio/hub/connection.rb +0 -2
- data/lib/zaikio/hub/current_organization.rb +13 -0
- data/lib/zaikio/hub/subscription.rb +1 -3
- data/lib/zaikio/hub/version.rb +1 -1
- data/lib/zaikio/hub.rb +5 -7
- metadata +29 -14
- data/lib/zaikio/error.rb +0 -18
- data/lib/zaikio/hub/json_parser.rb +0 -36
- data/lib/zaikio/hub/pagination/header_parser.rb +0 -25
- data/lib/zaikio/hub/pagination/relation.rb +0 -41
- data/lib/zaikio/hub/pagination/scopes.rb +0 -23
- data/lib/zaikio/hub/pagination.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cb7e370ad9b9dbb15d7e6637293d95f33cefc3d48b255aafd1d88f9607f77fc
|
4
|
+
data.tar.gz: 995f65525b2baf40b34c2cc8d7eaf1685e201a7fbca67fc3834189140b822ca2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca9c4d829d55480f69cfa5b619d8d471486ac15ad1b5a8bc4aa9c4b2ada5508948be81b82ef0ce309c21d09d427d604c0352add0309d2f08f5ea5fd09a268fc0
|
7
|
+
data.tar.gz: 0a5f4048cdf0b65e5f42cae0e4da1c18ed5fe7d73232b098956de8cbad736f4fde4998abce70d14e54992213d9a3dd5a54a5dcf3d60835b40f76cdcc313e766a
|
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## [0.9.1] - 2022-01-05
|
11
|
+
|
12
|
+
* Fix warning about redefined methods in BasicAuthMiddleware
|
13
|
+
* Permit newer versions of Spyke & JWT gems
|
14
|
+
|
15
|
+
## [0.9.0] - 2021-08-31
|
16
|
+
|
17
|
+
* Added `.connections` and `.apps` for `CurrentOrganization`s that are vendors
|
18
|
+
|
19
|
+
## [0.8.0] - 2021-08-25
|
20
|
+
|
21
|
+
* Added `CurrentOrganization#create_subscription`
|
22
|
+
|
23
|
+
## [0.7.0] - 2021-06-18
|
24
|
+
|
25
|
+
* **BREAKING** `Relation#all` now fetches all following paginated resources by default
|
26
|
+
(endpoints which don't support pagination are unaffected).
|
27
|
+
* **BREAKING** Removed `Relation#each_page` method. You should just use the `all` method now
|
28
|
+
instead:
|
29
|
+
|
30
|
+
```diff
|
31
|
+
-Model.all.each_page.flat_map(&:to_a)
|
32
|
+
+Model.all.to_a
|
33
|
+
```
|
34
|
+
|
10
35
|
## [0.6.2] - 2021-04-27
|
11
36
|
|
12
37
|
* Include `id` property in `CurrentPerson#attributes` and `CurrentOrganization#attributes`
|
@@ -61,7 +86,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
61
86
|
### Added
|
62
87
|
- Added subscriptions (migration required)
|
63
88
|
|
64
|
-
[Unreleased]: https://github.com/zaikio/zaikio-hub-ruby/compare/v0.
|
89
|
+
[Unreleased]: https://github.com/zaikio/zaikio-hub-ruby/compare/v0.9.0..HEAD
|
90
|
+
[0.9.0]: https://github.com/zaikio/zaikio-hub-ruby/compare/v0.8.0..v0.9.0
|
91
|
+
[0.8.0]: https://github.com/zaikio/zaikio-hub-ruby/compare/v0.7.0..v0.8.0
|
92
|
+
[0.7.0]: https://github.com/zaikio/zaikio-hub-ruby/compare/v0.6.2..v0.7.0
|
65
93
|
[0.6.2]: https://github.com/zaikio/zaikio-hub-ruby/compare/v0.6.1..v0.6.2
|
66
94
|
[0.6.1]: https://github.com/zaikio/zaikio-hub-ruby/compare/v0.6.0..v0.6.1
|
67
95
|
[0.6.0]: https://github.com/zaikio/zaikio-hub-ruby/compare/v0.5.0..v0.6.0
|
data/README.md
CHANGED
@@ -46,8 +46,10 @@ token = "..." # Your valid JWT for an organization
|
|
46
46
|
Zaikio::Hub.with_token(token) do
|
47
47
|
organization = Zaikio::Hub::CurrentOrganization.new
|
48
48
|
|
49
|
-
# Fetch
|
49
|
+
# Fetch data
|
50
50
|
organization.memberships.find('abc')
|
51
|
+
|
52
|
+
# Note that .all understands pagination headers and will fetch all pages
|
51
53
|
organization.members.all
|
52
54
|
organization.machines.all
|
53
55
|
organization.software.all
|
@@ -122,16 +124,15 @@ client.test_accounts.create(
|
|
122
124
|
|
123
125
|
```rb
|
124
126
|
Zaikio::Hub.with_basic_auth(client_id, client_secret) do
|
125
|
-
#
|
126
|
-
Zaikio::Hub::Connection.per_page(10).
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
Zaikio::Hub::Connection.per_page(10).page(2)
|
127
|
+
# Get total number of records
|
128
|
+
Zaikio::Hub::Connection.per_page(10).total_count
|
129
|
+
#=> 20
|
130
|
+
|
131
|
+
# Fetch just the second page
|
132
|
+
Zaikio::Hub::Connection.per_page(10).page(2).find_some
|
133
|
+
|
133
134
|
# All
|
134
|
-
all_connections = Zaikio::Hub::Connection.all.
|
135
|
+
all_connections = Zaikio::Hub::Connection.all.to_a
|
135
136
|
|
136
137
|
subscription = Zaikio::Hub::Subscription.find("Organization-b1475f65-236c-58b8-96e1-e1778b43beb7")
|
137
138
|
subscription.plan # => "advanced"
|
data/Rakefile
CHANGED
@@ -29,9 +29,7 @@ task default: :test
|
|
29
29
|
|
30
30
|
namespace :test do
|
31
31
|
desc 'Runs RuboCop on specified directories'
|
32
|
-
RuboCop::RakeTask.new(:rubocop)
|
33
|
-
task.fail_on_error = false
|
34
|
-
end
|
32
|
+
RuboCop::RakeTask.new(:rubocop)
|
35
33
|
end
|
36
34
|
|
37
35
|
Rake::Task[:test].enhance ['test:rubocop']
|
data/lib/zaikio/hub/base.rb
CHANGED
@@ -35,6 +35,11 @@ module Zaikio
|
|
35
35
|
uri: "specialists(/:id)"
|
36
36
|
has_many :sites, class_name: "Zaikio::Hub::Site",
|
37
37
|
uri: "sites(/:id)"
|
38
|
+
# For vendors
|
39
|
+
has_many :connections, class_name: "Zaikio::Hub::Connection",
|
40
|
+
uri: "connections(/:id)"
|
41
|
+
has_many :apps, class_name: "Zaikio::Hub::App",
|
42
|
+
uri: "apps(/:id)"
|
38
43
|
|
39
44
|
def fetch
|
40
45
|
self.attributes = get
|
@@ -47,6 +52,14 @@ module Zaikio
|
|
47
52
|
def members
|
48
53
|
memberships.with_fallback.map(&:person)
|
49
54
|
end
|
55
|
+
|
56
|
+
def create_subscription(status: "active", plan_name: nil)
|
57
|
+
return unless Zaikio::Hub.current_token_data.subject_type == "Organization"
|
58
|
+
|
59
|
+
result = self.class.request(:post, "organization/subscription",
|
60
|
+
subscription: { status: status, plan_name: plan_name })
|
61
|
+
Zaikio::Hub::Subscription.new(result.data)
|
62
|
+
end
|
50
63
|
end
|
51
64
|
end
|
52
65
|
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
module Zaikio
|
2
2
|
module Hub
|
3
3
|
class Subscription < Base
|
4
|
-
include Zaikio::Hub::Pagination::Scopes
|
5
|
-
|
6
4
|
uri "subscriptions(/:id)"
|
7
5
|
|
8
6
|
include_root_in_json :subscription
|
@@ -10,7 +8,7 @@ module Zaikio
|
|
10
8
|
# Attributes
|
11
9
|
attributes :updated_at, :created_at, :subscriber_type, :subscriber_id,
|
12
10
|
:status, :app_name, :activated_at, :last_billed_at,
|
13
|
-
:last_paid_at, :trial_ended_at, :plan, :preceding_plan,
|
11
|
+
:last_paid_at, :trial_ended_at, :plan, :plan_name, :preceding_plan,
|
14
12
|
:changed_plan_at, :usages_in_current_billing_period
|
15
13
|
|
16
14
|
def initialize(attributes = {})
|
data/lib/zaikio/hub/version.rb
CHANGED
data/lib/zaikio/hub.rb
CHANGED
@@ -1,15 +1,12 @@
|
|
1
1
|
require "faraday"
|
2
2
|
require "spyke"
|
3
|
+
require "zaikio-client-helpers"
|
4
|
+
|
3
5
|
require "zaikio/hub/configuration"
|
4
|
-
require "zaikio/hub/json_parser"
|
5
6
|
require "zaikio/hub/authorization_middleware"
|
6
7
|
require "zaikio/hub/basic_auth_middleware"
|
7
8
|
|
8
|
-
# Pagination
|
9
|
-
require "zaikio/hub/pagination"
|
10
|
-
|
11
9
|
# Models
|
12
|
-
require "zaikio/error"
|
13
10
|
require "zaikio/hub/client"
|
14
11
|
require "zaikio/hub/base"
|
15
12
|
require "zaikio/hub/asset"
|
@@ -28,6 +25,7 @@ require "zaikio/hub/current_organization"
|
|
28
25
|
require "zaikio/hub/role"
|
29
26
|
require "zaikio/hub/revoked_access_token"
|
30
27
|
require "zaikio/hub/connection"
|
28
|
+
require "zaikio/hub/app"
|
31
29
|
require "zaikio/hub/subscription"
|
32
30
|
require "zaikio/hub/test_account"
|
33
31
|
|
@@ -73,8 +71,8 @@ module Zaikio
|
|
73
71
|
ssl: { verify: configuration.environment != :test }) do |c|
|
74
72
|
c.request :json
|
75
73
|
c.response :logger, configuration&.logger, headers: false
|
76
|
-
c.use Zaikio::
|
77
|
-
c.use JSONParser
|
74
|
+
c.use Zaikio::Client::Helpers::Pagination::FaradayMiddleware
|
75
|
+
c.use Zaikio::Client::Helpers::JSONParser
|
78
76
|
c.use AuthorizationMiddleware
|
79
77
|
c.use BasicAuthMiddleware
|
80
78
|
c.adapter Faraday.default_adapter
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zaikio-hub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- crispymtn
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2022-01-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: concurrent-ruby
|
@@ -30,16 +30,22 @@ dependencies:
|
|
30
30
|
name: jwt
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- - "
|
33
|
+
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: 2.2.1
|
36
|
+
- - "<"
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: 2.4.0
|
36
39
|
type: :runtime
|
37
40
|
prerelease: false
|
38
41
|
version_requirements: !ruby/object:Gem::Requirement
|
39
42
|
requirements:
|
40
|
-
- - "
|
43
|
+
- - ">="
|
41
44
|
- !ruby/object:Gem::Version
|
42
45
|
version: 2.2.1
|
46
|
+
- - "<"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 2.4.0
|
43
49
|
- !ruby/object:Gem::Dependency
|
44
50
|
name: multi_json
|
45
51
|
requirement: !ruby/object:Gem::Requirement
|
@@ -69,7 +75,7 @@ dependencies:
|
|
69
75
|
version: 3.10.5
|
70
76
|
- - "<"
|
71
77
|
- !ruby/object:Gem::Version
|
72
|
-
version: 3.
|
78
|
+
version: 3.14.0
|
73
79
|
type: :runtime
|
74
80
|
prerelease: false
|
75
81
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -79,7 +85,7 @@ dependencies:
|
|
79
85
|
version: 3.10.5
|
80
86
|
- - "<"
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version: 3.
|
88
|
+
version: 3.14.0
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
90
|
name: spyke
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,7 +95,7 @@ dependencies:
|
|
89
95
|
version: 5.3.4
|
90
96
|
- - "<"
|
91
97
|
- !ruby/object:Gem::Version
|
92
|
-
version:
|
98
|
+
version: 6.2.0
|
93
99
|
type: :runtime
|
94
100
|
prerelease: false
|
95
101
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -99,7 +105,21 @@ dependencies:
|
|
99
105
|
version: 5.3.4
|
100
106
|
- - "<"
|
101
107
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
108
|
+
version: 6.2.0
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: zaikio-client-helpers
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - "~>"
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0.2'
|
116
|
+
type: :runtime
|
117
|
+
prerelease: false
|
118
|
+
version_requirements: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - "~>"
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0.2'
|
103
123
|
description: Ruby API Client for Zaikio's Hub
|
104
124
|
email:
|
105
125
|
- op@crispymtn.com
|
@@ -113,9 +133,9 @@ files:
|
|
113
133
|
- MIT-LICENSE
|
114
134
|
- README.md
|
115
135
|
- Rakefile
|
116
|
-
- lib/zaikio/error.rb
|
117
136
|
- lib/zaikio/hub.rb
|
118
137
|
- lib/zaikio/hub/address.rb
|
138
|
+
- lib/zaikio/hub/app.rb
|
119
139
|
- lib/zaikio/hub/asset.rb
|
120
140
|
- lib/zaikio/hub/authorization_middleware.rb
|
121
141
|
- lib/zaikio/hub/base.rb
|
@@ -126,15 +146,10 @@ files:
|
|
126
146
|
- lib/zaikio/hub/connection.rb
|
127
147
|
- lib/zaikio/hub/current_organization.rb
|
128
148
|
- lib/zaikio/hub/current_person.rb
|
129
|
-
- lib/zaikio/hub/json_parser.rb
|
130
149
|
- lib/zaikio/hub/machine.rb
|
131
150
|
- lib/zaikio/hub/membership.rb
|
132
151
|
- lib/zaikio/hub/organization.rb
|
133
152
|
- lib/zaikio/hub/organization_membership.rb
|
134
|
-
- lib/zaikio/hub/pagination.rb
|
135
|
-
- lib/zaikio/hub/pagination/header_parser.rb
|
136
|
-
- lib/zaikio/hub/pagination/relation.rb
|
137
|
-
- lib/zaikio/hub/pagination/scopes.rb
|
138
153
|
- lib/zaikio/hub/person.rb
|
139
154
|
- lib/zaikio/hub/revoked_access_token.rb
|
140
155
|
- lib/zaikio/hub/role.rb
|
data/lib/zaikio/error.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
module Zaikio
|
2
|
-
class Error < StandardError; end
|
3
|
-
|
4
|
-
class ConnectionError < Zaikio::Error; end
|
5
|
-
|
6
|
-
class ResourceNotFound < Zaikio::Error; end
|
7
|
-
end
|
8
|
-
|
9
|
-
module Spyke
|
10
|
-
instance_eval do
|
11
|
-
# avoid warning: already initialized constant
|
12
|
-
remove_const("ConnectionError")
|
13
|
-
remove_const("ResourceNotFound")
|
14
|
-
end
|
15
|
-
|
16
|
-
ConnectionError = Class.new Zaikio::ConnectionError
|
17
|
-
ResourceNotFound = Class.new Zaikio::ResourceNotFound
|
18
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require "multi_json"
|
2
|
-
|
3
|
-
module Zaikio
|
4
|
-
module Hub
|
5
|
-
class JSONParser < Faraday::Response::Middleware
|
6
|
-
def on_complete(env)
|
7
|
-
connection_error(env) unless /^(2\d\d)|422|404$/.match?(env.status.to_s)
|
8
|
-
|
9
|
-
raise Spyke::ResourceNotFound if env.status.to_s == "404"
|
10
|
-
|
11
|
-
env.body = parse_body(env.body)
|
12
|
-
end
|
13
|
-
|
14
|
-
def connection_error(env)
|
15
|
-
Zaikio::Hub.configuration.logger
|
16
|
-
.error("Zaikio::Hub Status Code #{env.status}, #{env.body}")
|
17
|
-
raise Spyke::ConnectionError, "Status Code #{env.status}, #{env.body}"
|
18
|
-
end
|
19
|
-
|
20
|
-
def parse_body(body)
|
21
|
-
json = MultiJson.load(body, symbolize_keys: true)
|
22
|
-
{
|
23
|
-
data: json,
|
24
|
-
metadata: {},
|
25
|
-
errors: json.is_a?(Hash) ? json[:errors] : {}
|
26
|
-
}
|
27
|
-
rescue MultiJson::ParseError
|
28
|
-
{
|
29
|
-
data: {},
|
30
|
-
metadata: {},
|
31
|
-
errors: {}
|
32
|
-
}
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Zaikio
|
2
|
-
module Hub
|
3
|
-
module Pagination
|
4
|
-
class HeaderParser < Faraday::Response::Middleware
|
5
|
-
def on_complete(env)
|
6
|
-
@env = env
|
7
|
-
|
8
|
-
metadata = Zaikio::Hub::Pagination::HEADERS.transform_values do |key|
|
9
|
-
header(key)
|
10
|
-
end
|
11
|
-
|
12
|
-
@env.body[:metadata] ||= {}
|
13
|
-
@env.body[:metadata][Zaikio::Hub::Pagination::METADATA_KEY] = metadata
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
def header(key)
|
19
|
-
value = @env.response_headers[key]
|
20
|
-
value.try(:to_i)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module Zaikio
|
2
|
-
module Hub
|
3
|
-
module Pagination
|
4
|
-
class Relation < Spyke::Relation
|
5
|
-
Zaikio::Hub::Pagination::HEADERS.each_key do |symbol|
|
6
|
-
define_method(symbol) do
|
7
|
-
find_some.metadata[Zaikio::Hub::Pagination::METADATA_KEY][symbol]
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def first_page?
|
12
|
-
current_page == 1
|
13
|
-
end
|
14
|
-
|
15
|
-
def next_page
|
16
|
-
current_page + 1
|
17
|
-
end
|
18
|
-
|
19
|
-
def last_page?
|
20
|
-
current_page == total_pages
|
21
|
-
end
|
22
|
-
|
23
|
-
def out_of_range?
|
24
|
-
current_page > total_pages
|
25
|
-
end
|
26
|
-
|
27
|
-
def each_page
|
28
|
-
return to_enum(:each_page) unless block_given?
|
29
|
-
|
30
|
-
relation = clone
|
31
|
-
yield relation
|
32
|
-
return if relation.last_page? || relation.out_of_range?
|
33
|
-
|
34
|
-
(relation.next_page..relation.total_pages).each do |number|
|
35
|
-
yield clone.page(number)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Zaikio
|
2
|
-
module Hub
|
3
|
-
module Pagination
|
4
|
-
module Scopes
|
5
|
-
extend ActiveSupport::Concern
|
6
|
-
|
7
|
-
included do
|
8
|
-
%i[page per_page].each do |symbol|
|
9
|
-
scope symbol, ->(value) { where(symbol => value) }
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
module ClassMethods
|
14
|
-
# Overrides the method included by Spyke::Scoping to return paginated
|
15
|
-
# relations.
|
16
|
-
def all
|
17
|
-
current_scope || Zaikio::Hub::Pagination::Relation.new(self, uri: uri)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# adapted from https://github.com/balvig/spyke-kaminari
|
2
|
-
|
3
|
-
module Zaikio
|
4
|
-
module Hub
|
5
|
-
module Pagination
|
6
|
-
HEADERS = {
|
7
|
-
total_count: "Total-Count",
|
8
|
-
total_pages: "Total-Pages",
|
9
|
-
current_page: "Current-Page"
|
10
|
-
}.freeze
|
11
|
-
|
12
|
-
METADATA_KEY = :pagination
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
require "zaikio/hub/pagination/scopes"
|
18
|
-
require "zaikio/hub/pagination/relation"
|
19
|
-
require "zaikio/hub/pagination/header_parser"
|