desertcart 1.0.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.
- checksums.yaml +7 -0
- data/.github/workflows/main.yml +18 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +138 -0
- data/LICENSE.txt +21 -0
- data/README.md +107 -0
- data/Rakefile +8 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/desertcart.gemspec +34 -0
- data/lib/desertcart/authentication_token/deserializer.rb +21 -0
- data/lib/desertcart/authentication_token/operations/find.rb +20 -0
- data/lib/desertcart/authentication_token/serializer.rb +21 -0
- data/lib/desertcart/client.rb +65 -0
- data/lib/desertcart/config.rb +14 -0
- data/lib/desertcart/deserializer.rb +9 -0
- data/lib/desertcart/marketplace/authorizations/operations/create.rb +30 -0
- data/lib/desertcart/marketplace/authorizations/serializer.rb +14 -0
- data/lib/desertcart/marketplace/movement/deserializer.rb +15 -0
- data/lib/desertcart/marketplace/movement/operations/create.rb +26 -0
- data/lib/desertcart/marketplace/movement/serializer.rb +20 -0
- data/lib/desertcart/marketplace/order_item/deserializer.rb +38 -0
- data/lib/desertcart/marketplace/order_item/operations/find.rb +44 -0
- data/lib/desertcart/marketplace/order_item/operations/update.rb +44 -0
- data/lib/desertcart/marketplace/order_item/searcher.rb +21 -0
- data/lib/desertcart/marketplace/order_item/serializer.rb +34 -0
- data/lib/desertcart/marketplace/order_item_acceptance/operations/create.rb +31 -0
- data/lib/desertcart/marketplace/order_item_acceptance/serializer.rb +15 -0
- data/lib/desertcart/marketplace/order_item_rejection/operations/create.rb +31 -0
- data/lib/desertcart/marketplace/order_item_rejection/serializer.rb +15 -0
- data/lib/desertcart/marketplace/pending_order_items/searcher.rb +25 -0
- data/lib/desertcart/marketplace/registration/operations/create.rb +34 -0
- data/lib/desertcart/marketplace/registration/serializer.rb +13 -0
- data/lib/desertcart/marketplace/shipping_address/deserializer.rb +18 -0
- data/lib/desertcart/marketplace/store/deserializer.rb +12 -0
- data/lib/desertcart/marketplace/store/operations/find.rb +22 -0
- data/lib/desertcart/marketplace/store/serializer.rb +12 -0
- data/lib/desertcart/operation/create.rb +49 -0
- data/lib/desertcart/operation/find.rb +63 -0
- data/lib/desertcart/operation/update.rb +49 -0
- data/lib/desertcart/operation.rb +39 -0
- data/lib/desertcart/resource.rb +6 -0
- data/lib/desertcart/resources/authentication_token.rb +14 -0
- data/lib/desertcart/resources/marketplace/authorization.rb +9 -0
- data/lib/desertcart/resources/marketplace/movement.rb +16 -0
- data/lib/desertcart/resources/marketplace/order_item.rb +34 -0
- data/lib/desertcart/resources/marketplace/order_item_acceptance.rb +10 -0
- data/lib/desertcart/resources/marketplace/order_item_rejection.rb +10 -0
- data/lib/desertcart/resources/marketplace/registration.rb +11 -0
- data/lib/desertcart/resources/marketplace/shipping_address.rb +15 -0
- data/lib/desertcart/resources/marketplace/store.rb +10 -0
- data/lib/desertcart/resources/session.rb +8 -0
- data/lib/desertcart/resources/user.rb +7 -0
- data/lib/desertcart/searcher.rb +70 -0
- data/lib/desertcart/serializer.rb +9 -0
- data/lib/desertcart/session/operations/create.rb +27 -0
- data/lib/desertcart/session/operations/find.rb +27 -0
- data/lib/desertcart/session/serializer.rb +10 -0
- data/lib/desertcart/user/deserializer.rb +10 -0
- data/lib/desertcart/user/serializer.rb +10 -0
- data/lib/desertcart/version.rb +5 -0
- data/lib/desertcart.rb +7 -0
- metadata +125 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../user/serializer'
|
4
|
+
require_relative '../marketplace/store/serializer'
|
5
|
+
|
6
|
+
module Desertcart
|
7
|
+
class AuthenticationToken
|
8
|
+
class Serializer < Desertcart::Serializer
|
9
|
+
id
|
10
|
+
attribute :token
|
11
|
+
attribute :expires_at
|
12
|
+
|
13
|
+
references_one 'user',
|
14
|
+
resource_attribute: :user,
|
15
|
+
serializer: Desertcart::User::Serializer
|
16
|
+
references_one 'store',
|
17
|
+
resource_attribute: :store,
|
18
|
+
serializer: Desertcart::Marketplace::Store::Serializer
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Desertcart
|
4
|
+
class Client
|
5
|
+
include LedgerSync::Ledgers::Client::Mixin
|
6
|
+
|
7
|
+
ROOT_URI = 'https://api.desertcart.com/api'
|
8
|
+
|
9
|
+
REQUEST_HEADERS = { 'Accept' => 'application/vnd.api+json; version:3.0',
|
10
|
+
'Content-Type' => 'application/json' }.freeze
|
11
|
+
|
12
|
+
attr_reader :user_id,
|
13
|
+
:user_token,
|
14
|
+
:store_id,
|
15
|
+
:store_token
|
16
|
+
|
17
|
+
def initialize(args = {})
|
18
|
+
@user_id = args[:user_id]
|
19
|
+
@user_token = args[:user_token]
|
20
|
+
@store_id = args[:store_id]
|
21
|
+
@store_token = args[:store_token]
|
22
|
+
end
|
23
|
+
|
24
|
+
def read(**keywords)
|
25
|
+
request(keywords.merge(method: :get))
|
26
|
+
end
|
27
|
+
|
28
|
+
def create(**keywords)
|
29
|
+
request(keywords.merge(method: :post))
|
30
|
+
end
|
31
|
+
|
32
|
+
def update(**keywords)
|
33
|
+
request(keywords.merge(method: :put))
|
34
|
+
end
|
35
|
+
|
36
|
+
def auth_headers
|
37
|
+
{
|
38
|
+
'X-User-Id' => @user_id,
|
39
|
+
'X-User-Token' => @user_token,
|
40
|
+
'X-Store-Id' => @store_id,
|
41
|
+
'X-Store-Token' => @store_token
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
def request(args = {})
|
46
|
+
request = LedgerSync::Ledgers::Request.new(
|
47
|
+
body: args.fetch(:body, nil),
|
48
|
+
headers: args.fetch(:headers, {})
|
49
|
+
.merge(REQUEST_HEADERS)
|
50
|
+
.merge(auth_headers),
|
51
|
+
method: args.fetch(:method),
|
52
|
+
url: url_from_path(path: args.fetch(:path)),
|
53
|
+
params: args.fetch(:params, {})
|
54
|
+
)
|
55
|
+
|
56
|
+
request.perform
|
57
|
+
end
|
58
|
+
|
59
|
+
def url_from_path(path:)
|
60
|
+
request_url = ROOT_URI
|
61
|
+
request_url += '/' unless path.to_s.start_with?('/')
|
62
|
+
request_url + path.to_s
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../resources/authentication_token'
|
4
|
+
|
5
|
+
module Desertcart
|
6
|
+
module Marketplace
|
7
|
+
class Authorization
|
8
|
+
module Operations
|
9
|
+
class Create < Desertcart::Operation::Create
|
10
|
+
class Contract < LedgerSync::Ledgers::Contract
|
11
|
+
params do
|
12
|
+
optional(:store).maybe(:hash, Types::Reference)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def ledger_namespace_path
|
17
|
+
'marketplace'
|
18
|
+
end
|
19
|
+
|
20
|
+
def deserialized_resource
|
21
|
+
Desertcart::AuthenticationToken::Deserializer.new.deserialize(
|
22
|
+
hash: response.body['authentication_token'],
|
23
|
+
resource: Desertcart::AuthenticationToken.new
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Desertcart
|
4
|
+
module Marketplace
|
5
|
+
class Authorization
|
6
|
+
class Serializer < Desertcart::Serializer
|
7
|
+
attribute :store_id do |args = {}|
|
8
|
+
resource = args.fetch(:resource)
|
9
|
+
resource.store.ledger_id
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Desertcart
|
4
|
+
module Marketplace
|
5
|
+
class Movement
|
6
|
+
class Deserializer < Desertcart::Deserializer
|
7
|
+
id
|
8
|
+
attribute :carrier
|
9
|
+
attribute :tracking_number
|
10
|
+
attribute :departed_at
|
11
|
+
attribute :estimated_arrival_at
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Desertcart
|
4
|
+
module Marketplace
|
5
|
+
class Movement
|
6
|
+
module Operations
|
7
|
+
class Create < Desertcart::Operation::Create
|
8
|
+
class Contract < LedgerSync::Ledgers::Contract
|
9
|
+
params do
|
10
|
+
required(:carrier).filled(:string)
|
11
|
+
required(:tracking_number).filled(:string)
|
12
|
+
required(:shipping_address_id).filled(:integer)
|
13
|
+
required(:departed_at).filled(:integer)
|
14
|
+
required(:estimated_arrival_at).filled(:integer)
|
15
|
+
required(:order_items).filled(:hash, Types::Reference)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def ledger_namespace_path
|
20
|
+
'marketplace'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Desertcart
|
4
|
+
module Marketplace
|
5
|
+
class Movement
|
6
|
+
class Serializer < Desertcart::Serializer
|
7
|
+
id
|
8
|
+
attribute :carrier
|
9
|
+
attribute :tracking_number
|
10
|
+
attribute :shipping_address_id
|
11
|
+
attribute :departed_at
|
12
|
+
attribute :estimated_arrival_at
|
13
|
+
attribute :order_item_ids do |args = {}|
|
14
|
+
resource = args.fetch(:resource)
|
15
|
+
resource.order_items.map(&:ledger_id)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../shipping_address/deserializer'
|
4
|
+
|
5
|
+
module Desertcart
|
6
|
+
module Marketplace
|
7
|
+
class OrderItem
|
8
|
+
class Deserializer < Desertcart::Deserializer
|
9
|
+
id
|
10
|
+
attribute :name
|
11
|
+
attribute :store_uid
|
12
|
+
attribute :store_id
|
13
|
+
attribute :order_reference
|
14
|
+
attribute :offer_reference
|
15
|
+
attribute :merchant_id
|
16
|
+
attribute :currency_code
|
17
|
+
attribute :price
|
18
|
+
attribute :title
|
19
|
+
attribute :state
|
20
|
+
attribute :marketplace_shipping_state
|
21
|
+
attribute :reason_for_rejection
|
22
|
+
attribute :checkin_condition
|
23
|
+
attribute :shipment_movement_id
|
24
|
+
attribute :seller_reference_number
|
25
|
+
attribute :seller_notes
|
26
|
+
attribute :order_placed_at
|
27
|
+
attribute :acceptance_expiration_at
|
28
|
+
attribute :estimated_delivery_date
|
29
|
+
attribute :accepted_at
|
30
|
+
attribute :purchase_order
|
31
|
+
attribute :note
|
32
|
+
references_one :shipping_address,
|
33
|
+
hash_attribute: 'shipping_address',
|
34
|
+
deserializer: ShippingAddress::Deserializer
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Desertcart
|
4
|
+
module Marketplace
|
5
|
+
class OrderItem
|
6
|
+
module Operations
|
7
|
+
class Find < Desertcart::Operation::Find
|
8
|
+
class Contract < LedgerSync::Ledgers::Contract
|
9
|
+
params do
|
10
|
+
required(:ledger_id).filled(:string)
|
11
|
+
optional(:name).maybe(:string)
|
12
|
+
optional(:store_uid).maybe(:string)
|
13
|
+
optional(:store_id).maybe(:integer)
|
14
|
+
optional(:order_reference).maybe(:string)
|
15
|
+
optional(:offer_reference).maybe(:string)
|
16
|
+
optional(:merchant_id).maybe(:string)
|
17
|
+
optional(:currency_code).maybe(:string)
|
18
|
+
optional(:price).maybe(:integer)
|
19
|
+
optional(:title).maybe(:string)
|
20
|
+
optional(:state).maybe(:string)
|
21
|
+
optional(:marketplace_shipping_state).maybe(:string)
|
22
|
+
optional(:reason_for_rejection).maybe(:string)
|
23
|
+
optional(:checkin_condition).maybe(:string)
|
24
|
+
optional(:shipment_movement_id).maybe(:integer)
|
25
|
+
optional(:seller_reference_number).maybe(:string)
|
26
|
+
optional(:seller_notes).maybe(:string)
|
27
|
+
optional(:order_placed_at).maybe(:integer)
|
28
|
+
optional(:acceptance_expiration_at).maybe(:integer)
|
29
|
+
optional(:estimated_delivery_date).maybe(:string)
|
30
|
+
optional(:accepted_at).maybe(:integer)
|
31
|
+
optional(:purchase_order).maybe(:integer)
|
32
|
+
optional(:shipping_address).maybe(:hash)
|
33
|
+
optional(:note).maybe(:string)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def ledger_namespace_path
|
38
|
+
'marketplace'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Desertcart
|
4
|
+
module Marketplace
|
5
|
+
class OrderItem
|
6
|
+
module Operations
|
7
|
+
class Update < Desertcart::Operation::Update
|
8
|
+
class Contract < LedgerSync::Ledgers::Contract
|
9
|
+
params do
|
10
|
+
required(:ledger_id).filled(:string)
|
11
|
+
optional(:name).maybe(:string)
|
12
|
+
optional(:store_uid).maybe(:string)
|
13
|
+
optional(:store_id).maybe(:integer)
|
14
|
+
optional(:order_reference).maybe(:string)
|
15
|
+
optional(:offer_reference).maybe(:string)
|
16
|
+
optional(:merchant_id).maybe(:string)
|
17
|
+
optional(:currency_code).maybe(:string)
|
18
|
+
optional(:price).maybe(:integer)
|
19
|
+
optional(:title).maybe(:string)
|
20
|
+
optional(:state).maybe(:string)
|
21
|
+
optional(:marketplace_shipping_state).maybe(:string)
|
22
|
+
optional(:reason_for_rejection).maybe(:string)
|
23
|
+
optional(:checkin_condition).maybe(:string)
|
24
|
+
optional(:shipment_movement_id).maybe(:integer)
|
25
|
+
optional(:seller_reference_number).maybe(:string)
|
26
|
+
optional(:seller_notes).maybe(:string)
|
27
|
+
optional(:order_placed_at).maybe(:integer)
|
28
|
+
optional(:acceptance_expiration_at).maybe(:integer)
|
29
|
+
optional(:estimated_delivery_date).maybe(:string)
|
30
|
+
optional(:accepted_at).maybe(:integer)
|
31
|
+
optional(:purchase_order).maybe(:integer)
|
32
|
+
optional(:shipping_address).maybe(:hash)
|
33
|
+
optional(:note).maybe(:string)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def ledger_namespace_path
|
38
|
+
'marketplace'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Desertcart
|
4
|
+
module Marketplace
|
5
|
+
class OrderItem
|
6
|
+
class Searcher < Searcher
|
7
|
+
def resource_class
|
8
|
+
@resource_class ||= Desertcart::Marketplace::OrderItem
|
9
|
+
end
|
10
|
+
|
11
|
+
def searcher_deserializer_class
|
12
|
+
@searcher_deserializer_class ||= resource_class::Deserializer
|
13
|
+
end
|
14
|
+
|
15
|
+
def ledger_namespace_path
|
16
|
+
'marketplace'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Desertcart
|
4
|
+
module Marketplace
|
5
|
+
class OrderItem
|
6
|
+
class Serializer < Desertcart::Serializer
|
7
|
+
id
|
8
|
+
attribute :name
|
9
|
+
attribute :store_uid
|
10
|
+
attribute :store_id
|
11
|
+
attribute :order_reference
|
12
|
+
attribute :offer_reference
|
13
|
+
attribute :merchant_id
|
14
|
+
attribute :currency_code
|
15
|
+
attribute :price
|
16
|
+
attribute :title
|
17
|
+
attribute :state
|
18
|
+
attribute :marketplace_shipping_state
|
19
|
+
attribute :reason_for_rejection
|
20
|
+
attribute :checkin_condition
|
21
|
+
attribute :shipment_movement_id
|
22
|
+
attribute :seller_reference_number
|
23
|
+
attribute :seller_notes
|
24
|
+
attribute :order_placed_at
|
25
|
+
attribute :acceptance_expiration_at
|
26
|
+
attribute :estimated_delivery_date
|
27
|
+
attribute :accepted_at
|
28
|
+
attribute :purchase_order
|
29
|
+
attribute :shipping_address
|
30
|
+
attribute :note
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../resources/marketplace/order_item'
|
4
|
+
|
5
|
+
module Desertcart
|
6
|
+
module Marketplace
|
7
|
+
class OrderItemAcceptance
|
8
|
+
module Operations
|
9
|
+
class Create < Desertcart::Operation::Create
|
10
|
+
class Contract < LedgerSync::Ledgers::Contract
|
11
|
+
params do
|
12
|
+
required(:order_item).maybe(:hash, Types::Reference)
|
13
|
+
optional(:seller_reference_number).maybe(:string)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def ledger_namespace_path
|
18
|
+
'marketplace'
|
19
|
+
end
|
20
|
+
|
21
|
+
def deserialized_resource
|
22
|
+
Desertcart::Marketplace::OrderItem::Deserializer.new.deserialize(
|
23
|
+
hash: response.body['order_item'],
|
24
|
+
resource: Desertcart::Marketplace::OrderItem.new
|
25
|
+
)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|