lsports 0.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1c202505a3a984a44850901b6fbb582d1ee0347d78c1f46e54e1ccdd19cb9f43
4
+ data.tar.gz: 7d813f1024f23bb1fa47eccb553d4584df67ce171850dff7fdb01bc39a392f34
5
+ SHA512:
6
+ metadata.gz: 9f1b60e7d752799a061ef7e8fcf79779a34814378fdb7f33fa31c5f6e54bbda6884c4345dfdb3f0307c3b0f7a16a8a4bb14e8b4c3e58415050dc37cc183f2a5b
7
+ data.tar.gz: 29b56d3116b807120abeef8a262e362685c651535c00a1c880a39f75181bdf6e36c68f154adeaeedc840309875e3da8e200ef0086ca563386e0110a7812c839e
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
@@ -0,0 +1,39 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.5.1
3
+
4
+
5
+ Layout/ParameterAlignment:
6
+ EnforcedStyle: with_fixed_indentation
7
+
8
+ Metrics/AbcSize:
9
+ Max: 20
10
+
11
+ Metrics/BlockLength:
12
+ Exclude:
13
+ - spec/**/*.rb
14
+
15
+ Layout/LineLength:
16
+ Max: 120
17
+ IgnoreCopDirectives: true
18
+
19
+ Metrics/MethodLength:
20
+ Max: 20
21
+
22
+
23
+ Style/ClassAndModuleChildren:
24
+ Enabled: false
25
+
26
+ Style/Documentation:
27
+ Enabled: false
28
+
29
+ Style/FrozenStringLiteralComment:
30
+ Enabled: false
31
+
32
+ Style/HashEachMethods:
33
+ Enabled: true
34
+
35
+ Style/HashTransformKeys:
36
+ Enabled: true
37
+
38
+ Style/HashTransformValues:
39
+ Enabled: true
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in lsports.gemspec
4
+ gemspec
@@ -0,0 +1,29 @@
1
+ # RTS Ruby Wrapper
2
+
3
+
4
+ ## Installation
5
+
6
+ Add this line to your application's Gemfile:
7
+
8
+ ```ruby
9
+ gem 'lsports'
10
+ ```
11
+
12
+ And then execute:
13
+
14
+ $ bundle
15
+
16
+ Or install it yourself as:
17
+
18
+ $ gem install lsports
19
+
20
+ ## Usage
21
+
22
+
23
+ ## Contributing
24
+
25
+ Bug reports and pull requests are welcome on GitHub at https://github.com/rmishra-ror/lsports-ruby.
26
+
27
+ ## License
28
+
29
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'lsports/version'
4
+ require 'lsports/api/reference'
5
+ require 'lsports/api/prematch'
6
+ require 'lsports/request'
7
+ require 'lsports/client'
8
+ require 'lsports/error'
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Api
4
+ module Prematch
5
+ # FIXTURES
6
+ # Get list of all the fixtures
7
+ # GET /GetFixtures{?lang, timestamp, fromdate, todate, indent, sports, locations, leagues, fixtures}
8
+ # Parameters
9
+ # Name: Description
10
+ # lang: Response content language. Default value: English
11
+ # timestamp: Response will contain content that was updated after given timestamp
12
+ # fromdate: Response will contain content that was updated after given timestamp
13
+ # todate: Response will contain events which start before given date
14
+ # indent: Response content will be indented
15
+ # sports: Comma separated list of sports
16
+ # locations: Comma separated list of locations
17
+ # leagues: Comma separated list of leagues
18
+ # fixtures: Comma separated list of fixtures
19
+ def fixtures(params = {})
20
+ get("GetFixtures", params: params)
21
+ end
22
+
23
+ # FIXTURE MARKETS
24
+ # Get list of all the fixture markets
25
+ # GET /GetFixtureMarkets{?lang, timestamp, fromdate, todate, indent, sports, locations, leagues, markets}
26
+ # Parameters
27
+ # Name: Description
28
+ # lang: Response content language. Default value: English
29
+ # timestamp: Response will contain content that was updated after given timestamp
30
+ # fromdate: Response will contain content that was updated after given timestamp
31
+ # todate: Response will contain events which start before given date
32
+ # indent: Response content will be indented
33
+ # sports: Comma separated list of sports
34
+ # locations: Comma separated list of locations
35
+ # leagues: Comma separated list of leagues
36
+ # markets: Comma separated list of markets
37
+ def fixture_markets(params = {})
38
+ get("GetFixtureMarkets", params: params)
39
+ end
40
+
41
+ # EVENTS
42
+ # Get list of all the events
43
+ # GET /GetEvents{?lang, timestamp, fromdate, todate, indent, sports, locations, leagues, markets}
44
+ # Parameters
45
+ # Name: Description
46
+ # lang: Response content language. Default value: English
47
+ # timestamp: Response will contain content that was updated after given timestamp
48
+ # fromdate: Response will contain content that was updated after given timestamp
49
+ # todate: Response will contain events which start before given date
50
+ # indent: Response content will be indented
51
+ # sports: Comma separated list of sports
52
+ # locations: Comma separated list of locations
53
+ # leagues: Comma separated list of leagues
54
+ # markets: Comma separated list of markets
55
+ def events(params = {})
56
+ get("GetEvents", params: params)
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Api
4
+ module Reference
5
+ # SPORTS
6
+ # Get list of all the sports
7
+ # GET /GetSports{?lang, indent}
8
+ # Parameters
9
+ # Name: Description
10
+ # lang: Response content language. Default value: English
11
+ # indent: Response content will be indented
12
+ def sports(params = {})
13
+ get("GetSports", params: params)
14
+ end
15
+
16
+ # LOCATIONS
17
+ # Get list of all the locations
18
+ # GET /GetLocations{?lang, indent}
19
+ # Parameters
20
+ # Name: Description
21
+ # lang: Response content language. Default value: English
22
+ # indent: Response content will be indented
23
+ def locations(params = {})
24
+ get("GetLocations", params: params)
25
+ end
26
+
27
+ # LEAGUES
28
+ # Get list of all the leagues
29
+ # GET /GetLeagues{?lang, indent}
30
+ # Parameters
31
+ # Name: Description
32
+ # lang: Response content language. Default value: English
33
+ # indent: Response content will be indented
34
+ def leagues(params = {})
35
+ get("GetLeagues", params: params)
36
+ end
37
+
38
+ # BOOKMAKERS
39
+ # Get list of all the bookmakers
40
+ # GET /GetBookmakers{?lang, indent}
41
+ # Parameters
42
+ # Name: Description
43
+ # lang: Response content language. Default value: English
44
+ # indent: Response content will be indented
45
+ def bookmakers(params = {})
46
+ get("GetBookmakers", params: params)
47
+ end
48
+
49
+ # MARKETS
50
+ # Get list of all the markets
51
+ # GET /GetMarkets{?lang, indent}
52
+ # Parameters
53
+ # Name: Description
54
+ # lang: Response content language. Default value: English
55
+ # indent: Response content will be indented
56
+ def markets(params = {})
57
+ get("GetMarkets", params: params)
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+
4
+ module LSports
5
+ class Client < Request
6
+ attr_accessor :username, :password, :guid
7
+ BASE_URL = 'https://prematch.lsports.eu/OddService'
8
+ include ::Api::Reference
9
+ include ::Api::Prematch
10
+
11
+ def initialize(username:, password:, guid:)
12
+ @username = username
13
+ @password = password
14
+ @guid = guid
15
+ end
16
+
17
+ def request_url(path)
18
+ "#{BASE_URL}/#{path}"
19
+ end
20
+
21
+ def query_params(query)
22
+ { params: params.merge(query) }
23
+ end
24
+
25
+ def params
26
+ { username: username, password: password, guid: guid }
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LSports
4
+ class Error < ::StandardError
5
+ class << self
6
+ def errors
7
+ @errors ||= {
8
+ 400 => LSports::Error::BadRequest,
9
+ 404 => LSports::Error::NotFound
10
+ }
11
+ end
12
+
13
+ def on_complete(response)
14
+ klass = errors[response.http_code&.to_i] || LSports::Error::Unknown
15
+ request = response.response&.request.inspect
16
+ raise klass.new({ code: response.http_code, body: response.http_body,
17
+ request: request })
18
+ end
19
+ end
20
+
21
+ # Raised when LSports returns a 4xx HTTP status code
22
+ ClientError = Class.new(self)
23
+
24
+ # Raised when LSports returns the HTTP status code 400
25
+ BadRequest = Class.new(ClientError)
26
+
27
+ # Raised when LSports returns the HTTP status code 404
28
+ NotFound = Class.new(ClientError)
29
+
30
+ # Raised when LSports returns unknown status code
31
+ Unknown = Class.new(self)
32
+ end
33
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rest-client'
4
+ require 'json'
5
+ module LSports
6
+ class Request
7
+ def get(url, params: {})
8
+ JSON.parse RestClient.get(request_url(url), query_params(params))
9
+ rescue RestClient::Exception => e
10
+ LSports::Error.on_complete(e)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LSports
4
+ VERSION = '0.0.1'
5
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'lsports/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'lsports'
9
+ spec.version = LSports::VERSION
10
+ spec.authors = ['Rahul']
11
+ spec.email = ['rahulismishra@gmail.com']
12
+ spec.summary = 'A Ruby interface to the Lsports API.'
13
+ spec.description = 'A Ruby interface to the Lsports API.'
14
+ # spec.homepage = 'https://github.com/rmishra-ror/rts'
15
+ spec.license = 'MIT'
16
+
17
+ # Specify which files should be added to the gem when it is released.
18
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
19
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
20
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ end
22
+ spec.bindir = 'exe'
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ['lib']
25
+
26
+ spec.add_development_dependency 'bundler', '~> 1.17', '>= 1.17.3'
27
+ spec.add_development_dependency 'pry'
28
+ spec.add_development_dependency 'rake', '~> 13.0'
29
+ spec.add_development_dependency 'rspec', '~> 3.8'
30
+ spec.add_development_dependency 'vcr', '~> 4.0'
31
+ spec.add_development_dependency 'webmock', '~> 3.4'
32
+
33
+ spec.add_runtime_dependency 'rest-client', '~> 2.1', '>= 2.1.0'
34
+ end
metadata ADDED
@@ -0,0 +1,165 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lsports
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Rahul
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-04-27 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.17'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.17.3
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.17'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.17.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: pry
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '13.0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '13.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.8'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.8'
75
+ - !ruby/object:Gem::Dependency
76
+ name: vcr
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '4.0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '4.0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: webmock
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.4'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '3.4'
103
+ - !ruby/object:Gem::Dependency
104
+ name: rest-client
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 2.1.0
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '2.1'
113
+ type: :runtime
114
+ prerelease: false
115
+ version_requirements: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: 2.1.0
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '2.1'
123
+ description: A Ruby interface to the Lsports API.
124
+ email:
125
+ - rahulismishra@gmail.com
126
+ executables: []
127
+ extensions: []
128
+ extra_rdoc_files: []
129
+ files:
130
+ - ".rspec"
131
+ - ".rubocop.yml"
132
+ - Gemfile
133
+ - README.md
134
+ - lib/lsports.rb
135
+ - lib/lsports/api/prematch.rb
136
+ - lib/lsports/api/reference.rb
137
+ - lib/lsports/client.rb
138
+ - lib/lsports/error.rb
139
+ - lib/lsports/request.rb
140
+ - lib/lsports/version.rb
141
+ - lsports.gemspec
142
+ homepage:
143
+ licenses:
144
+ - MIT
145
+ metadata: {}
146
+ post_install_message:
147
+ rdoc_options: []
148
+ require_paths:
149
+ - lib
150
+ required_ruby_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ required_rubygems_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ requirements: []
161
+ rubygems_version: 3.0.3
162
+ signing_key:
163
+ specification_version: 4
164
+ summary: A Ruby interface to the Lsports API.
165
+ test_files: []