talis 0.12.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 +7 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.rubocop.yml +2 -0
- data/.travis.yml +24 -0
- data/.yardopts +1 -0
- data/CONTRIBUTING.md +28 -0
- data/Gemfile +4 -0
- data/Guardfile +5 -0
- data/README.md +76 -0
- data/Rakefile +8 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/talis.rb +25 -0
- data/lib/talis/analytics.rb +31 -0
- data/lib/talis/analytics/event.rb +67 -0
- data/lib/talis/authentication.rb +14 -0
- data/lib/talis/authentication/client.rb +82 -0
- data/lib/talis/authentication/login.rb +169 -0
- data/lib/talis/authentication/public_key.rb +53 -0
- data/lib/talis/authentication/token.rb +172 -0
- data/lib/talis/bibliography.rb +52 -0
- data/lib/talis/bibliography/ebook.rb +50 -0
- data/lib/talis/bibliography/manifestation.rb +141 -0
- data/lib/talis/bibliography/result_set.rb +34 -0
- data/lib/talis/bibliography/work.rb +164 -0
- data/lib/talis/constants.rb +9 -0
- data/lib/talis/errors.rb +10 -0
- data/lib/talis/errors/authentication_failed_error.rb +4 -0
- data/lib/talis/errors/client_errors.rb +19 -0
- data/lib/talis/errors/server_communication_error.rb +4 -0
- data/lib/talis/errors/server_error.rb +4 -0
- data/lib/talis/extensions/object.rb +11 -0
- data/lib/talis/feeds.rb +8 -0
- data/lib/talis/feeds/annotation.rb +129 -0
- data/lib/talis/feeds/feed.rb +58 -0
- data/lib/talis/hierarchy.rb +9 -0
- data/lib/talis/hierarchy/asset.rb +265 -0
- data/lib/talis/hierarchy/node.rb +200 -0
- data/lib/talis/hierarchy/resource.rb +159 -0
- data/lib/talis/oauth_service.rb +18 -0
- data/lib/talis/resource.rb +68 -0
- data/lib/talis/user.rb +112 -0
- data/lib/talis/version.rb +3 -0
- data/talis.gemspec +39 -0
- metadata +327 -0
@@ -0,0 +1,159 @@
|
|
1
|
+
module Talis
|
2
|
+
module Hierarchy
|
3
|
+
# Common functionality to Hierarchy resources (Node, Asset)
|
4
|
+
module Resource
|
5
|
+
# The methods defined within this module are available to instances of,
|
6
|
+
# and the class itself that extends Talis::Hierarchy::Resource.
|
7
|
+
module Helpers
|
8
|
+
# @return [String] The hierarchy namespace.
|
9
|
+
attr_accessor :namespace
|
10
|
+
# @return [String] The ID of the resource.
|
11
|
+
attr_reader :id
|
12
|
+
# @return [String] The type of resource.
|
13
|
+
attr_reader :type
|
14
|
+
# @return [Hash] key-value pair attributes belonging to the resource.
|
15
|
+
attr_accessor :attributes
|
16
|
+
|
17
|
+
@new_resource = false
|
18
|
+
@deleted = false
|
19
|
+
|
20
|
+
# Manages the current & stored resource type so resources can be edited/
|
21
|
+
# deleted properly
|
22
|
+
# @param resource_type [String] the new type of the hierarchy resource
|
23
|
+
def type=(resource_type)
|
24
|
+
@original_type = type if persisted?
|
25
|
+
@type = resource_type
|
26
|
+
end
|
27
|
+
|
28
|
+
# Manages the current & stored resource id so resources can be edited/
|
29
|
+
# deleted properly
|
30
|
+
# @param resource_id [String] the new id of the hierarchy resource
|
31
|
+
def id=(resource_id)
|
32
|
+
@original_id = id if persisted?
|
33
|
+
@id = resource_id
|
34
|
+
end
|
35
|
+
|
36
|
+
# The resource type the API thinks the resource has
|
37
|
+
# (if it has been saved)
|
38
|
+
# @return [String]
|
39
|
+
def stored_type
|
40
|
+
persisted? ? @original_type || type : type
|
41
|
+
end
|
42
|
+
|
43
|
+
# The resource id the API thinks the resource has (if it has been saved)
|
44
|
+
# @return [String]
|
45
|
+
def stored_id
|
46
|
+
persisted? ? @original_id || id : id
|
47
|
+
end
|
48
|
+
|
49
|
+
# A boolean indicating if the resource exists in the remote Blueprint
|
50
|
+
# instance
|
51
|
+
# @return [Boolean]
|
52
|
+
def persisted?
|
53
|
+
!(@new_resource || @deleted)
|
54
|
+
end
|
55
|
+
|
56
|
+
protected
|
57
|
+
|
58
|
+
# Query for assets using HTTParty and not blueprint_rb in order to get
|
59
|
+
# around the Swagger limitation of not being able to choose between
|
60
|
+
# AND and IN queries.
|
61
|
+
# @param request_id [String] unique ID for the remote request.
|
62
|
+
# @param namespace [String] the namespace of the hierarchy.
|
63
|
+
# @param opts [Hash] ({}) optional filter and pagination criteria.
|
64
|
+
# @return [Array<Talis::Hierarchy::Asset>] or an empty array if no
|
65
|
+
# assets are found.
|
66
|
+
# @raise [Talis::ClientError] if the request was invalid.
|
67
|
+
# @raise [Talis::ServerError] if the search failed on the server.
|
68
|
+
# @raise [Talis::ServerCommunicationError] for network issues.
|
69
|
+
def search_assets(request_id, namespace, opts)
|
70
|
+
response = get("/1/#{namespace}/assets",
|
71
|
+
query: build_query(opts),
|
72
|
+
headers: {
|
73
|
+
'X-Request-Id' => request_id,
|
74
|
+
'Authorization' => "Bearer #{token}"
|
75
|
+
})
|
76
|
+
convert_to_blueprint_api_client_model(handle_response(response))
|
77
|
+
rescue SocketError
|
78
|
+
raise Talis::ServerCommunicationError
|
79
|
+
end
|
80
|
+
|
81
|
+
def mark_persisted
|
82
|
+
@new_resource = false
|
83
|
+
@deleted = false
|
84
|
+
@original_id = id
|
85
|
+
@original_type = type
|
86
|
+
end
|
87
|
+
|
88
|
+
def mark_deleted
|
89
|
+
@deleted = true
|
90
|
+
@original_id = id
|
91
|
+
@original_type = type
|
92
|
+
end
|
93
|
+
|
94
|
+
private
|
95
|
+
|
96
|
+
def build_query(opts)
|
97
|
+
query = []
|
98
|
+
opts.each do |key, value|
|
99
|
+
if key.to_s.start_with?('filter')
|
100
|
+
filter = key.to_s.gsub('filter_', '')
|
101
|
+
build_collection_query(query, filter, value)
|
102
|
+
else
|
103
|
+
query << [key, value]
|
104
|
+
end
|
105
|
+
end
|
106
|
+
URI.encode_www_form(query)
|
107
|
+
end
|
108
|
+
|
109
|
+
def build_collection_query(params, key, value)
|
110
|
+
filter_key = "filter[#{key.camelize(:lower)}]"
|
111
|
+
if value.is_a? Array
|
112
|
+
value.each do |item|
|
113
|
+
params << [filter_key, item]
|
114
|
+
end
|
115
|
+
elsif value.is_a? Hash
|
116
|
+
build_collection_query_from_hash(params, filter_key, value)
|
117
|
+
else
|
118
|
+
raise ArgumentError, 'filter value must be an array or hash'
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def build_collection_query_from_hash(params, key, hash)
|
123
|
+
mode = hash.keys.first
|
124
|
+
values = hash.values.first
|
125
|
+
if mode == :all
|
126
|
+
values.each do |item|
|
127
|
+
params << [key, item]
|
128
|
+
end
|
129
|
+
else
|
130
|
+
params << [key, values.join(',')]
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def convert_to_blueprint_api_client_model(response)
|
135
|
+
response['data'].map! do |item|
|
136
|
+
OpenStruct.new(type: item['type'], id: item['id'],
|
137
|
+
attributes: item.fetch('attributes', {}))
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def configure_blueprint
|
142
|
+
BlueprintClient.configure do |config|
|
143
|
+
config.scheme = base_uri[/https?/]
|
144
|
+
config.host = base_uri
|
145
|
+
config.access_token = token
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
# Callback invoked whenever the receiver is included in another module or
|
151
|
+
# class. Receiver here is whoever includes Resource
|
152
|
+
def self.included(base)
|
153
|
+
base.extend(Helpers)
|
154
|
+
end
|
155
|
+
|
156
|
+
include Helpers
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Talis
|
2
|
+
# Allows an individual primitive service to set its own Persona environment
|
3
|
+
module OAuthService
|
4
|
+
attr_accessor :oauth_host, :client_id, :client_secret
|
5
|
+
|
6
|
+
protected
|
7
|
+
|
8
|
+
# Overrides Talis::Resource.token
|
9
|
+
def token
|
10
|
+
options = {
|
11
|
+
client_id: client_id || Talis::Authentication.client_id,
|
12
|
+
client_secret: client_secret || Talis::Authentication.client_secret
|
13
|
+
}
|
14
|
+
options[:host] = oauth_host if oauth_host
|
15
|
+
Talis::Authentication::Token.generate(options)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
require 'ostruct'
|
3
|
+
require 'securerandom'
|
4
|
+
|
5
|
+
module Talis
|
6
|
+
# Extend this class when in order to interact with Talis HTTP APIs.
|
7
|
+
# Each sub class should set base_uri to whatever Talis primitive it needs
|
8
|
+
# to talk to.
|
9
|
+
class Resource
|
10
|
+
include HTTParty
|
11
|
+
format :json
|
12
|
+
headers 'User-Agent' => "talis-ruby-client/#{Talis::VERSION} "\
|
13
|
+
"ruby/#{RUBY_VERSION}"
|
14
|
+
|
15
|
+
class << self
|
16
|
+
def handle_response(response, expected_status_code = 200)
|
17
|
+
if response.code == expected_status_code
|
18
|
+
response.parsed_response
|
19
|
+
elsif response.code >= 400 && response.code < 500
|
20
|
+
build_client_error(response)
|
21
|
+
elsif response.code >= 500
|
22
|
+
raise Talis::ServerError
|
23
|
+
else
|
24
|
+
raise Talis::ServerCommunicationError
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def new_req_id
|
29
|
+
SecureRandom.hex(13)
|
30
|
+
end
|
31
|
+
|
32
|
+
protected
|
33
|
+
|
34
|
+
def token
|
35
|
+
options = {
|
36
|
+
client_id: Talis::Authentication.client_id,
|
37
|
+
client_secret: Talis::Authentication.client_secret
|
38
|
+
}
|
39
|
+
Talis::Authentication::Token.generate(options)
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def build_client_error(response)
|
45
|
+
raise client_errors[response.code], safe_error_description(response)
|
46
|
+
end
|
47
|
+
|
48
|
+
def client_errors
|
49
|
+
errors = {
|
50
|
+
400 => Talis::BadRequestError,
|
51
|
+
401 => Talis::UnauthorizedError,
|
52
|
+
403 => Talis::ForbiddenError,
|
53
|
+
404 => Talis::NotFoundError,
|
54
|
+
409 => Talis::ConflictError
|
55
|
+
}
|
56
|
+
errors.default = Talis::ClientError
|
57
|
+
errors
|
58
|
+
end
|
59
|
+
|
60
|
+
def safe_error_description(response)
|
61
|
+
if response.respond_to? :parsed_response
|
62
|
+
parsed_response = response.parsed_response
|
63
|
+
end
|
64
|
+
parsed_response['error_description'] if parsed_response.present?
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
data/lib/talis/user.rb
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'active_support'
|
2
|
+
require 'talis/authentication/token'
|
3
|
+
|
4
|
+
module Talis
|
5
|
+
# Represents a user known by Talis.
|
6
|
+
class User < Talis::Resource
|
7
|
+
base_uri Talis::PERSONA_HOST
|
8
|
+
# @return [String] the globally unique identifier for the user.
|
9
|
+
attr_reader :guid
|
10
|
+
# @return [String] the user's first name.
|
11
|
+
attr_reader :first_name
|
12
|
+
# @return [String] the user's surname.
|
13
|
+
attr_reader :surname
|
14
|
+
# @return [String] the user's E-mail address.
|
15
|
+
attr_reader :email
|
16
|
+
# @return [Talis::Authentication::Token] to use for user authentication
|
17
|
+
# with other Talis primitive services.
|
18
|
+
attr_reader :token
|
19
|
+
|
20
|
+
private_class_method :new
|
21
|
+
|
22
|
+
# Creates a new user object. For internal use only, use {User.build}.
|
23
|
+
# @param guid [String] the globally unique identifier for the user.
|
24
|
+
# @param first_name [String] the user's first name.
|
25
|
+
# @param surname [String] the user's surname.
|
26
|
+
# @param email [String] the user's E-mail address.
|
27
|
+
# @param token [Talis::Authentication::Token] (nil) valid user token.
|
28
|
+
def initialize(guid:, first_name:, surname:, email:, token: nil)
|
29
|
+
@guid = guid
|
30
|
+
@first_name = first_name
|
31
|
+
@surname = surname
|
32
|
+
@email = email
|
33
|
+
@token = token
|
34
|
+
end
|
35
|
+
|
36
|
+
# Return the combination of the user's first and surname.
|
37
|
+
# @return [String] the user's full name
|
38
|
+
def full_name
|
39
|
+
"#{@first_name} #{@surname}"
|
40
|
+
end
|
41
|
+
|
42
|
+
# Returns a URL that will resolve to an avatar image belonging to the
|
43
|
+
# user when fetched. This URL is cached by browsers when called.
|
44
|
+
# @param size [Integer] (nil) size in pixels (defaults to 70x70).
|
45
|
+
# @param colour [String] (nil) background hex colour (defaults to 000000).
|
46
|
+
# @return [String] the URL of the user's avatar.
|
47
|
+
def avatar_url(size: nil, colour: nil)
|
48
|
+
if size.present? && colour.present?
|
49
|
+
params = "?#{URI.encode_www_form(size: size, colour: colour)}"
|
50
|
+
elsif size.present?
|
51
|
+
params = "?#{URI.encode_www_form(size: size)}"
|
52
|
+
elsif colour.present?
|
53
|
+
params = "?#{URI.encode_www_form(colour: colour)}"
|
54
|
+
end
|
55
|
+
"#{self.class.base_uri}/users/#{guid}/avatar#{params}"
|
56
|
+
end
|
57
|
+
|
58
|
+
class << self
|
59
|
+
# Find a single user given the search criterion.
|
60
|
+
# In order to perform this search, the client must be configured with a
|
61
|
+
# valid OAuth client that is allowed to search for users:
|
62
|
+
#
|
63
|
+
# Talis::Authentication.client_id = 'client_id'
|
64
|
+
# Talis::Authentication.client_secret = 'client_secret'
|
65
|
+
#
|
66
|
+
# @param request_id [String] ('uuid') unique ID for the remote request.
|
67
|
+
# @param guid [String] the globally unique ID of the user to find.
|
68
|
+
# @return [User]
|
69
|
+
def find(request_id: new_req_id, guid:)
|
70
|
+
response = get("/users/#{guid}",
|
71
|
+
headers: {
|
72
|
+
'X-Request-Id' => request_id,
|
73
|
+
'Authorization' => "Bearer #{token}"
|
74
|
+
})
|
75
|
+
new(extract_user_data(handle_response(response)))
|
76
|
+
rescue Talis::NotFoundError
|
77
|
+
nil
|
78
|
+
end
|
79
|
+
|
80
|
+
# Builds a new user object. This is for creating user objects as a
|
81
|
+
# result of a successful login request.
|
82
|
+
# @param guid [String] the globally unique identifier for the user.
|
83
|
+
# @param first_name [String] the user's first name.
|
84
|
+
# @param surname [String] the user's surname.
|
85
|
+
# @param email [String] the user's E-mail address.
|
86
|
+
# @param access_token [String] (nil) valid user JWT.
|
87
|
+
# @return [User]
|
88
|
+
def build(guid:, first_name:, surname:, email:, access_token: nil)
|
89
|
+
options = {
|
90
|
+
guid: guid,
|
91
|
+
first_name: first_name,
|
92
|
+
surname: surname,
|
93
|
+
email: email,
|
94
|
+
token: Talis::Authentication::Token.new(jwt: access_token)
|
95
|
+
}
|
96
|
+
new(options)
|
97
|
+
end
|
98
|
+
|
99
|
+
private
|
100
|
+
|
101
|
+
def extract_user_data(data)
|
102
|
+
profile = data.fetch('profile', {})
|
103
|
+
{
|
104
|
+
guid: data['guid'],
|
105
|
+
first_name: profile['first_name'],
|
106
|
+
surname: profile['surname'],
|
107
|
+
email: profile['email']
|
108
|
+
}
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
data/talis.gemspec
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'talis/version'
|
5
|
+
|
6
|
+
# rubocop:disable Metrics/LineLength
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = 'talis'
|
9
|
+
spec.version = Talis::VERSION
|
10
|
+
spec.authors = ['Omar Qureshi', 'Ben Paddock']
|
11
|
+
spec.email = ['oq@talis.com', 'bp@talis.com']
|
12
|
+
|
13
|
+
spec.summary = 'Ruby client to utilise Talis primitive services'
|
14
|
+
spec.homepage = 'https://github.com/talis/talis_rb'
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
+
spec.bindir = 'exe'
|
18
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_dependency 'uuid', '2.3.8'
|
22
|
+
spec.add_dependency 'jwt', '1.5.4'
|
23
|
+
spec.add_dependency 'activesupport', '~> 4.2.6'
|
24
|
+
spec.add_dependency 'httparty', '0.13.7'
|
25
|
+
spec.add_dependency 'multi_json', '1.11.2'
|
26
|
+
spec.add_dependency 'blueprint_ruby_client', '~> 0.5.2'
|
27
|
+
spec.add_dependency 'metatron_ruby_client', '~> 0.1.3'
|
28
|
+
|
29
|
+
spec.add_development_dependency 'cucumber'
|
30
|
+
spec.add_development_dependency 'dotenv'
|
31
|
+
spec.add_development_dependency 'bundler', '~> 1.11'
|
32
|
+
spec.add_development_dependency 'guard'
|
33
|
+
spec.add_development_dependency 'guard-rspec'
|
34
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
35
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
36
|
+
spec.add_development_dependency 'rspec-wait'
|
37
|
+
spec.add_development_dependency 'rubocop', '~> 0.39.0'
|
38
|
+
spec.add_development_dependency 'webmock', '~> 1.24.2'
|
39
|
+
end
|
metadata
ADDED
@@ -0,0 +1,327 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: talis
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.12.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Omar Qureshi
|
8
|
+
- Ben Paddock
|
9
|
+
autorequire:
|
10
|
+
bindir: exe
|
11
|
+
cert_chain: []
|
12
|
+
date: 2017-08-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: uuid
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - '='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 2.3.8
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - '='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 2.3.8
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: jwt
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 1.5.4
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 1.5.4
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: activesupport
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 4.2.6
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 4.2.6
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: httparty
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.13.7
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.13.7
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: multi_json
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 1.11.2
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 1.11.2
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: blueprint_ruby_client
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: 0.5.2
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 0.5.2
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: metatron_ruby_client
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - "~>"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 0.1.3
|
105
|
+
type: :runtime
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: 0.1.3
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: cucumber
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: dotenv
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: bundler
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - "~>"
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '1.11'
|
147
|
+
type: :development
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - "~>"
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '1.11'
|
154
|
+
- !ruby/object:Gem::Dependency
|
155
|
+
name: guard
|
156
|
+
requirement: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - ">="
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
type: :development
|
162
|
+
prerelease: false
|
163
|
+
version_requirements: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - ">="
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '0'
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: guard-rspec
|
170
|
+
requirement: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
type: :development
|
176
|
+
prerelease: false
|
177
|
+
version_requirements: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
- !ruby/object:Gem::Dependency
|
183
|
+
name: rake
|
184
|
+
requirement: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - "~>"
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '10.0'
|
189
|
+
type: :development
|
190
|
+
prerelease: false
|
191
|
+
version_requirements: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - "~>"
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '10.0'
|
196
|
+
- !ruby/object:Gem::Dependency
|
197
|
+
name: rspec
|
198
|
+
requirement: !ruby/object:Gem::Requirement
|
199
|
+
requirements:
|
200
|
+
- - "~>"
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '3.0'
|
203
|
+
type: :development
|
204
|
+
prerelease: false
|
205
|
+
version_requirements: !ruby/object:Gem::Requirement
|
206
|
+
requirements:
|
207
|
+
- - "~>"
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: '3.0'
|
210
|
+
- !ruby/object:Gem::Dependency
|
211
|
+
name: rspec-wait
|
212
|
+
requirement: !ruby/object:Gem::Requirement
|
213
|
+
requirements:
|
214
|
+
- - ">="
|
215
|
+
- !ruby/object:Gem::Version
|
216
|
+
version: '0'
|
217
|
+
type: :development
|
218
|
+
prerelease: false
|
219
|
+
version_requirements: !ruby/object:Gem::Requirement
|
220
|
+
requirements:
|
221
|
+
- - ">="
|
222
|
+
- !ruby/object:Gem::Version
|
223
|
+
version: '0'
|
224
|
+
- !ruby/object:Gem::Dependency
|
225
|
+
name: rubocop
|
226
|
+
requirement: !ruby/object:Gem::Requirement
|
227
|
+
requirements:
|
228
|
+
- - "~>"
|
229
|
+
- !ruby/object:Gem::Version
|
230
|
+
version: 0.39.0
|
231
|
+
type: :development
|
232
|
+
prerelease: false
|
233
|
+
version_requirements: !ruby/object:Gem::Requirement
|
234
|
+
requirements:
|
235
|
+
- - "~>"
|
236
|
+
- !ruby/object:Gem::Version
|
237
|
+
version: 0.39.0
|
238
|
+
- !ruby/object:Gem::Dependency
|
239
|
+
name: webmock
|
240
|
+
requirement: !ruby/object:Gem::Requirement
|
241
|
+
requirements:
|
242
|
+
- - "~>"
|
243
|
+
- !ruby/object:Gem::Version
|
244
|
+
version: 1.24.2
|
245
|
+
type: :development
|
246
|
+
prerelease: false
|
247
|
+
version_requirements: !ruby/object:Gem::Requirement
|
248
|
+
requirements:
|
249
|
+
- - "~>"
|
250
|
+
- !ruby/object:Gem::Version
|
251
|
+
version: 1.24.2
|
252
|
+
description:
|
253
|
+
email:
|
254
|
+
- oq@talis.com
|
255
|
+
- bp@talis.com
|
256
|
+
executables: []
|
257
|
+
extensions: []
|
258
|
+
extra_rdoc_files: []
|
259
|
+
files:
|
260
|
+
- ".gitignore"
|
261
|
+
- ".rspec"
|
262
|
+
- ".rubocop.yml"
|
263
|
+
- ".travis.yml"
|
264
|
+
- ".yardopts"
|
265
|
+
- CONTRIBUTING.md
|
266
|
+
- Gemfile
|
267
|
+
- Guardfile
|
268
|
+
- README.md
|
269
|
+
- Rakefile
|
270
|
+
- bin/console
|
271
|
+
- bin/setup
|
272
|
+
- lib/talis.rb
|
273
|
+
- lib/talis/analytics.rb
|
274
|
+
- lib/talis/analytics/event.rb
|
275
|
+
- lib/talis/authentication.rb
|
276
|
+
- lib/talis/authentication/client.rb
|
277
|
+
- lib/talis/authentication/login.rb
|
278
|
+
- lib/talis/authentication/public_key.rb
|
279
|
+
- lib/talis/authentication/token.rb
|
280
|
+
- lib/talis/bibliography.rb
|
281
|
+
- lib/talis/bibliography/ebook.rb
|
282
|
+
- lib/talis/bibliography/manifestation.rb
|
283
|
+
- lib/talis/bibliography/result_set.rb
|
284
|
+
- lib/talis/bibliography/work.rb
|
285
|
+
- lib/talis/constants.rb
|
286
|
+
- lib/talis/errors.rb
|
287
|
+
- lib/talis/errors/authentication_failed_error.rb
|
288
|
+
- lib/talis/errors/client_errors.rb
|
289
|
+
- lib/talis/errors/server_communication_error.rb
|
290
|
+
- lib/talis/errors/server_error.rb
|
291
|
+
- lib/talis/extensions/object.rb
|
292
|
+
- lib/talis/feeds.rb
|
293
|
+
- lib/talis/feeds/annotation.rb
|
294
|
+
- lib/talis/feeds/feed.rb
|
295
|
+
- lib/talis/hierarchy.rb
|
296
|
+
- lib/talis/hierarchy/asset.rb
|
297
|
+
- lib/talis/hierarchy/node.rb
|
298
|
+
- lib/talis/hierarchy/resource.rb
|
299
|
+
- lib/talis/oauth_service.rb
|
300
|
+
- lib/talis/resource.rb
|
301
|
+
- lib/talis/user.rb
|
302
|
+
- lib/talis/version.rb
|
303
|
+
- talis.gemspec
|
304
|
+
homepage: https://github.com/talis/talis_rb
|
305
|
+
licenses: []
|
306
|
+
metadata: {}
|
307
|
+
post_install_message:
|
308
|
+
rdoc_options: []
|
309
|
+
require_paths:
|
310
|
+
- lib
|
311
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
312
|
+
requirements:
|
313
|
+
- - ">="
|
314
|
+
- !ruby/object:Gem::Version
|
315
|
+
version: '0'
|
316
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
317
|
+
requirements:
|
318
|
+
- - ">="
|
319
|
+
- !ruby/object:Gem::Version
|
320
|
+
version: '0'
|
321
|
+
requirements: []
|
322
|
+
rubyforge_project:
|
323
|
+
rubygems_version: 2.5.2
|
324
|
+
signing_key:
|
325
|
+
specification_version: 4
|
326
|
+
summary: Ruby client to utilise Talis primitive services
|
327
|
+
test_files: []
|