wes-data-api 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2f091fd968c4b703a2cb83a16b042aa458bbcdad
4
+ data.tar.gz: 057216bd58c98af84f3e138475c74e86932d2eae
5
+ SHA512:
6
+ metadata.gz: 5ce405d9d311d542fae229a155d2df987ca33e49d0894a587dccb7ce3bfc6deeae5be50ea4f5d97f379bc452e16522df45f9a2888e1bfe7098947072813c8372
7
+ data.tar.gz: 05b08f4426711d175d72dff2759eb7a16f4da7d998746c6f3f0ebaa8676c38ab409a81df088002c46b58cd9d7fa9030ed073c9518fde19465a2ef81caa069722
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
@@ -0,0 +1,11 @@
1
+ require "json"
2
+ require "ostruct"
3
+ require "wes/data/api/configuration"
4
+ require "wes/data/api/version"
5
+
6
+ module Wes
7
+ module Data
8
+ module API
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,51 @@
1
+ require "wes/data/api/client"
2
+ require "wes/data/api/configuration"
3
+
4
+ module Wes
5
+ module Data
6
+ module API
7
+ class Brand
8
+ def initialize(id = nil)
9
+ @id = id
10
+ end
11
+
12
+ def self.all
13
+ new.all
14
+ end
15
+
16
+ def self.find(id)
17
+ new.find id
18
+ end
19
+
20
+ def all
21
+ client.get "#{routes.brands}"
22
+ end
23
+
24
+ def challenges
25
+ raise(ArgumentError, "ID not set for Brand") if id.nil?
26
+ client.get "#{routes.brand}/#{id}#{routes.challenges}"
27
+ end
28
+
29
+ def find(id)
30
+ client.get("#{routes.brand}/#{id}").first
31
+ end
32
+
33
+ private
34
+
35
+ attr_reader :id
36
+
37
+ def client
38
+ Client.new
39
+ end
40
+
41
+ def configuration
42
+ Configuration
43
+ end
44
+
45
+ def routes
46
+ configuration.routes
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,75 @@
1
+ require "wes/data/api/client"
2
+ require "wes/data/api/configuration"
3
+
4
+ module Wes
5
+ module Data
6
+ module API
7
+ class Challenge
8
+ def initialize(id = nil)
9
+ @id = id
10
+ end
11
+
12
+ def self.all
13
+ new.all
14
+ end
15
+
16
+ def self.closed
17
+ new.closed
18
+ end
19
+
20
+ def self.drafts
21
+ new.drafts
22
+ end
23
+
24
+ def self.find(id)
25
+ new.find id
26
+ end
27
+
28
+ def self.open
29
+ new.open
30
+ end
31
+
32
+ def all
33
+ client.get routes.challenges
34
+ end
35
+
36
+ def closed
37
+ client.get "#{routes.challenges}/closed"
38
+ end
39
+
40
+ def drafts
41
+ client.get "#{routes.challenges}/drafts"
42
+ end
43
+
44
+ def find(id)
45
+ client.get("#{routes.challenge}/#{id}").first
46
+ end
47
+
48
+ def open
49
+ client.get "#{routes.challenges}/open"
50
+ end
51
+
52
+ def videos
53
+ raise(ArgumentError, "ID not set for Challenge") if id.nil?
54
+ client.get "#{routes.challenge}/#{id}#{routes.videos}"
55
+ end
56
+
57
+ private
58
+
59
+ attr_reader :id
60
+
61
+ def client
62
+ Client.new
63
+ end
64
+
65
+ def configuration
66
+ Configuration
67
+ end
68
+
69
+ def routes
70
+ configuration.routes
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,30 @@
1
+ require "wes/data/api/request"
2
+ require "wes/data/api/response"
3
+
4
+ module Wes
5
+ module Data
6
+ module API
7
+ class Client
8
+ def get(path)
9
+ api_response = request.get path
10
+ response api_response
11
+ end
12
+
13
+ def post(path, options)
14
+ api_response = request.post(path, options)
15
+ response api_response
16
+ end
17
+
18
+ private
19
+
20
+ def request
21
+ Request
22
+ end
23
+
24
+ def response(api_response)
25
+ Response.build api_response
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,27 @@
1
+ module Wes
2
+ module Data
3
+ module API
4
+ class Configuration
5
+ DEFAULT_VERSION = "v1".freeze
6
+
7
+ class << self
8
+ attr_accessor :endpoint
9
+ attr_writer :routes, :version
10
+
11
+ def configure(&block)
12
+ yield self
13
+ self
14
+ end
15
+
16
+ def routes
17
+ OpenStruct.new @routes
18
+ end
19
+
20
+ def version
21
+ @version ||= DEFAULT_VERSION
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,9 @@
1
+ module Wes
2
+ module Data
3
+ module API
4
+ module Error
5
+ class Response < StandardError; end
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Wes
2
+ module Data
3
+ module API
4
+ module Error
5
+ class Unexpected < StandardError; end
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,63 @@
1
+ require "faraday"
2
+ require "faraday_middleware"
3
+ require "wes/data/api/configuration"
4
+
5
+ module Wes
6
+ module Data
7
+ module API
8
+ class Request
9
+ def self.get(path)
10
+ new.get path
11
+ end
12
+
13
+ def self.post(path, options = {})
14
+ new.post(path, options)
15
+ end
16
+
17
+ def get(path)
18
+ connection.get do |r|
19
+ r.url complete_path(path)
20
+ r.options.timeout = TIMEOUT
21
+ end
22
+ end
23
+
24
+ def post(path, options)
25
+ connection.post do |r|
26
+ r.body = options.to_json
27
+ r.headers["Content-Type"] = "application/json"
28
+ r.url complete_path(path)
29
+ r.options.timeout = TIMEOUT
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ TIMEOUT = 2
36
+
37
+ def complete_path(path)
38
+ "/#{version}#{path}"
39
+ end
40
+
41
+ def configuration
42
+ Configuration
43
+ end
44
+
45
+ def connection
46
+ Faraday.new(:url => endpoint) do |c|
47
+ c.adapter Faraday.default_adapter
48
+ c.use Faraday::Response::RaiseError
49
+ c.response :json, :content_type => /\bjson$/
50
+ end
51
+ end
52
+
53
+ def endpoint
54
+ configuration.endpoint
55
+ end
56
+
57
+ def version
58
+ configuration.version
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,46 @@
1
+ require "wes/data/api/error/response"
2
+ require "wes/data/api/error/unexpected"
3
+
4
+ module Wes
5
+ module Data
6
+ module API
7
+ class Response
8
+ def self.build(response)
9
+ new(response).data
10
+ end
11
+
12
+ def initialize(response)
13
+ @response = response
14
+ end
15
+
16
+ def data
17
+ raise unexpected_error unless response.body
18
+ data = response.body["data"] || raise(response_error)
19
+ data.map { |e| OpenStruct.new e }
20
+ end
21
+
22
+ private
23
+
24
+ attr_reader :response
25
+
26
+ def error_details
27
+ response.body.fetch "details"
28
+ end
29
+
30
+ def error_status
31
+ response.body.fetch "status"
32
+ end
33
+
34
+ def response_error
35
+ Error::Response.new(
36
+ "#{error_status} - #{error_details}"
37
+ )
38
+ end
39
+
40
+ def unexpected_error
41
+ Error::Unexpected
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,40 @@
1
+ require "wes/data/api/client"
2
+ require "wes/data/api/configuration"
3
+
4
+ module Wes
5
+ module Data
6
+ module API
7
+ class Submission
8
+ def self.create(options)
9
+ new.create options
10
+ end
11
+
12
+ def self.find(id)
13
+ new.find id
14
+ end
15
+
16
+ def create(options)
17
+ client.post(routes.submission, options).first
18
+ end
19
+
20
+ def find(id)
21
+ client.get("#{routes.submission}/#{id}").first
22
+ end
23
+
24
+ private
25
+
26
+ def client
27
+ Client.new
28
+ end
29
+
30
+ def configuration
31
+ Configuration
32
+ end
33
+
34
+ def routes
35
+ configuration.routes
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,55 @@
1
+ require "wes/data/api/client"
2
+ require "wes/data/api/configuration"
3
+
4
+ module Wes
5
+ module Data
6
+ module API
7
+ class User
8
+ def initialize(id = nil)
9
+ @id = id
10
+ end
11
+
12
+ def closed_submissions
13
+ raise(ArgumentError, "ID not set for User") if id.nil?
14
+ client.get "#{routes.user}/#{id}#{routes.submissions}/closed"
15
+ end
16
+
17
+ def metadata
18
+ raise(ArgumentError, "ID not set for User") if id.nil?
19
+ client.get "#{routes.user}/#{id}#{routes.metadata}"
20
+ end
21
+
22
+ def open_submissions
23
+ raise(ArgumentError, "ID not set for User") if id.nil?
24
+ client.get "#{routes.user}/#{id}#{routes.submissions}/open"
25
+ end
26
+
27
+ def submissions
28
+ raise(ArgumentError, "ID not set for User") if id.nil?
29
+ client.get "#{routes.user}/#{id}#{routes.submissions}"
30
+ end
31
+
32
+ def videos
33
+ raise(ArgumentError, "ID not set for User") if id.nil?
34
+ client.get "#{routes.user}/#{id}#{routes.videos}"
35
+ end
36
+
37
+ private
38
+
39
+ attr_reader :id
40
+
41
+ def client
42
+ Client.new
43
+ end
44
+
45
+ def configuration
46
+ Configuration
47
+ end
48
+
49
+ def routes
50
+ configuration.routes
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,7 @@
1
+ module Wes
2
+ module Data
3
+ module API
4
+ VERSION = "1.0.0".freeze
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,32 @@
1
+ require "wes/data/api/client"
2
+ require "wes/data/api/configuration"
3
+
4
+ module Wes
5
+ module Data
6
+ module API
7
+ class Video
8
+ def self.create(options)
9
+ new.create options
10
+ end
11
+
12
+ def create(options)
13
+ client.post(routes.video, options).first
14
+ end
15
+
16
+ private
17
+
18
+ def client
19
+ Client.new
20
+ end
21
+
22
+ def configuration
23
+ Configuration
24
+ end
25
+
26
+ def routes
27
+ configuration.routes
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "wes/data/api/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "wes-data-api"
8
+ spec.version = Wes::Data::API::VERSION
9
+ spec.authors = [""]
10
+ spec.email = [""]
11
+
12
+ spec.summary = ""
13
+ spec.homepage = ""
14
+
15
+ spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{\A(wes-data-api.gemspec|lib|Gemfile)}) }
16
+ spec.bindir = "exe"
17
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_development_dependency "bundler", "~> 1.11"
21
+ spec.add_development_dependency "pry"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec", "~> 3.0"
24
+
25
+ spec.add_dependency "faraday"
26
+ spec.add_dependency "faraday_middleware"
27
+ spec.add_dependency "json"
28
+ end
metadata ADDED
@@ -0,0 +1,156 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wes-data-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - ''
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-04-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.11'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: faraday
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: faraday_middleware
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: json
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description:
112
+ email:
113
+ - ''
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - Gemfile
119
+ - lib/wes/data/api.rb
120
+ - lib/wes/data/api/brand.rb
121
+ - lib/wes/data/api/challenge.rb
122
+ - lib/wes/data/api/client.rb
123
+ - lib/wes/data/api/configuration.rb
124
+ - lib/wes/data/api/error/response.rb
125
+ - lib/wes/data/api/error/unexpected.rb
126
+ - lib/wes/data/api/request.rb
127
+ - lib/wes/data/api/response.rb
128
+ - lib/wes/data/api/submission.rb
129
+ - lib/wes/data/api/user.rb
130
+ - lib/wes/data/api/version.rb
131
+ - lib/wes/data/api/video.rb
132
+ - wes-data-api.gemspec
133
+ homepage: ''
134
+ licenses: []
135
+ metadata: {}
136
+ post_install_message:
137
+ rdoc_options: []
138
+ require_paths:
139
+ - lib
140
+ required_ruby_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ requirements: []
151
+ rubyforge_project:
152
+ rubygems_version: 2.5.1
153
+ signing_key:
154
+ specification_version: 4
155
+ summary: ''
156
+ test_files: []