xpanse_2go 0.1.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
+ SHA256:
3
+ metadata.gz: a2bb3ad624fd1ac78537bd27941ffbc833f548c6cc866886bbe0af779557bbb1
4
+ data.tar.gz: b6fad2e2148e7e4f6b841ccc25ded1fc6396d9c8564e291c61ad0716b71a688d
5
+ SHA512:
6
+ metadata.gz: 837a6c97a2d16104c3dd81a8d5abda98d25bad4d942e4a08669c6cae2d49ab566ce8b0610d5619792dcb5f716d8ec20cac20b101f03f49a70708a3c95950c692
7
+ data.tar.gz: 0cf3e33b930a1b30298e0e3205c84eb79704de055b6d9ffa6f9bf0e9455fce4a0fa6a709365ac20ce4f20f081e1ea716e7898a4e51e21c37e18c0bc20283721e
data/.DS_Store ADDED
Binary file
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format progress
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,16 @@
1
+ require: rubocop-rspec
2
+
3
+ Metrics/BlockLength:
4
+ Max: 100
5
+
6
+ Metrics/LineLength:
7
+ Max: 100
8
+
9
+ Metrics/MethodLength:
10
+ Enabled: false
11
+
12
+ Style/Documentation:
13
+ Enabled: false
14
+
15
+ RSpec/DescribeClass:
16
+ Enabled: false
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ sudo: false
3
+ language: ruby
4
+ cache: bundler
5
+ rvm:
6
+ - 2.5.0
7
+ before_install: gem install bundler -v 2.0.1
@@ -0,0 +1,17 @@
1
+ {
2
+ // Use IntelliSense to learn about possible attributes.
3
+ // Hover to view descriptions of existing attributes.
4
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
+ "version": "0.2.0",
6
+ "configurations": [
7
+ {
8
+ "name": "Rails server",
9
+ "type": "Ruby",
10
+ "request": "launch",
11
+ "program": "${workspaceRoot}/bin/rails",
12
+ "args": [
13
+ "server"
14
+ ]
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "editor.fontFamily": "'Roboto Mono for Powerline', Menlo, Monaco, 'Courier New', monospace",
3
+ "editor.fontLigatures": true,
4
+ "workbench.fontAliasing": "auto",
5
+ "editor.fontSize": 9,
6
+ "editor.tabSize": 2
7
+ }
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in xpanse_2go.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,92 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ xpanse_2go (0.1.0)
5
+ activemodel (~> 5.1)
6
+ fast_jsonapi (~> 1.3)
7
+ typhoeus (~> 1.3)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ activemodel (5.2.2)
13
+ activesupport (= 5.2.2)
14
+ activesupport (5.2.2)
15
+ concurrent-ruby (~> 1.0, >= 1.0.2)
16
+ i18n (>= 0.7, < 2)
17
+ minitest (~> 5.1)
18
+ tzinfo (~> 1.1)
19
+ ast (2.4.0)
20
+ concurrent-ruby (1.1.4)
21
+ diff-lcs (1.3)
22
+ dotenv (2.7.1)
23
+ ethon (0.12.0)
24
+ ffi (>= 1.3.0)
25
+ factory_bot (4.11.1)
26
+ activesupport (>= 3.0.0)
27
+ faker (1.9.3)
28
+ i18n (>= 0.7)
29
+ fast_jsonapi (1.5)
30
+ activesupport (>= 4.2)
31
+ ffi (1.10.0)
32
+ i18n (1.5.3)
33
+ concurrent-ruby (~> 1.0)
34
+ jaro_winkler (1.5.2)
35
+ minitest (5.11.3)
36
+ parallel (1.14.0)
37
+ parser (2.6.0.0)
38
+ ast (~> 2.4.0)
39
+ powerpack (0.1.2)
40
+ psych (3.1.0)
41
+ rainbow (3.0.0)
42
+ rake (10.5.0)
43
+ rspec (3.8.0)
44
+ rspec-core (~> 3.8.0)
45
+ rspec-expectations (~> 3.8.0)
46
+ rspec-mocks (~> 3.8.0)
47
+ rspec-core (3.8.0)
48
+ rspec-support (~> 3.8.0)
49
+ rspec-expectations (3.8.2)
50
+ diff-lcs (>= 1.2.0, < 2.0)
51
+ rspec-support (~> 3.8.0)
52
+ rspec-mocks (3.8.0)
53
+ diff-lcs (>= 1.2.0, < 2.0)
54
+ rspec-support (~> 3.8.0)
55
+ rspec-support (3.8.0)
56
+ rubocop (0.65.0)
57
+ jaro_winkler (~> 1.5.1)
58
+ parallel (~> 1.10)
59
+ parser (>= 2.5, != 2.5.1.1)
60
+ powerpack (~> 0.1)
61
+ psych (>= 3.1.0)
62
+ rainbow (>= 2.2.2, < 4.0)
63
+ ruby-progressbar (~> 1.7)
64
+ unicode-display_width (~> 1.4.0)
65
+ rubocop-rspec (1.32.0)
66
+ rubocop (>= 0.60.0)
67
+ ruby-progressbar (1.10.0)
68
+ shoulda-matchers (4.0.1)
69
+ activesupport (>= 4.2.0)
70
+ thread_safe (0.3.6)
71
+ typhoeus (1.3.1)
72
+ ethon (>= 0.9.0)
73
+ tzinfo (1.2.5)
74
+ thread_safe (~> 0.1)
75
+ unicode-display_width (1.4.1)
76
+
77
+ PLATFORMS
78
+ ruby
79
+
80
+ DEPENDENCIES
81
+ bundler (~> 2.0)
82
+ dotenv (~> 2.5)
83
+ factory_bot (~> 4.8)
84
+ faker (~> 1.9)
85
+ rake (~> 10.0)
86
+ rspec (~> 3.0)
87
+ rubocop-rspec (~> 1.32)
88
+ shoulda-matchers (~> 4.0)
89
+ xpanse_2go!
90
+
91
+ BUNDLED WITH
92
+ 2.0.1
data/README.md ADDED
@@ -0,0 +1,55 @@
1
+ # Xpanse2go
2
+
3
+ A Ruby wrapper for the 2GO Courier API written by xpanse (David Marquez).
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'xpanse_2go'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install xpanse_2go
20
+
21
+ ## Xpanse2go::Order
22
+
23
+ $ pickup_address = Xpanse2go::Address.new(...)
24
+ $ delivery_address = Xpanse2go::Address.new(...)
25
+ $ package = Xpanse2go::Package.new(...)
26
+ $ order = Xpanse2go::Order.new(pickup_address, delivery_address, package,
27
+ reference_number, awb, cod_amt, instruction)
28
+
29
+ ## Xpanse2go::Address
30
+
31
+ $ address = Xpanse2go::Address.new(customer_name, line1, barangay, city,
32
+ country, zip_code, mobile_number, email_address)
33
+
34
+ ## Xpanse2go::Package
35
+
36
+ $ item = Xpanse2go::PackageItem(...)
37
+ $ package = Xpanse2go::Package.new
38
+ $ package.add_item(item)
39
+
40
+ ## Xpanse2go::PackageItem
41
+
42
+ $ item = Xpanse2go::PackageItem.new(quantity, package_code, weight, length,
43
+ width, height, declared_value, description)
44
+
45
+ ## TODO
46
+
47
+ [x] Xpanse2go::Package
48
+ [x] Xpanse2go::PackageItem
49
+ [x] Add Typhoeus sample
50
+ [] Add Typhoeus and connect to the Sandbox
51
+ [] xport.it
52
+ [] Receive webhook updates
53
+ [] Create xport.it microservice
54
+ [] Generating AWB indexes
55
+ [] Fetching an available AWB
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'xpanse_2go'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require 'irb'
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/lib/xpanse_2go.rb ADDED
@@ -0,0 +1,24 @@
1
+ module Xpanse2go
2
+ autoload :Configuration, 'xpanse_2go/configuration'
3
+
4
+ autoload :Order, 'xpanse_2go/order'
5
+ autoload :Address, 'xpanse_2go/address'
6
+ autoload :Package, 'xpanse_2go/package'
7
+ autoload :PackageItem, 'xpanse_2go/package_item'
8
+
9
+ def self.configuration
10
+ @configuration ||= Configuration.new
11
+ end
12
+
13
+ def self.configure
14
+ yield configuration
15
+ end
16
+
17
+ def self.url
18
+ if Xpanse2go.configuration.production
19
+ 'https://expressapps.2go.com.ph/2goweb'
20
+ else
21
+ 'https://expressapps.2go.com.ph/2gowebdev'
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,36 @@
1
+ require 'active_model'
2
+ require 'json'
3
+
4
+ module Xpanse2go
5
+ class Address
6
+ include ActiveModel::Model
7
+
8
+ attr_accessor :customer_name, :line1, :barangay, :city, :country, :zip_code
9
+ attr_accessor :mobile_number, :email_address
10
+
11
+ validates_presence_of :customer_name, :line1, :barangay, :city, :country, :zip_code
12
+
13
+ def initialize(options = {})
14
+ @customer_name = options[:customer_name]
15
+ @line1 = options[:line1]
16
+ @barangay = options[:barangay]
17
+ @city = options[:city]
18
+ @country = options[:customer_name] || 'Philippines'
19
+ @zip_code = options[:zip_code]
20
+ @mobile_number = options[:mobile_number]
21
+ @email_address = options[:email_address]
22
+ end
23
+
24
+ def attributes
25
+ {
26
+ "name": @customer_name,
27
+ "street": @line1,
28
+ "barangay": @barangay,
29
+ 'city': @city,
30
+ 'area_code': @zip_code,
31
+ 'mobile_number': @mobile_number,
32
+ 'email_address': @email_address
33
+ }
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,12 @@
1
+ module Xpanse2go
2
+ class Configuration
3
+ attr_accessor :account_id, :account_number, :token, :production
4
+
5
+ def initialize
6
+ @account_id = 'XPANSE'
7
+ @token = 'bVHQGxZLML'
8
+ @account_number = '1'
9
+ @production = false
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,59 @@
1
+ require 'active_model'
2
+ require 'json'
3
+
4
+ module Xpanse2go
5
+ class Order
6
+ include ActiveModel::Model
7
+
8
+ attr_accessor :reference_number, :awb, :cod_amt, :instruction
9
+ attr_accessor :pickup_address, :delivery_address, :package
10
+
11
+ validates_presence_of :pickup_address, :delivery_address, :package
12
+ validates_presence_of :reference_number, :awb
13
+ validate :pickup_address_is_valid, :delivery_address_is_valid
14
+ validate :package_has_items
15
+
16
+ def initialize(pickup_address, delivery_address, package, options = {})
17
+ @pickup_address = pickup_address
18
+ @delivery_address = delivery_address
19
+ @package = package
20
+ @reference_number = options[:reference_number]
21
+ @awb = options[:awb]
22
+ @cod_amt = options[:cod_amt] || 0
23
+ @instruction = options[:instruction]
24
+ end
25
+
26
+ def attributes
27
+ {
28
+ 'ID_': Xpanse2go.configuration.account_id,
29
+ 'token_': Xpanse2go.configuration.token,
30
+ 'account_no': Xpanse2go.configuration.account_number,
31
+ 'attachment': @reference_number,
32
+ 'awb_code': @awb,
33
+ 'cod_amt': @cod_amt,
34
+ 'instruction': @instruction,
35
+ 'pickup_dtls': @pickup_address.attributes,
36
+ 'cnee_dtls': @delivery_address.attributes,
37
+ 'px_dtls': @package.attributes
38
+ }
39
+ end
40
+
41
+ def to_json
42
+ { d: attributes }.to_json
43
+ end
44
+
45
+ private
46
+
47
+ def pickup_address_is_valid
48
+ errors.add(:pickup_address, 'is invalid') unless pickup_address.valid?
49
+ end
50
+
51
+ def delivery_address_is_valid
52
+ errors.add(:delivery_address, 'is invalid') unless delivery_address.valid?
53
+ end
54
+
55
+ def package_has_items
56
+ errors.add(:package, 'has no items') if package.empty?
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,36 @@
1
+ require 'active_model'
2
+ require 'json'
3
+
4
+ module Xpanse2go
5
+ class Package
6
+ include ActiveModel::Model
7
+
8
+ attr_accessor :items
9
+
10
+ validates_presence_of :items
11
+
12
+ def initialize
13
+ @items = []
14
+ end
15
+
16
+ def attributes
17
+ @items
18
+ end
19
+
20
+ def empty?
21
+ items.count.zero?
22
+ end
23
+
24
+ def add_item(item)
25
+ items << item.attributes if item.is_a?(Xpanse2go::PackageItem)
26
+ self
27
+ end
28
+
29
+ def add_item_with_quantity(item, quantity)
30
+ (0..quantity).each do
31
+ items << item.attributes if item.is_a?(Xpanse2go::PackageItem)
32
+ end
33
+ self
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,39 @@
1
+ require 'active_model'
2
+ require 'json'
3
+
4
+ module Xpanse2go
5
+ class PackageItem
6
+ include ActiveModel::Model
7
+
8
+ attr_accessor :quantity, :package_code
9
+ attr_accessor :description, :declared_value
10
+ attr_accessor :weight, :length, :width, :height
11
+
12
+ validates_presence_of :quantity, :package_code, :description
13
+ validates_presence_of :weight, :length, :width, :height
14
+
15
+ def initialize(options = {})
16
+ @quantity = options[:quantity]
17
+ @package_code = options[:package_code]
18
+ @weight = options[:weight]
19
+ @length = options[:length]
20
+ @width = options[:width]
21
+ @height = options[:height]
22
+ @declared_value = options[:declared_value]
23
+ @description = options[:description]
24
+ end
25
+
26
+ def attributes
27
+ {
28
+ 'item_qty': @quantity,
29
+ 'pkg_code': @package_code,
30
+ 'actual_wt': @weight,
31
+ 'length': @length,
32
+ 'width': @width,
33
+ 'height': @height,
34
+ 'declared_value': @declared_value,
35
+ 'item_description': @description
36
+ }
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,3 @@
1
+ module Xpanse2go
2
+ VERSION = '0.1.0'.freeze
3
+ end
@@ -0,0 +1,36 @@
1
+ # lib = File.expand_path("../lib", __FILE__)
2
+ lib = File.expand_path('lib', __dir__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'xpanse_2go/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'xpanse_2go'
8
+ spec.version = Xpanse2go::VERSION
9
+ spec.authors = ['David Marquez']
10
+ spec.email = ['david@xpanse.ph']
11
+
12
+ spec.summary = '2GO Ruby API'
13
+ spec.description = '2GO Courier API written by xpanse'
14
+ spec.homepage = 'https://rubygems.org/gems/xpanse_2go'
15
+
16
+ # Specify which files should be added to the gem when it is released.
17
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
18
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
19
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
+ end
21
+ spec.bindir = 'exe'
22
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ spec.require_paths = ['lib']
24
+
25
+ spec.add_dependency 'activemodel', '~> 5.1'
26
+ spec.add_dependency 'fast_jsonapi', '~> 1.3'
27
+ spec.add_dependency 'typhoeus', '~> 1.3'
28
+
29
+ spec.add_development_dependency 'bundler', '~> 2.0'
30
+ spec.add_development_dependency 'dotenv', '~> 2.5'
31
+ spec.add_development_dependency 'factory_bot', '~> 4.8'
32
+ spec.add_development_dependency 'faker', '~> 1.9'
33
+ spec.add_development_dependency 'rake', '~> 10.0'
34
+ spec.add_development_dependency 'rspec', '~> 3.0'
35
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.32'
36
+ end
metadata ADDED
@@ -0,0 +1,204 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xpanse_2go
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - David Marquez
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-03-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activemodel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: fast_jsonapi
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: typhoeus
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.3'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: dotenv
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.5'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.5'
83
+ - !ruby/object:Gem::Dependency
84
+ name: factory_bot
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '4.8'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '4.8'
97
+ - !ruby/object:Gem::Dependency
98
+ name: faker
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.9'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.9'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '10.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '10.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop-rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.32'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.32'
153
+ description: 2GO Courier API written by xpanse
154
+ email:
155
+ - david@xpanse.ph
156
+ executables: []
157
+ extensions: []
158
+ extra_rdoc_files: []
159
+ files:
160
+ - ".DS_Store"
161
+ - ".gitignore"
162
+ - ".rspec"
163
+ - ".rubocop.yml"
164
+ - ".travis.yml"
165
+ - ".vscode/launch.json"
166
+ - ".vscode/settings.json"
167
+ - Gemfile
168
+ - Gemfile.lock
169
+ - README.md
170
+ - Rakefile
171
+ - bin/console
172
+ - bin/setup
173
+ - lib/xpanse_2go.rb
174
+ - lib/xpanse_2go/address.rb
175
+ - lib/xpanse_2go/configuration.rb
176
+ - lib/xpanse_2go/order.rb
177
+ - lib/xpanse_2go/package.rb
178
+ - lib/xpanse_2go/package_item.rb
179
+ - lib/xpanse_2go/version.rb
180
+ - xpanse_2go.gemspec
181
+ homepage: https://rubygems.org/gems/xpanse_2go
182
+ licenses: []
183
+ metadata: {}
184
+ post_install_message:
185
+ rdoc_options: []
186
+ require_paths:
187
+ - lib
188
+ required_ruby_version: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ required_rubygems_version: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ requirements: []
199
+ rubyforge_project:
200
+ rubygems_version: 2.7.8
201
+ signing_key:
202
+ specification_version: 4
203
+ summary: 2GO Ruby API
204
+ test_files: []