wenmar 0.8.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.
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "time"
4
+
5
+ module Wenmar
6
+ class Token
7
+ attr_reader :access_token, :refresh_token, :expires_at, :token_type
8
+
9
+ def initialize(access_token:, refresh_token: nil, expires_at: nil, token_type: "Bearer")
10
+ @access_token = access_token
11
+ @refresh_token = refresh_token
12
+ @expires_at = expires_at
13
+ @token_type = token_type
14
+ end
15
+
16
+ def expired?
17
+ @expires_at && @expires_at < Time.now
18
+ end
19
+
20
+ def will_expire_within?(seconds)
21
+ @expires_at && Time.now + seconds > @expires_at
22
+ end
23
+
24
+ def to_h
25
+ hash = {"access_token" => @access_token, "token_type" => @token_type}
26
+ hash["refresh_token"] = @refresh_token if @refresh_token
27
+ hash["expires_at"] = @expires_at.utc.iso8601 if @expires_at
28
+ hash
29
+ end
30
+
31
+ def self.from_h(hash)
32
+ hash ||= {}
33
+ hash = hash.transform_keys(&:to_s)
34
+ access_token = hash["access_token"]
35
+ raise TokenError, "token hash missing access_token" if access_token.nil? || access_token.empty?
36
+
37
+ expires_at = hash["expires_at"]
38
+ expires_at = parse_time(expires_at) if expires_at.is_a?(String)
39
+ new(
40
+ access_token: access_token,
41
+ refresh_token: hash["refresh_token"],
42
+ expires_at: expires_at,
43
+ token_type: hash.fetch("token_type", "Bearer")
44
+ )
45
+ end
46
+
47
+ def self.parse_time(value)
48
+ Time.parse(value)
49
+ rescue ArgumentError
50
+ raise TokenError, "invalid expires_at: #{value.inspect}"
51
+ end
52
+ private_class_method :parse_time
53
+ end
54
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Wenmar
4
+ VERSION = "0.8.0"
5
+ end
data/lib/wenmar.rb ADDED
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "wenmar/version"
4
+ require_relative "wenmar/error"
5
+ require_relative "wenmar/token"
6
+ require_relative "wenmar/oauth"
7
+ require_relative "wenmar/auth"
8
+ require_relative "wenmar/credentials"
9
+ require_relative "wenmar/config"
10
+ require_relative "wenmar/pagination"
11
+ require_relative "wenmar/client"
12
+ require_relative "wenmar/resources"
13
+
14
+ module Wenmar
15
+ end
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wenmar
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.0
5
+ platform: ruby
6
+ authors:
7
+ - Ben D'Angelo
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: faraday
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '2.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '2.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: faraday-retry
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '2.0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: ruby-keychain
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.3'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0.3'
54
+ description: Idiomatic Ruby client for the Wenmar Pro automotive shop management API.
55
+ email:
56
+ - ben@wenmarpro.com
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - LICENSE
62
+ - README.md
63
+ - lib/wenmar.rb
64
+ - lib/wenmar/auth.rb
65
+ - lib/wenmar/client.rb
66
+ - lib/wenmar/config.rb
67
+ - lib/wenmar/credentials.rb
68
+ - lib/wenmar/error.rb
69
+ - lib/wenmar/oauth.rb
70
+ - lib/wenmar/pagination.rb
71
+ - lib/wenmar/resources.rb
72
+ - lib/wenmar/token.rb
73
+ - lib/wenmar/version.rb
74
+ homepage: https://github.com/wenmar-pro/wenmar-sdk
75
+ licenses:
76
+ - MIT
77
+ metadata:
78
+ source_code_uri: https://github.com/wenmar-pro/wenmar-sdk
79
+ changelog_uri: https://github.com/wenmar-pro/wenmar-sdk/blob/main/MIGRATING.md
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: 3.1.0
88
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ requirements: []
94
+ rubygems_version: 4.0.18
95
+ specification_version: 4
96
+ summary: Ruby SDK for the Wenmar Pro API
97
+ test_files: []