shiprocket_api 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: daaeb47a98dc3ffd00727499089bb409b69e4675b2bde2cf4b8af03f47f88529
4
- data.tar.gz: 3da69f20d46ae87a86442a104a1bbc7738996fe2b42fdd5a0a79dd80c550879f
3
+ metadata.gz: 73f0cba24ef67b7f92782800786a5c0e21d530d07688e20402cd595dfaf58076
4
+ data.tar.gz: fcc2fb0d1069874b5f23d4931ac0fb919ecea707e9485159db7fe6984caf44bc
5
5
  SHA512:
6
- metadata.gz: 8af0d4efaff52ee451c2ffe961e266400d680e755f871b63204bef4a4034a7d5fa2f324124264b720511a4424fa02d31ef57fdb0e145bc5b35bfe872ee53452f
7
- data.tar.gz: 863d695ae42750b80296109f1a6fa07165ec718557e997c84929e0fc147dd0aeba422802799fc0ae006eeed77d63a54bb3c40dbd723eefa04df12bf1c1d8640f
6
+ metadata.gz: 44f0fab7e4580de012143c99846fb25c8a343960baa239c23ee993b007e05c2e4951d88a2fee4eb74737710c60f730a472b58b537e1fd30c2f6b0f184bfc5487
7
+ data.tar.gz: adf0558e26c6a57bb2e75d7e46bcc82ab9b2fe45a53c429ca7b93617cd1d3a38e07170dc1cb850ba397f1ba09db1f9b4c424f0029e909ea07d7f772f3e7d6c93
data/Gemfile.lock CHANGED
@@ -1,40 +1,39 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shiprocket_api (0.4.4)
5
- activeresource (~> 5.0)
4
+ shiprocket_api (0.5.3)
5
+ activeresource (>= 4.1.0)
6
6
  http
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activemodel (6.1.3.2)
12
- activesupport (= 6.1.3.2)
11
+ activemodel (7.0.2.4)
12
+ activesupport (= 7.0.2.4)
13
13
  activemodel-serializers-xml (1.0.2)
14
14
  activemodel (> 5.x)
15
15
  activesupport (> 5.x)
16
16
  builder (~> 3.1)
17
- activeresource (5.1.1)
18
- activemodel (>= 5.0, < 7)
17
+ activeresource (6.0.0)
18
+ activemodel (>= 6.0)
19
19
  activemodel-serializers-xml (~> 1.0)
20
- activesupport (>= 5.0, < 7)
21
- activesupport (6.1.3.2)
20
+ activesupport (>= 6.0)
21
+ activesupport (7.0.2.4)
22
22
  concurrent-ruby (~> 1.0, >= 1.0.2)
23
23
  i18n (>= 1.6, < 2)
24
24
  minitest (>= 5.1)
25
25
  tzinfo (~> 2.0)
26
- zeitwerk (~> 2.3)
27
- addressable (2.7.0)
26
+ addressable (2.8.0)
28
27
  public_suffix (>= 2.0.2, < 5.0)
29
28
  builder (3.2.4)
30
29
  byebug (11.1.3)
31
30
  coderay (1.1.2)
32
- concurrent-ruby (1.1.8)
31
+ concurrent-ruby (1.1.10)
33
32
  diff-lcs (1.3)
34
33
  domain_name (0.5.20190701)
35
34
  unf (>= 0.0.5, < 1.0.0)
36
35
  dotenv (2.7.6)
37
- ffi (1.13.1)
36
+ ffi (1.15.5)
38
37
  ffi-compiler (1.0.1)
39
38
  ffi (>= 1.0.0)
40
39
  rake
@@ -58,19 +57,19 @@ GEM
58
57
  http-cookie (~> 1.0)
59
58
  http-form_data (~> 2.2)
60
59
  http-parser (~> 1.2.0)
61
- http-cookie (1.0.3)
60
+ http-cookie (1.0.4)
62
61
  domain_name (~> 0.5)
63
62
  http-form_data (2.3.0)
64
63
  http-parser (1.2.3)
65
64
  ffi-compiler (>= 1.0, < 2.0)
66
- i18n (1.8.10)
65
+ i18n (1.10.0)
67
66
  concurrent-ruby (~> 1.0)
68
- listen (3.2.1)
67
+ listen (3.7.1)
69
68
  rb-fsevent (~> 0.10, >= 0.10.3)
70
69
  rb-inotify (~> 0.9, >= 0.9.10)
71
70
  lumberjack (1.2.4)
72
71
  method_source (1.0.0)
73
- minitest (5.14.4)
72
+ minitest (5.15.0)
74
73
  nenv (0.3.0)
75
74
  notiffany (0.1.3)
76
75
  nenv (~> 0.1)
@@ -81,9 +80,9 @@ GEM
81
80
  pry-byebug (3.9.0)
82
81
  byebug (~> 11.0)
83
82
  pry (~> 0.13.0)
84
- public_suffix (4.0.6)
83
+ public_suffix (4.0.7)
85
84
  rake (12.3.3)
86
- rb-fsevent (0.10.4)
85
+ rb-fsevent (0.11.1)
87
86
  rb-inotify (0.10.1)
88
87
  ffi (~> 1.0)
89
88
  rspec (3.9.0)
@@ -105,8 +104,8 @@ GEM
105
104
  concurrent-ruby (~> 1.0)
106
105
  unf (0.1.4)
107
106
  unf_ext
108
- unf_ext (0.0.7.7)
109
- zeitwerk (2.4.2)
107
+ unf_ext (0.0.8.1)
108
+ zeitwerk (2.5.4)
110
109
 
111
110
  PLATFORMS
112
111
  ruby
@@ -119,6 +118,7 @@ DEPENDENCIES
119
118
  rake (~> 12.0)
120
119
  rspec (~> 3.0)
121
120
  shiprocket_api!
121
+ zeitwerk
122
122
 
123
123
  BUNDLED WITH
124
- 2.1.4
124
+ 2.3.8
data/lib/dev/config.rb CHANGED
@@ -2,7 +2,7 @@ require "dotenv/load"
2
2
 
3
3
  def set_config
4
4
  ShiprocketAPI.configure do |config|
5
- config.email = ENV["SHIPROCKET_API_USERNAME"]
5
+ config.email = ENV["SHIPROCKET_API_EMAIL"]
6
6
  config.password = ENV["SHIPROCKET_API_PASSWORD"]
7
7
  end
8
8
  end
@@ -5,24 +5,24 @@ module ShiprocketAPI
5
5
  self.connection_class = ShiprocketAPI::Connection
6
6
  self.include_root_in_json = false
7
7
  self.include_format_in_path = false
8
- self.site = "https://apiv2.shiprocket.in"
9
- self.connection.auth_type = :bearer
8
+ self.site = 'https://apiv2.shiprocket.in'
9
+ connection.auth_type = :bearer
10
10
  self.prefix = '/v1/external'
11
11
  self.session = nil
12
12
 
13
13
  class << self
14
14
  def create_session(email: ShiprocketAPI.config.email, password: ShiprocketAPI.config.password)
15
15
  self.session = Session.create(email: email, password: password)
16
- self.connection.bearer_token = session.token
16
+ connection.bearer_token = session.token
17
17
  end
18
-
18
+
19
19
  def clear_session
20
20
  self.session = nil
21
- self.connection.bearer_token = nil
21
+ connection.bearer_token = nil
22
22
  end
23
23
 
24
24
  def with_temp_session(email:, password:, &block)
25
- raise ArgumentError, "A block must be given" unless block
25
+ raise ArgumentError, 'A block must be given' unless block
26
26
 
27
27
  create_session(email: email, password: password)
28
28
  yield
@@ -33,16 +33,15 @@ module ShiprocketAPI
33
33
  ori_prefix = self.prefix
34
34
  self.prefix = prefix
35
35
  result = yield
36
- self.prefix = ori_prefix
37
36
  result
37
+ ensure
38
+ self.prefix = ori_prefix
38
39
  end
39
40
  end
40
41
 
41
42
  def initialize(attributes = {}, persisted = false)
42
- if defined?(self.class::DEFAULT_ATTRS)
43
- attributes = self.class::DEFAULT_ATTRS.merge(attributes)
44
- end
43
+ attributes = self.class::DEFAULT_ATTRS.merge(attributes) if defined?(self.class::DEFAULT_ATTRS)
45
44
  super
46
45
  end
47
46
  end
48
- end
47
+ end
@@ -37,16 +37,16 @@ module ShiprocketAPI
37
37
  height: '',
38
38
  weight: ''
39
39
  }
40
- end
41
40
 
42
- def generate_awb(courier_id:)
43
- return false unless attributes['shipment_id'] && shipment_id != 0
41
+ def generate_awb(courier_id:)
42
+ return false unless attributes['shipment_id'] && shipment_id != 0
44
43
 
45
- self.awb = ::ShiprocketAPI::Awb.new(
46
- shipment_id: shipment_id,
47
- courier_id: courier_id,
48
- is_return: 0
49
- )
50
- awb.save
44
+ self.awb = ::ShiprocketAPI::Awb.new(
45
+ shipment_id: shipment_id,
46
+ courier_id: courier_id,
47
+ is_return: 0
48
+ )
49
+ awb.save
50
+ end
51
51
  end
52
52
  end
@@ -5,6 +5,10 @@ module ShiprocketAPI
5
5
  self.prefix += '/orders/create/return'
6
6
  self.element_name = ''
7
7
 
8
+ has_many :order_items, class_name: 'ShiprocketAPI::OrderItem'
9
+
10
+ self.collection_parser = ReturnOrderCollection
11
+
8
12
  DEFAULT_ATTRS = {
9
13
  order_id: '',
10
14
  order_date: '',
@@ -50,15 +54,7 @@ module ShiprocketAPI
50
54
 
51
55
  def find_every(options)
52
56
  set_prefix_to_list_all do
53
- prefix_options, query_options = split_options(options[:params])
54
- path = collection_path(prefix_options, query_options)
55
- instantiate_collection((format.decode(connection.get(path, headers).body)['data'] || []), query_options,
56
- prefix_options)
57
- rescue ActiveResource::ResourceNotFound
58
- # Swallowing ResourceNotFound exceptions and return nil - as per
59
- # ActiveRecord.
60
- set_prefix_to_add
61
- nil
57
+ super
62
58
  end
63
59
  end
64
60
  end
@@ -75,3 +71,8 @@ module ShiprocketAPI
75
71
  end
76
72
  end
77
73
  end
74
+
75
+ # reload!
76
+ # ShiprocketAPI::Base.create_session
77
+ # orders = ShiprocketAPI::ReturnOrder.all
78
+ # orders.fetch_next_page
@@ -0,0 +1,36 @@
1
+ module ShiprocketAPI
2
+ class ReturnOrderCollection < ActiveResource::Collection
3
+ def initialize(args)
4
+ @per_page = args.dig('meta', 'pagination', 'per_page')
5
+ @next_url = args.dig('meta', 'pagination', 'links', 'next')
6
+ @previous_url = args.dig('meta', 'pagination', 'links', 'previous')
7
+ super(args['data'])
8
+ end
9
+
10
+ def previous_page?
11
+ previous_url.present?
12
+ end
13
+
14
+ def next_page?
15
+ next_url.present?
16
+ end
17
+
18
+ def fetch_next_page
19
+ fetch_page(next_url)
20
+ end
21
+
22
+ def fetch_previous_page
23
+ fetch_page(previous_url)
24
+ end
25
+
26
+ private
27
+
28
+ def fetch_page(url)
29
+ return [] unless url.present?
30
+
31
+ resource_class.all(from: url + "&per_page=#{per_page}")
32
+ end
33
+
34
+ attr_reader :per_page, :next_url, :previous_url
35
+ end
36
+ end
@@ -1,17 +1,19 @@
1
- module Shared
2
- module OrderHelper
3
- def generate_label
4
- return false unless attributes['shipment_id'] && shipment_id != 0
1
+ module ShiprocketAPI
2
+ module Shared
3
+ module OrderHelper
4
+ def generate_label
5
+ return false unless attributes['shipment_id'] && shipment_id != 0
5
6
 
6
- self.label = ::ShiprocketAPI::Label.new(shipment_id: [shipment_id])
7
- label.save
8
- end
7
+ self.label = ::ShiprocketAPI::Label.new(shipment_id: [shipment_id])
8
+ label.save
9
+ end
9
10
 
10
- def create_pickup
11
- return false unless attributes['shipment_id'] && shipment_id != 0
11
+ def create_pickup
12
+ return false unless attributes['shipment_id'] && shipment_id != 0
12
13
 
13
- self.pickup = ::ShiprocketAPI::Pickup.new(shipment_id: [shipment_id])
14
- pickup.save
14
+ self.pickup = ::ShiprocketAPI::Pickup.new(shipment_id: [shipment_id])
15
+ pickup.save
16
+ end
15
17
  end
16
18
  end
17
19
  end
@@ -1,3 +1,3 @@
1
1
  module ShiprocketAPI
2
- VERSION = "0.5.1"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -6,6 +6,7 @@ module ShiprocketAPI
6
6
  require 'shiprocket_api/configuration'
7
7
  require 'shiprocket_api/connection'
8
8
  require 'shiprocket_api/errors'
9
+ require 'shiprocket_api/return_order_collection'
9
10
 
10
11
  require 'shiprocket_api/shared/order_helper'
11
12
 
@@ -1,37 +1,38 @@
1
1
  require_relative 'lib/shiprocket_api/version'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
- spec.name = "shiprocket_api"
4
+ spec.name = 'shiprocket_api'
5
5
  spec.version = ShiprocketAPI::VERSION
6
- spec.authors = ["Andy Chong"]
7
- spec.email = ["andygg1996personal@gmail.com"]
6
+ spec.authors = ['Andy Chong']
7
+ spec.email = ['andygg1996personal@gmail.com']
8
8
 
9
- spec.summary = "Ruby object based Sendle API wrapper."
10
- spec.homepage = "https://github.com/PostCo/sendle_api"
11
- spec.license = "MIT"
12
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
9
+ spec.summary = 'Ruby object based Sendle API wrapper.'
10
+ spec.homepage = 'https://github.com/PostCo/sendle_api'
11
+ spec.license = 'MIT'
12
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
13
13
 
14
- spec.metadata["allowed_push_host"] = "https://rubygems.org/"
14
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org/'
15
15
 
16
- spec.metadata["homepage_uri"] = spec.homepage
17
- spec.metadata["source_code_uri"] = "https://github.com/PostCo/shiprocket_api"
18
- spec.metadata["changelog_uri"] = "https://github.com/PostCo/shiprocket_api/releases"
16
+ spec.metadata['homepage_uri'] = spec.homepage
17
+ spec.metadata['source_code_uri'] = 'https://github.com/PostCo/shiprocket_api'
18
+ spec.metadata['changelog_uri'] = 'https://github.com/PostCo/shiprocket_api/releases'
19
19
 
20
20
  # Specify which files should be added to the gem when it is released.
21
21
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
22
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
22
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
23
23
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
24
24
  end
25
- spec.bindir = "exe"
25
+ spec.bindir = 'exe'
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
- spec.require_paths = ["lib"]
27
+ spec.require_paths = ['lib']
28
28
 
29
- spec.add_dependency "activeresource", "~> 5.0"
30
- spec.add_dependency "http"
29
+ spec.add_dependency 'activeresource', '>= 4.1.0'
30
+ spec.add_dependency 'http'
31
31
 
32
- spec.add_development_dependency "rspec", "~> 3.2"
33
- spec.add_development_dependency "dotenv"
34
- spec.add_development_dependency "pry-byebug"
35
- spec.add_development_dependency "pry"
36
- spec.add_development_dependency "guard-rspec"
32
+ spec.add_development_dependency 'dotenv'
33
+ spec.add_development_dependency 'guard-rspec'
34
+ spec.add_development_dependency 'pry'
35
+ spec.add_development_dependency 'pry-byebug'
36
+ spec.add_development_dependency 'rspec', '~> 3.2'
37
+ spec.add_development_dependency 'zeitwerk'
37
38
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shiprocket_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Chong
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-15 00:00:00.000000000 Z
11
+ date: 2022-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeresource
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.0'
19
+ version: 4.1.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '5.0'
26
+ version: 4.1.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: http
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -39,21 +39,21 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: dotenv
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '3.2'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '3.2'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: dotenv
56
+ name: guard-rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: pry-byebug
70
+ name: pry
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: pry
84
+ name: pry-byebug
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,7 +95,21 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: guard-rspec
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: zeitwerk
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - ">="
@@ -146,6 +160,7 @@ files:
146
160
  - lib/shiprocket_api/resources/return_order.rb
147
161
  - lib/shiprocket_api/resources/session.rb
148
162
  - lib/shiprocket_api/resources/tracking.rb
163
+ - lib/shiprocket_api/return_order_collection.rb
149
164
  - lib/shiprocket_api/shared/order_helper.rb
150
165
  - lib/shiprocket_api/version.rb
151
166
  - shiprocket_api.gemspec
@@ -172,7 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
187
  - !ruby/object:Gem::Version
173
188
  version: '0'
174
189
  requirements: []
175
- rubygems_version: 3.1.6
190
+ rubygems_version: 3.2.32
176
191
  signing_key:
177
192
  specification_version: 4
178
193
  summary: Ruby object based Sendle API wrapper.