Skip to content

Commit

Permalink
Add Customer, Dispute, Types with some shared types
Browse files Browse the repository at this point in the history
  • Loading branch information
joshsmith committed Nov 14, 2017
1 parent a9c3f57 commit 3e2c187
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 87 deletions.
55 changes: 19 additions & 36 deletions lib/stripe/core_resources/customer.ex
Original file line number Diff line number Diff line change
Expand Up @@ -18,43 +18,26 @@ defmodule Stripe.Customer do
import Stripe.Request
alias Stripe.Util

@type address :: %{
city: String.t,
country: String.t,
line1: String.t,
line2: String.t,
postal_code: String.t,
state: String.t
}

@type shipping :: %{
address: address,
carrier: String.t,
name: String.t,
phone: String.t,
tracking_number: String.t
}

@type t :: %__MODULE__{
id: Stripe.id,
object: String.t,
account_balance: integer,
business_vat_id: String.t,
created: Stripe.timestamp,
currency: String.t,
default_source: Stripe.id | Stripe.Source.t,
delinquent: boolean,
description: String.t,
discount: Stripe.Discount.t | nil,
email: String.t,
livemode: boolean,
metadata: %{
optional(String.t) => String.t
},
shipping: shipping,
sources: Stripe.List.of(Stripe.Source.t),
subscriptions: Stripe.List.of(Stripe.Subscription.t)
}
id: Stripe.id,
object: String.t,
account_balance: integer,
business_vat_id: String.t,
created: Stripe.timestamp,
currency: String.t | nil,
default_source: Stripe.id | Stripe.Source.t, # TODO: verify this
delinquent: boolean | nil,
description: String.t | nil,
discount: Stripe.Discount.t | nil,
email: String.t | nil,
livemode: boolean,
metadata: %{
optional(String.t) => String.t
},
shipping: Stripe.Types.shipping | nil,
sources: Stripe.List.of(Stripe.Source.t),
subscriptions: Stripe.List.of(Stripe.Subscription.t)
}

defstruct [
:id,
Expand Down
102 changes: 51 additions & 51 deletions lib/stripe/core_resources/dispute.ex
Original file line number Diff line number Diff line change
Expand Up @@ -7,41 +7,41 @@ defmodule Stripe.Dispute do
use Stripe.Entity

@type dispute_evidence :: %{
access_activity_log: String.t,
billing_address: String.t,
cancellation_policy: Stripe.id | Stripe.FileUpload.t,
cancellation_policy_disclosure: String.t,
cancellation_rebuttal: String.t,
customer_communication: Stripe.id | Stripe.FileUpload.t,
customer_email_address: String.t,
customer_name: String.t,
customer_purchase_ip: String.t,
customer_signature: Stripe.id | Stripe.FileUpload.t,
duplicate_charge_documentation: Stripe.id | Stripe.FileUpload.t,
duplicate_charge_explanation: String.t,
duplicate_charge_id: Stripe.id,
product_description: String.t,
receipt: Stripe.id | Stripe.FileUpload.t,
refund_policy: Stripe.id | Stripe.FileUpload.t,
refund_policy_disclosure: String.t,
refund_refusal_explanation: String.t,
service_date: String.t,
service_documentation: Stripe.id | Stripe.FileUpload.t,
shipping_address: String.t,
shipping_carrier: String.t,
shipping_date: String.t,
shipping_documentation: Stripe.id | Stripe.FileUpload.t,
shipping_tracking_number: Stripe.id | Stripe.FileUpload.t,
uncategorized_file: Stripe.id | Stripe.FileUpload.t,
uncategorized_text: String.t
}
access_activity_log: String.t | nil,
billing_address: String.t | nil,
cancellation_policy: Stripe.id | Stripe.FileUpload.t | nil,
cancellation_policy_disclosure: String.t | nil,
cancellation_rebuttal: String.t | nil,
customer_communication: Stripe.id | Stripe.FileUpload.t | nil,
customer_email_address: String.t | nil,
customer_name: String.t | nil,
customer_purchase_ip: String.t | nil,
customer_signature: Stripe.id | Stripe.FileUpload.t | nil,
duplicate_charge_documentation: Stripe.id | Stripe.FileUpload.t | nil,
duplicate_charge_explanation: String.t | nil,
duplicate_charge_id: Stripe.id | nil,
product_description: String.t | nil,
receipt: Stripe.id | Stripe.FileUpload.t | nil,
refund_policy: Stripe.id | Stripe.FileUpload.t | nil,
refund_policy_disclosure: String.t | nil,
refund_refusal_explanation: String.t | nil,
service_date: String.t | nil,
service_documentation: Stripe.id | Stripe.FileUpload.t | nil,
shipping_address: String.t | nil,
shipping_carrier: String.t | nil,
shipping_date: String.t | nil,
shipping_documentation: Stripe.id | Stripe.FileUpload.t | nil,
shipping_tracking_number: Stripe.id | Stripe.FileUpload.t | nil,
uncategorized_file: Stripe.id | Stripe.FileUpload.t | nil,
uncategorized_text: String.t | nil
}

@type evidence_details :: %{
due_by: Stripe.timestamp,
has_evidence: boolean,
past_due: boolean,
submission_count: integer
}
@type dispute_evidence_details :: %{
due_by: Stripe.timestamp | nil,
has_evidence: boolean,
past_due: boolean,
submission_count: integer
}

@type dispute_reason :: :duplicate | :fraudulent | :subscription_canceled |
:product_unacceptable | :product_not_received |
Expand All @@ -55,23 +55,23 @@ defmodule Stripe.Dispute do
:charge_refunded | :won | :lost

@type t :: %__MODULE__{
id: Stripe.id,
object: String.t,
amount: integer,
balance_transactions: [Stripe.BalanceTransaction.t],
charge: Stripe.id | Stripe.Charge.t,
created: Stripe.timestamp,
currency: String.t,
evidence: dispute_evidence,
evidence_details: evidence_details,
is_charge_refundable: boolean,
livemode: boolean,
metadata: %{
optional(String.t) => String.t
},
reason: dispute_reason,
status: dispute_status
}
id: Stripe.id,
object: String.t,
amount: integer,
balance_transactions: list(Stripe.BalanceTransaction.t),
charge: Stripe.id | Stripe.Charge.t,
created: Stripe.timestamp,
currency: String.t,
evidence: dispute_evidence,
dispute_evidence_details: dispute_evidence_details,
is_charge_refundable: boolean,
livemode: boolean,
metadata: %{
optional(String.t) => String.t
},
reason: dispute_reason,
status: dispute_status
}

defstruct [
:id,
Expand Down
22 changes: 22 additions & 0 deletions lib/stripe/types.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
defmodule Stripe.Types do
@moduledoc """
A module that contains shared types matching Stripe schemas.
"""

@type address :: %{
city: String.t | nil,
country: String.t | nil,
line1: String.t | nil,
line2: String.t | nil,
postal_code: String.t | nil,
state: String.t | nil
}

@type shipping :: %{
address: Stripe.Types.address,
carrier: String.t | nil,
name: String.t,
phone: String.t | nil,
tracking_number: String.t | nil
}
end

0 comments on commit 3e2c187

Please sign in to comment.