work_surfer 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.
- checksums.yaml +7 -0
- data/lib/work_surfer.rb +7 -0
- data/lib/work_surfer/api.rb +15 -0
- data/lib/work_surfer/api/approved_plans.rb +17 -0
- data/lib/work_surfer/api/territories.rb +13 -0
- data/lib/work_surfer/api/time_of_arrival.rb +21 -0
- data/lib/work_surfer/client.rb +87 -0
- metadata +85 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bb41f0781d7dc4c27cd0c65f693cfcb9cc95e6f1
|
4
|
+
data.tar.gz: 4acd6534f45640819f9c4b6913a2c107be46d3d0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: be9c3cb2c02a6aa5dac5c660c41f893d15d67b6ab850162ebb35d50be6e9f2c374be3a7a03dfe4725ba00aa0527db07c479b55fffb685f17347c3ab61694c0b7
|
7
|
+
data.tar.gz: 2dc3e10684f9286d44760a9c786b2bddf16e4f2b8640c180cddcf328819fb0824190d8465237d7a89895477a38d71d0e7f7c77b7f7815f59875e0ec4e26ba30a
|
data/lib/work_surfer.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WorkSurfer
|
4
|
+
module API
|
5
|
+
class << self
|
6
|
+
def client
|
7
|
+
Client.default_client
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
require "work_surfer/api/approved_plans"
|
14
|
+
require "work_surfer/api/territories"
|
15
|
+
require "work_surfer/api/time_of_arrival"
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WorkSurfer
|
4
|
+
module API
|
5
|
+
class ApprovedPlans
|
6
|
+
class << self
|
7
|
+
def get(route_id, territory_id: WorkSurfer::Client.default_territory_id)
|
8
|
+
API.client.get("territories/#{territory_id}/approved/routes/#{route_id}")
|
9
|
+
end
|
10
|
+
|
11
|
+
def list(date: "today", territory_id: WorkSurfer::Client.default_territory_id)
|
12
|
+
API.client.get("territories/#{territory_id}/approved/routes?date=#{date}")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WorkSurfer
|
4
|
+
module API
|
5
|
+
class TimeOfArrival
|
6
|
+
class << self
|
7
|
+
def get(route_id, territory_id: WorkSurfer::Client.default_territory_id)
|
8
|
+
API.client.get("territories/#{territory_id}/toa/routes/#{route_id}")
|
9
|
+
end
|
10
|
+
|
11
|
+
def list(date: nil, territory_id: WorkSurfer::Client.default_territory_id, vehicle_id: nil)
|
12
|
+
API.client.get("territories/#{territory_id}/toa/routes", { params: {
|
13
|
+
date: date,
|
14
|
+
territory_id: territory_id,
|
15
|
+
vehicle: vehicle_id,
|
16
|
+
}.reject { |k, v| v.nil? } })
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WorkSurfer
|
4
|
+
class Client
|
5
|
+
OPTIONS_WITH_CLASS_DEFAULT = [
|
6
|
+
:api_key,
|
7
|
+
:connection_builder,
|
8
|
+
:connection_options,
|
9
|
+
:default_headers,
|
10
|
+
:default_territory_id,
|
11
|
+
:url_base,
|
12
|
+
].freeze
|
13
|
+
|
14
|
+
OPTIONS_WITH_CLASS_DEFAULT.each do |option|
|
15
|
+
cattr_accessor option
|
16
|
+
attr_accessor option
|
17
|
+
end
|
18
|
+
|
19
|
+
self.connection_builder = ->(builder) {
|
20
|
+
builder.adapter Faraday.default_adapter
|
21
|
+
builder.request :url_encoded
|
22
|
+
builder.response :parse_json
|
23
|
+
}
|
24
|
+
|
25
|
+
self.connection_options = {}
|
26
|
+
self.default_headers = {
|
27
|
+
"X-WorkWave-Key": proc { api_key },
|
28
|
+
}
|
29
|
+
self.url_base = "https://wwrm.workwave.com/api/v1/"
|
30
|
+
|
31
|
+
[
|
32
|
+
:delete,
|
33
|
+
:get,
|
34
|
+
:post,
|
35
|
+
:put,
|
36
|
+
].each do |http_verb|
|
37
|
+
define_method(http_verb) do |*args|
|
38
|
+
connection.public_send(http_verb, *args)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def initialize(**options)
|
43
|
+
unknown_options = options.keys - OPTIONS_WITH_CLASS_DEFAULT
|
44
|
+
raise ArgumentError, "Unknown option key(s): #{unknown_options.join(", ")}. Valid options are: #{OPTIONS_WITH_CLASS_DEFAULT.join(", ")}." if unknown_options.any?
|
45
|
+
|
46
|
+
OPTIONS_WITH_CLASS_DEFAULT.each do |option|
|
47
|
+
value = options[option].nil? ? self.class.public_send(option) : options[option]
|
48
|
+
public_send("#{option}=", value)
|
49
|
+
end
|
50
|
+
|
51
|
+
self
|
52
|
+
end
|
53
|
+
|
54
|
+
protected
|
55
|
+
|
56
|
+
def connection
|
57
|
+
@connection ||= Faraday::Connection.new(
|
58
|
+
url_base,
|
59
|
+
connection_options.merge(
|
60
|
+
headers: evaluate_hash_values(default_headers)
|
61
|
+
),
|
62
|
+
&connection_builder
|
63
|
+
)
|
64
|
+
end
|
65
|
+
|
66
|
+
def evaluate_hash_values(hash)
|
67
|
+
Hash[
|
68
|
+
*hash.collect do |k, v|
|
69
|
+
[
|
70
|
+
k,
|
71
|
+
v.is_a?(Proc) ? instance_eval(&v) : v,
|
72
|
+
]
|
73
|
+
end.flatten
|
74
|
+
]
|
75
|
+
end
|
76
|
+
|
77
|
+
class << self
|
78
|
+
def default_client
|
79
|
+
@default_client ||= new
|
80
|
+
end
|
81
|
+
|
82
|
+
def default_client=(client)
|
83
|
+
@default_client = client
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: work_surfer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Niels Ganser
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-23 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.0
|
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.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: faraday_middleware
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.9'
|
34
|
+
- - "<="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '0.10'
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0.9'
|
44
|
+
- - "<="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0.10'
|
47
|
+
description:
|
48
|
+
email: niels@herimedia.com
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files: []
|
52
|
+
files:
|
53
|
+
- lib/work_surfer.rb
|
54
|
+
- lib/work_surfer/api.rb
|
55
|
+
- lib/work_surfer/api/approved_plans.rb
|
56
|
+
- lib/work_surfer/api/territories.rb
|
57
|
+
- lib/work_surfer/api/time_of_arrival.rb
|
58
|
+
- lib/work_surfer/client.rb
|
59
|
+
homepage: https://github.com/herimedia/work_surfer
|
60
|
+
licenses:
|
61
|
+
- Apache-2.0
|
62
|
+
metadata: {}
|
63
|
+
post_install_message:
|
64
|
+
rdoc_options: []
|
65
|
+
require_paths:
|
66
|
+
- lib
|
67
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
requirements: []
|
78
|
+
rubyforge_project:
|
79
|
+
rubygems_version: 2.5.1
|
80
|
+
signing_key:
|
81
|
+
specification_version: 4
|
82
|
+
summary: An experiemental unofficial API client for the WorkWave.com Route Manager
|
83
|
+
API.
|
84
|
+
test_files: []
|
85
|
+
has_rdoc:
|