openlive 1.0.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/.codeclimate.yml +36 -0
- data/.gitignore +10 -0
- data/.rspec +2 -0
- data/.rubocop.yml +1156 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +42 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/openlive.rb +28 -0
- data/lib/openlive/artist.rb +47 -0
- data/lib/openlive/base.rb +113 -0
- data/lib/openlive/booking.rb +68 -0
- data/lib/openlive/master_builder.rb +32 -0
- data/lib/openlive/oauth.rb +46 -0
- data/lib/openlive/request.rb +73 -0
- data/lib/openlive/response.rb +54 -0
- data/lib/openlive/user.rb +62 -0
- data/lib/openlive/version.rb +3 -0
- data/openlive.gemspec +38 -0
- metadata +194 -0
@@ -0,0 +1,73 @@
|
|
1
|
+
module Openlive
|
2
|
+
class Request < Base
|
3
|
+
class << self
|
4
|
+
# Perform a get request against the OpenLIVE API.
|
5
|
+
#
|
6
|
+
# @param [String] path the URI path to perform the request against
|
7
|
+
# @param [Hash] params
|
8
|
+
# @param [Hash] headers
|
9
|
+
#
|
10
|
+
# @return [Openlive::Response]
|
11
|
+
def get(path, params = {}, headers = {})
|
12
|
+
response = connection.send(
|
13
|
+
:get,
|
14
|
+
path,
|
15
|
+
default_params.merge(params),
|
16
|
+
default_headers.merge(headers)
|
17
|
+
)
|
18
|
+
|
19
|
+
Response.new(response)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Perform a post request against the OpenLIVE API.
|
23
|
+
#
|
24
|
+
# @param [String] path the URI path to perform the request against
|
25
|
+
# @param [Hash] params
|
26
|
+
# @param [Hash] headers
|
27
|
+
#
|
28
|
+
# @return [Openlive::Response]
|
29
|
+
def post(path, params = {}, headers = {})
|
30
|
+
headers["Content-Type"] ||= "application/json"
|
31
|
+
|
32
|
+
response = connection.send(
|
33
|
+
:post,
|
34
|
+
path,
|
35
|
+
JSON.generate(default_params.merge(params)),
|
36
|
+
default_headers.merge(headers)
|
37
|
+
)
|
38
|
+
|
39
|
+
Response.new(response)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Perform a delete request against the OpenLIVE API.
|
43
|
+
#
|
44
|
+
# @param [String] path the URI path to perform the request against
|
45
|
+
# @param [Hash] params
|
46
|
+
# @param [Hash] headers
|
47
|
+
#
|
48
|
+
# @return [Openlive::Response]
|
49
|
+
def delete(path, params = {}, headers = {})
|
50
|
+
headers["Content-Type"] ||= "application/json"
|
51
|
+
|
52
|
+
response = connection.send(
|
53
|
+
:delete,
|
54
|
+
path,
|
55
|
+
params,
|
56
|
+
default_headers.merge(headers)
|
57
|
+
)
|
58
|
+
|
59
|
+
Response.new(response)
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def default_params
|
65
|
+
{}
|
66
|
+
end
|
67
|
+
|
68
|
+
def default_headers
|
69
|
+
{}
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Openlive
|
2
|
+
class Response < Base
|
3
|
+
# @return [Faraday::Response]
|
4
|
+
attr_reader :response
|
5
|
+
|
6
|
+
# Initialize the response object
|
7
|
+
#
|
8
|
+
# @param [Faraday::Response] faraday_response
|
9
|
+
def initialize(faraday_response)
|
10
|
+
@response = faraday_response
|
11
|
+
end
|
12
|
+
|
13
|
+
# Was the request successful?
|
14
|
+
#
|
15
|
+
# @return [Truthy]
|
16
|
+
def success?
|
17
|
+
response.success?
|
18
|
+
end
|
19
|
+
|
20
|
+
# Return the response status
|
21
|
+
#
|
22
|
+
# @return [Integer]
|
23
|
+
def status
|
24
|
+
response.status
|
25
|
+
end
|
26
|
+
|
27
|
+
# Parse the response from the server
|
28
|
+
#
|
29
|
+
# @return [Hash,Nil]
|
30
|
+
def body
|
31
|
+
@body ||= (
|
32
|
+
JSON.parse(response.body) if response.body.length > 0
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Convenience method for fetching the error message
|
37
|
+
#
|
38
|
+
# @return [String]
|
39
|
+
def error_message
|
40
|
+
if !success?
|
41
|
+
body
|
42
|
+
end
|
43
|
+
rescue JSON::ParserError => ex
|
44
|
+
ex.message
|
45
|
+
end
|
46
|
+
|
47
|
+
# Simple method missing accessor for reading returned attributes
|
48
|
+
#
|
49
|
+
# @return [String] the raw returned string from the API
|
50
|
+
def method_missing(method_name, *opts, &block)
|
51
|
+
body[method_name.to_s] if body.is_a?(Hash)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Openlive
|
2
|
+
class User < Base
|
3
|
+
# Convenience method for returning artists associated with user
|
4
|
+
#
|
5
|
+
# @return [Array<Openlive::Artist>]
|
6
|
+
def artists
|
7
|
+
unless api_data['artists'].nil?
|
8
|
+
if api_data['artists'].empty?
|
9
|
+
[]
|
10
|
+
else
|
11
|
+
@artists ||= api_data['artists'].map do |attributes|
|
12
|
+
Artist.new(attributes)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class << self
|
19
|
+
# Find and return a user record
|
20
|
+
#
|
21
|
+
# @param id [String]
|
22
|
+
# @return [User]
|
23
|
+
# @raise [APIError] Will raise an error on unsuccessful response
|
24
|
+
def find(id)
|
25
|
+
response = Request.get("users/#{id}")
|
26
|
+
|
27
|
+
handle_response(response, error_class: APIError) do |response|
|
28
|
+
new(response.body, response: response)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Find and return a user by email address
|
33
|
+
#
|
34
|
+
# @param email [String]
|
35
|
+
# @return [User]
|
36
|
+
# @raise [APIError] Will raise an error on unsuccessful response
|
37
|
+
def find_by_email(email)
|
38
|
+
response = Request.get("users", email: email)
|
39
|
+
|
40
|
+
handle_response(response, error_class: APIError) do |response|
|
41
|
+
new(response.body, response: response)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Create a new user on Openlive
|
46
|
+
#
|
47
|
+
# @param [Hash] attributes A hash of attributes to set
|
48
|
+
# @option attributes [String] :username
|
49
|
+
# @option attributes [String] :email
|
50
|
+
# @option attributes [String] :password Optional, will be automatically generated
|
51
|
+
# @return [User] the created user object
|
52
|
+
# @raise [APIError] Will raise an error on unsuccessful response
|
53
|
+
def create(attributes)
|
54
|
+
response = Request.post("users", attributes)
|
55
|
+
|
56
|
+
handle_response(response, error_class: APIError) do |response|
|
57
|
+
new(response.body, response: response)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/openlive.gemspec
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'openlive/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "openlive"
|
8
|
+
spec.version = Openlive::VERSION
|
9
|
+
spec.authors = ["Robert May"]
|
10
|
+
spec.email = ["rob@piratestudios.co.uk"]
|
11
|
+
|
12
|
+
spec.summary = %q{An API wrapper for OpenLIVE.}
|
13
|
+
spec.homepage = "https://github.com/piratestudios/openlive"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
17
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
18
|
+
if spec.respond_to?(:metadata)
|
19
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
20
|
+
else
|
21
|
+
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
22
|
+
end
|
23
|
+
|
24
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
25
|
+
spec.bindir = "exe"
|
26
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
|
29
|
+
spec.add_runtime_dependency "faraday", "~> 0.9"
|
30
|
+
spec.add_runtime_dependency "gem_config", "~> 0.3"
|
31
|
+
spec.add_runtime_dependency "oauth2", "~> 1.2"
|
32
|
+
spec.add_development_dependency "bundler", "~> 1.12"
|
33
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
34
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
35
|
+
spec.add_development_dependency "vcr", "~> 3.0"
|
36
|
+
spec.add_development_dependency "dotenv", "~> 2.1"
|
37
|
+
spec.add_development_dependency "pry", "~> 0"
|
38
|
+
end
|
metadata
ADDED
@@ -0,0 +1,194 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: openlive
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Robert May
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.9'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.9'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: gem_config
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.3'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: oauth2
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.2'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.2'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.12'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.12'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '10.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: vcr
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '3.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: dotenv
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '2.1'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '2.1'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: pry
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description:
|
140
|
+
email:
|
141
|
+
- rob@piratestudios.co.uk
|
142
|
+
executables: []
|
143
|
+
extensions: []
|
144
|
+
extra_rdoc_files: []
|
145
|
+
files:
|
146
|
+
- ".codeclimate.yml"
|
147
|
+
- ".gitignore"
|
148
|
+
- ".rspec"
|
149
|
+
- ".rubocop.yml"
|
150
|
+
- ".travis.yml"
|
151
|
+
- Gemfile
|
152
|
+
- LICENSE.txt
|
153
|
+
- README.md
|
154
|
+
- Rakefile
|
155
|
+
- bin/console
|
156
|
+
- bin/setup
|
157
|
+
- lib/openlive.rb
|
158
|
+
- lib/openlive/artist.rb
|
159
|
+
- lib/openlive/base.rb
|
160
|
+
- lib/openlive/booking.rb
|
161
|
+
- lib/openlive/master_builder.rb
|
162
|
+
- lib/openlive/oauth.rb
|
163
|
+
- lib/openlive/request.rb
|
164
|
+
- lib/openlive/response.rb
|
165
|
+
- lib/openlive/user.rb
|
166
|
+
- lib/openlive/version.rb
|
167
|
+
- openlive.gemspec
|
168
|
+
homepage: https://github.com/piratestudios/openlive
|
169
|
+
licenses:
|
170
|
+
- MIT
|
171
|
+
metadata:
|
172
|
+
allowed_push_host: https://rubygems.org
|
173
|
+
post_install_message:
|
174
|
+
rdoc_options: []
|
175
|
+
require_paths:
|
176
|
+
- lib
|
177
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - ">="
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '0'
|
187
|
+
requirements: []
|
188
|
+
rubyforge_project:
|
189
|
+
rubygems_version: 2.4.5.1
|
190
|
+
signing_key:
|
191
|
+
specification_version: 4
|
192
|
+
summary: An API wrapper for OpenLIVE.
|
193
|
+
test_files: []
|
194
|
+
has_rdoc:
|