fortnox-api 0.9.2 → 1.0.0.rc2
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 +4 -4
- data/CHANGELOG.md +120 -95
- data/{LICENSE.txt → LICENSE.md} +0 -0
- data/README.md +245 -248
- data/bin/fortnox-setup +211 -0
- data/bin/fortnox-update-env +38 -0
- data/fortnox.gemspec +29 -0
- data/lib/fortnox/auth/thread_local.rb +28 -0
- data/lib/fortnox/collection.rb +23 -0
- data/lib/fortnox/mappers/country_code.rb +34 -0
- data/lib/fortnox/mappers/date.rb +21 -0
- data/lib/fortnox/mappers/document_row.rb +12 -0
- data/lib/fortnox/mappers/edi_information.rb +15 -0
- data/lib/fortnox/mappers/email_information.rb +11 -0
- data/lib/fortnox/mappers/invoice_row.rb +14 -0
- data/lib/fortnox/mappers/label_references.rb +24 -0
- data/lib/fortnox/mappers/order_row.rb +9 -0
- data/lib/fortnox/mappers/struct.rb +71 -0
- data/lib/fortnox/mappers/struct_array.rb +31 -0
- data/lib/fortnox/resource.rb +131 -0
- data/lib/fortnox/resources/article.rb +160 -0
- data/lib/fortnox/resources/customer.rb +209 -0
- data/lib/fortnox/resources/document.rb +202 -0
- data/lib/fortnox/resources/invoice.rb +92 -0
- data/lib/fortnox/resources/label.rb +15 -0
- data/lib/fortnox/resources/order.rb +38 -0
- data/lib/fortnox/resources/project.rb +41 -0
- data/lib/fortnox/resources/terms_of_payment.rb +23 -0
- data/lib/fortnox/resources/unit.rb +26 -0
- data/lib/fortnox/struct.rb +24 -0
- data/lib/fortnox/structs/default_delivery_types.rb +16 -0
- data/lib/fortnox/structs/default_templates.rb +19 -0
- data/lib/fortnox/structs/document_row.rb +62 -0
- data/lib/fortnox/structs/edi_information.rb +25 -0
- data/lib/fortnox/structs/email_information.rb +22 -0
- data/lib/fortnox/structs/invoice_row.rb +13 -0
- data/lib/fortnox/structs/order_row.rb +10 -0
- data/lib/fortnox/types.rb +129 -0
- data/lib/fortnox/{api/version.rb → version.rb} +1 -3
- data/lib/fortnox.rb +111 -0
- metadata +55 -580
- data/.codeclimate.yml +0 -20
- data/.env.template +0 -7
- data/.env.test +0 -11
- data/.gitignore +0 -20
- data/.rspec +0 -2
- data/.rubocop.yml +0 -41
- data/.tool-versions +0 -1
- data/.travis.yml +0 -32
- data/CLAUDE.md +0 -79
- data/CONTRIBUTE.md +0 -38
- data/DEVELOPER_README.md +0 -69
- data/Gemfile +0 -6
- data/Guardfile +0 -16
- data/Rakefile +0 -140
- data/bin/console +0 -22
- data/bin/fortnox +0 -285
- data/bin/get_tokens +0 -79
- data/bin/renew_tokens +0 -28
- data/docs/gotchas.md +0 -146
- data/fortnox-api.gemspec +0 -50
- data/lib/fortnox/api/mappers/article.rb +0 -23
- data/lib/fortnox/api/mappers/base/canonical_name_sym.rb +0 -21
- data/lib/fortnox/api/mappers/base/from_json.rb +0 -91
- data/lib/fortnox/api/mappers/base/to_json.rb +0 -66
- data/lib/fortnox/api/mappers/base.rb +0 -30
- data/lib/fortnox/api/mappers/customer.rb +0 -27
- data/lib/fortnox/api/mappers/default_delivery_types.rb +0 -15
- data/lib/fortnox/api/mappers/default_templates.rb +0 -16
- data/lib/fortnox/api/mappers/edi_information.rb +0 -23
- data/lib/fortnox/api/mappers/email_information.rb +0 -19
- data/lib/fortnox/api/mappers/invoice.rb +0 -29
- data/lib/fortnox/api/mappers/invoice_row.rb +0 -25
- data/lib/fortnox/api/mappers/order.rb +0 -26
- data/lib/fortnox/api/mappers/order_row.rb +0 -23
- data/lib/fortnox/api/mappers/project.rb +0 -17
- data/lib/fortnox/api/mappers/terms_of_payment.rb +0 -17
- data/lib/fortnox/api/mappers/unit.rb +0 -17
- data/lib/fortnox/api/mappers/value/array.rb +0 -18
- data/lib/fortnox/api/mappers/value/country_string.rb +0 -24
- data/lib/fortnox/api/mappers/value/date.rb +0 -11
- data/lib/fortnox/api/mappers/value/hash.rb +0 -16
- data/lib/fortnox/api/mappers/value/identity.rb +0 -18
- data/lib/fortnox/api/mappers.rb +0 -21
- data/lib/fortnox/api/models/article.rb +0 -134
- data/lib/fortnox/api/models/base.rb +0 -128
- data/lib/fortnox/api/models/customer.rb +0 -210
- data/lib/fortnox/api/models/document.rb +0 -189
- data/lib/fortnox/api/models/invoice.rb +0 -87
- data/lib/fortnox/api/models/label.rb +0 -19
- data/lib/fortnox/api/models/order.rb +0 -27
- data/lib/fortnox/api/models/project.rb +0 -42
- data/lib/fortnox/api/models/terms_of_payment.rb +0 -28
- data/lib/fortnox/api/models/unit.rb +0 -24
- data/lib/fortnox/api/models.rb +0 -9
- data/lib/fortnox/api/repositories/article.rb +0 -17
- data/lib/fortnox/api/repositories/authentication.rb +0 -61
- data/lib/fortnox/api/repositories/base/loaders.rb +0 -64
- data/lib/fortnox/api/repositories/base/savers.rb +0 -57
- data/lib/fortnox/api/repositories/base.rb +0 -93
- data/lib/fortnox/api/repositories/customer.rb +0 -17
- data/lib/fortnox/api/repositories/invoice.rb +0 -17
- data/lib/fortnox/api/repositories/order.rb +0 -17
- data/lib/fortnox/api/repositories/project.rb +0 -17
- data/lib/fortnox/api/repositories/terms_of_payment.rb +0 -17
- data/lib/fortnox/api/repositories/unit.rb +0 -17
- data/lib/fortnox/api/repositories.rb +0 -10
- data/lib/fortnox/api/request_handling.rb +0 -46
- data/lib/fortnox/api/types/default_delivery_types.rb +0 -20
- data/lib/fortnox/api/types/default_templates.rb +0 -23
- data/lib/fortnox/api/types/defaulted.rb +0 -11
- data/lib/fortnox/api/types/document_row.rb +0 -64
- data/lib/fortnox/api/types/edi_information.rb +0 -29
- data/lib/fortnox/api/types/email_information.rb +0 -26
- data/lib/fortnox/api/types/enums.rb +0 -116
- data/lib/fortnox/api/types/invoice_row.rb +0 -19
- data/lib/fortnox/api/types/model.rb +0 -37
- data/lib/fortnox/api/types/nullable.rb +0 -25
- data/lib/fortnox/api/types/order_row.rb +0 -16
- data/lib/fortnox/api/types/required.rb +0 -13
- data/lib/fortnox/api/types/shim/country_string.rb +0 -10
- data/lib/fortnox/api/types/sized.rb +0 -33
- data/lib/fortnox/api/types.rb +0 -144
- data/lib/fortnox/api.rb +0 -62
- data/spec/fortnox/api/mappers/article_spec.rb +0 -17
- data/spec/fortnox/api/mappers/base/canonical_name_sym_spec.rb +0 -36
- data/spec/fortnox/api/mappers/base/from_json_spec.rb +0 -70
- data/spec/fortnox/api/mappers/base/to_json_spec.rb +0 -68
- data/spec/fortnox/api/mappers/base_spec.rb +0 -154
- data/spec/fortnox/api/mappers/contexts/json_conversion.rb +0 -62
- data/spec/fortnox/api/mappers/customer_spec.rb +0 -27
- data/spec/fortnox/api/mappers/default_delivery_types_spec.rb +0 -14
- data/spec/fortnox/api/mappers/edi_information_spec.rb +0 -23
- data/spec/fortnox/api/mappers/email_information_spec.rb +0 -19
- data/spec/fortnox/api/mappers/examples/mapper.rb +0 -34
- data/spec/fortnox/api/mappers/invoice_row_spec.rb +0 -24
- data/spec/fortnox/api/mappers/invoice_spec.rb +0 -27
- data/spec/fortnox/api/mappers/order_row_spec.rb +0 -21
- data/spec/fortnox/api/mappers/order_spec.rb +0 -23
- data/spec/fortnox/api/mappers/project_spec.rb +0 -12
- data/spec/fortnox/api/mappers/terms_of_payment_spec.rb +0 -16
- data/spec/fortnox/api/mappers/unit_spec.rb +0 -56
- data/spec/fortnox/api/models/article_spec.rb +0 -9
- data/spec/fortnox/api/models/base_spec.rb +0 -117
- data/spec/fortnox/api/models/customer_spec.rb +0 -9
- data/spec/fortnox/api/models/examples/document_base.rb +0 -15
- data/spec/fortnox/api/models/examples/model.rb +0 -22
- data/spec/fortnox/api/models/invoice_spec.rb +0 -11
- data/spec/fortnox/api/models/order_spec.rb +0 -12
- data/spec/fortnox/api/models/project_spec.rb +0 -9
- data/spec/fortnox/api/models/terms_of_payment_spec.rb +0 -9
- data/spec/fortnox/api/models/unit_spec.rb +0 -33
- data/spec/fortnox/api/repositories/article_spec.rb +0 -80
- data/spec/fortnox/api/repositories/authentication_spec.rb +0 -103
- data/spec/fortnox/api/repositories/base_spec.rb +0 -168
- data/spec/fortnox/api/repositories/customer_spec.rb +0 -119
- data/spec/fortnox/api/repositories/examples/all.rb +0 -17
- data/spec/fortnox/api/repositories/examples/find.rb +0 -84
- data/spec/fortnox/api/repositories/examples/only.rb +0 -34
- data/spec/fortnox/api/repositories/examples/save.rb +0 -76
- data/spec/fortnox/api/repositories/examples/save_with_nested_model.rb +0 -28
- data/spec/fortnox/api/repositories/examples/save_with_specially_named_attribute.rb +0 -26
- data/spec/fortnox/api/repositories/examples/search.rb +0 -39
- data/spec/fortnox/api/repositories/invoice_spec.rb +0 -297
- data/spec/fortnox/api/repositories/order_spec.rb +0 -53
- data/spec/fortnox/api/repositories/project_spec.rb +0 -36
- data/spec/fortnox/api/repositories/terms_of_payment_spec.rb +0 -34
- data/spec/fortnox/api/repositories/unit_spec.rb +0 -39
- data/spec/fortnox/api/types/account_number_spec.rb +0 -35
- data/spec/fortnox/api/types/country_code_spec.rb +0 -42
- data/spec/fortnox/api/types/country_spec.rb +0 -67
- data/spec/fortnox/api/types/default_delivery_types_spec.rb +0 -12
- data/spec/fortnox/api/types/edi_information_spec.rb +0 -15
- data/spec/fortnox/api/types/email_information_spec.rb +0 -15
- data/spec/fortnox/api/types/email_spec.rb +0 -56
- data/spec/fortnox/api/types/enums_spec.rb +0 -17
- data/spec/fortnox/api/types/examples/document_row.rb +0 -25
- data/spec/fortnox/api/types/examples/enum.rb +0 -55
- data/spec/fortnox/api/types/examples/types.rb +0 -11
- data/spec/fortnox/api/types/housework_types_spec.rb +0 -149
- data/spec/fortnox/api/types/invoice_row_spec.rb +0 -11
- data/spec/fortnox/api/types/model_spec.rb +0 -69
- data/spec/fortnox/api/types/nullable_spec.rb +0 -79
- data/spec/fortnox/api/types/order_row_spec.rb +0 -15
- data/spec/fortnox/api/types/required_spec.rb +0 -36
- data/spec/fortnox/api/types/sales_account_spec.rb +0 -57
- data/spec/fortnox/api/types/sized_spec.rb +0 -76
- data/spec/fortnox/api_spec.rb +0 -66
- data/spec/spec_helper.rb +0 -35
- data/spec/support/helpers/configuration_helper.rb +0 -39
- data/spec/support/helpers/repository_helper.rb +0 -10
- data/spec/support/helpers.rb +0 -3
- data/spec/support/matchers/type/attribute_matcher.rb +0 -40
- data/spec/support/matchers/type/enum_matcher.rb +0 -23
- data/spec/support/matchers/type/have_account_number_matcher.rb +0 -23
- data/spec/support/matchers/type/have_currency_matcher.rb +0 -9
- data/spec/support/matchers/type/have_customer_type_matcher.rb +0 -15
- data/spec/support/matchers/type/have_default_delivery_type_matcher.rb +0 -9
- data/spec/support/matchers/type/have_discount_type_matcher.rb +0 -9
- data/spec/support/matchers/type/have_email_matcher.rb +0 -24
- data/spec/support/matchers/type/have_housework_type_matcher.rb +0 -9
- data/spec/support/matchers/type/have_nullable_date_matcher.rb +0 -60
- data/spec/support/matchers/type/have_nullable_matcher.rb +0 -54
- data/spec/support/matchers/type/have_nullable_string_matcher.rb +0 -47
- data/spec/support/matchers/type/have_sized_float_matcher.rb +0 -10
- data/spec/support/matchers/type/have_sized_integer_matcher.rb +0 -10
- data/spec/support/matchers/type/have_sized_string_matcher.rb +0 -36
- data/spec/support/matchers/type/have_vat_type_matcher.rb +0 -9
- data/spec/support/matchers/type/numeric_matcher.rb +0 -52
- data/spec/support/matchers/type/require_attribute_matcher.rb +0 -68
- data/spec/support/matchers/type/type_matcher.rb +0 -40
- data/spec/support/matchers/type.rb +0 -19
- data/spec/support/matchers.rb +0 -3
- data/spec/support/vcr_setup.rb +0 -25
- data/spec/vcr_cassettes/articles/all.yml +0 -67
- data/spec/vcr_cassettes/articles/find_by_hash_failure.yml +0 -62
- data/spec/vcr_cassettes/articles/find_failure.yml +0 -62
- data/spec/vcr_cassettes/articles/find_id_1.yml +0 -63
- data/spec/vcr_cassettes/articles/find_new.yml +0 -63
- data/spec/vcr_cassettes/articles/limits/quantity_in_stock_min_value.yml +0 -63
- data/spec/vcr_cassettes/articles/limits/quantity_in_stock_rounding_positive_value.yml +0 -63
- data/spec/vcr_cassettes/articles/multi_param_find_by_hash.yml +0 -62
- data/spec/vcr_cassettes/articles/save_new.yml +0 -63
- data/spec/vcr_cassettes/articles/save_old.yml +0 -63
- data/spec/vcr_cassettes/articles/save_with_specially_named_attribute.yml +0 -63
- data/spec/vcr_cassettes/articles/search_by_name.yml +0 -65
- data/spec/vcr_cassettes/articles/search_miss.yml +0 -62
- data/spec/vcr_cassettes/articles/search_with_special_char.yml +0 -62
- data/spec/vcr_cassettes/articles/single_param_find_by_hash.yml +0 -62
- data/spec/vcr_cassettes/authentication/expired_token.yml +0 -54
- data/spec/vcr_cassettes/authentication/invalid_authorization.yml +0 -57
- data/spec/vcr_cassettes/authentication/invalid_refresh_token.yml +0 -58
- data/spec/vcr_cassettes/authentication/valid_request.yml +0 -63
- data/spec/vcr_cassettes/customers/all.yml +0 -69
- data/spec/vcr_cassettes/customers/find_by_hash_failure.yml +0 -62
- data/spec/vcr_cassettes/customers/find_failure.yml +0 -62
- data/spec/vcr_cassettes/customers/find_id_1.yml +0 -64
- data/spec/vcr_cassettes/customers/find_new.yml +0 -63
- data/spec/vcr_cassettes/customers/find_with_sales_account.yml +0 -63
- data/spec/vcr_cassettes/customers/multi_param_find_by_hash.yml +0 -63
- data/spec/vcr_cassettes/customers/save_new.yml +0 -63
- data/spec/vcr_cassettes/customers/save_new_with_country_code_SE.yml +0 -64
- data/spec/vcr_cassettes/customers/save_new_with_idn_email.yml +0 -67
- data/spec/vcr_cassettes/customers/save_new_with_sales_account.yml +0 -63
- data/spec/vcr_cassettes/customers/save_old.yml +0 -63
- data/spec/vcr_cassettes/customers/save_with_specially_named_attribute.yml +0 -63
- data/spec/vcr_cassettes/customers/search_by_name.yml +0 -64
- data/spec/vcr_cassettes/customers/search_miss.yml +0 -62
- data/spec/vcr_cassettes/customers/search_with_special_char.yml +0 -62
- data/spec/vcr_cassettes/customers/single_param_find_by_hash.yml +0 -64
- data/spec/vcr_cassettes/invoices/all.yml +0 -96
- data/spec/vcr_cassettes/invoices/filter_hit.yml +0 -64
- data/spec/vcr_cassettes/invoices/filter_invalid.yml +0 -60
- data/spec/vcr_cassettes/invoices/find_by_hash_failure.yml +0 -62
- data/spec/vcr_cassettes/invoices/find_failure.yml +0 -62
- data/spec/vcr_cassettes/invoices/find_id_1.yml +0 -65
- data/spec/vcr_cassettes/invoices/find_new.yml +0 -65
- data/spec/vcr_cassettes/invoices/multi_param_find_by_hash.yml +0 -63
- data/spec/vcr_cassettes/invoices/row_delivered_quantity_decimals.yml +0 -65
- data/spec/vcr_cassettes/invoices/row_delivered_quantity_decimals_round_up.yml +0 -65
- data/spec/vcr_cassettes/invoices/row_description_limit.yml +0 -65
- data/spec/vcr_cassettes/invoices/row_price_limit.yml +0 -65
- data/spec/vcr_cassettes/invoices/row_price_limit_round_up.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_new.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_new_with_comments.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_new_with_country.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_new_with_country_GB.yml +0 -66
- data/spec/vcr_cassettes/invoices/save_new_with_country_Norge.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_new_with_country_Norway.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_new_with_country_Sverige.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_new_with_country_VA.yml +0 -66
- data/spec/vcr_cassettes/invoices/save_new_with_country_VI.yml +0 -66
- data/spec/vcr_cassettes/invoices/save_new_with_country_empty_string.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_new_with_country_nil.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_new_with_unsaved_parent.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_old.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_old_with_empty_comments.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_old_with_empty_country.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_old_with_nil_comments.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_old_with_nil_country.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_with_nested_model.yml +0 -65
- data/spec/vcr_cassettes/invoices/save_with_specially_named_attribute.yml +0 -65
- data/spec/vcr_cassettes/invoices/search_by_name.yml +0 -63
- data/spec/vcr_cassettes/invoices/search_miss.yml +0 -62
- data/spec/vcr_cassettes/invoices/search_with_special_char.yml +0 -62
- data/spec/vcr_cassettes/invoices/single_param_find_by_hash.yml +0 -64
- data/spec/vcr_cassettes/orders/all.yml +0 -69
- data/spec/vcr_cassettes/orders/filter_hit.yml +0 -64
- data/spec/vcr_cassettes/orders/filter_invalid.yml +0 -60
- data/spec/vcr_cassettes/orders/find_by_hash_failure.yml +0 -62
- data/spec/vcr_cassettes/orders/find_failure.yml +0 -62
- data/spec/vcr_cassettes/orders/find_id_1.yml +0 -67
- data/spec/vcr_cassettes/orders/find_new.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_invalid_tax_reduction_type.yml +0 -61
- data/spec/vcr_cassettes/orders/housework_othercoses_invalid.yml +0 -61
- data/spec/vcr_cassettes/orders/housework_type_babysitting.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_cleaning.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_construction.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_cooking.yml +0 -61
- data/spec/vcr_cassettes/orders/housework_type_electricity.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_gardening.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_glassmetalwork.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_grounddrainagework.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_hvac.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_itservices.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_majorappliancerepair.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_masonry.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_movingservices.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_othercare.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_othercosts.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_paintingwallpapering.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_snowplowing.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_textileclothing.yml +0 -65
- data/spec/vcr_cassettes/orders/housework_type_tutoring.yml +0 -61
- data/spec/vcr_cassettes/orders/multi_param_find_by_hash.yml +0 -63
- data/spec/vcr_cassettes/orders/save_new.yml +0 -65
- data/spec/vcr_cassettes/orders/save_old.yml +0 -65
- data/spec/vcr_cassettes/orders/save_with_nested_model.yml +0 -65
- data/spec/vcr_cassettes/orders/search_by_name.yml +0 -63
- data/spec/vcr_cassettes/orders/search_miss.yml +0 -62
- data/spec/vcr_cassettes/orders/search_with_special_char.yml +0 -62
- data/spec/vcr_cassettes/orders/single_param_find_by_hash.yml +0 -64
- data/spec/vcr_cassettes/projects/all.yml +0 -64
- data/spec/vcr_cassettes/projects/find_by_hash_failure.yml +0 -62
- data/spec/vcr_cassettes/projects/find_failure.yml +0 -62
- data/spec/vcr_cassettes/projects/find_id_1.yml +0 -63
- data/spec/vcr_cassettes/projects/find_new.yml +0 -63
- data/spec/vcr_cassettes/projects/multi_param_find_by_hash.yml +0 -64
- data/spec/vcr_cassettes/projects/save_new.yml +0 -63
- data/spec/vcr_cassettes/projects/save_old.yml +0 -63
- data/spec/vcr_cassettes/projects/single_param_find_by_hash.yml +0 -63
- data/spec/vcr_cassettes/termsofpayments/all.yml +0 -68
- data/spec/vcr_cassettes/termsofpayments/find_failure.yml +0 -62
- data/spec/vcr_cassettes/termsofpayments/find_id_1.yml +0 -62
- data/spec/vcr_cassettes/termsofpayments/find_new.yml +0 -63
- data/spec/vcr_cassettes/termsofpayments/save_new.yml +0 -63
- data/spec/vcr_cassettes/termsofpayments/save_old.yml +0 -63
- data/spec/vcr_cassettes/units/all.yml +0 -64
- data/spec/vcr_cassettes/units/find_failure.yml +0 -62
- data/spec/vcr_cassettes/units/find_id_1.yml +0 -63
- data/spec/vcr_cassettes/units/find_new.yml +0 -63
- data/spec/vcr_cassettes/units/save_new.yml +0 -63
- data/spec/vcr_cassettes/units/save_old.yml +0 -63
- data/spec/vcr_cassettes/units/save_with_specially_named_attribute.yml +0 -63
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
require_relative 'document'
|
|
5
|
-
|
|
6
|
-
module Fortnox
|
|
7
|
-
module API
|
|
8
|
-
module Model
|
|
9
|
-
class Invoice < Document
|
|
10
|
-
UNIQUE_ID = :document_number
|
|
11
|
-
STUB = { customer_number: '' }.freeze
|
|
12
|
-
|
|
13
|
-
# UrlTaxReductionList Direct url to the tax reduction for the invoice.
|
|
14
|
-
attribute :url_tax_reduction_list, Types::Nullable::String.is(:read_only)
|
|
15
|
-
|
|
16
|
-
# AccountingMethod Accounting Method.
|
|
17
|
-
attribute :accounting_method, Types::Nullable::String
|
|
18
|
-
|
|
19
|
-
# Balance Balance of the invoice.
|
|
20
|
-
attribute :balance, Types::Nullable::Float.is(:read_only)
|
|
21
|
-
|
|
22
|
-
# Booked If the invoice is bookkept.
|
|
23
|
-
attribute :booked, Types::Nullable::Boolean.is(:read_only)
|
|
24
|
-
|
|
25
|
-
# Credit If the invoice is a credit invoice.
|
|
26
|
-
attribute :credit, Types::Nullable::Boolean.is(:read_only)
|
|
27
|
-
|
|
28
|
-
# CreditInvoiceReference Reference to the credit invoice, if one exits.
|
|
29
|
-
attribute :credit_invoice_reference, Types::Nullable::Integer
|
|
30
|
-
|
|
31
|
-
# ContractReference Reference to the contract, if one exists.
|
|
32
|
-
attribute :contract_reference, Types::Nullable::Integer.is(:read_only)
|
|
33
|
-
|
|
34
|
-
# DueDate Due date of the invoice.
|
|
35
|
-
attribute :due_date, Types::Nullable::Date
|
|
36
|
-
|
|
37
|
-
# EDIInformation Separate EDIInformation object
|
|
38
|
-
attribute :edi_information, Types::EDIInformation
|
|
39
|
-
|
|
40
|
-
# EUQuarterlyReport EU Quarterly Report On / Off
|
|
41
|
-
attribute :eu_quarterly_report, Types::Nullable::Boolean
|
|
42
|
-
|
|
43
|
-
# InvoiceDate Invoice date.
|
|
44
|
-
attribute :invoice_date, Types::Nullable::Date
|
|
45
|
-
|
|
46
|
-
# InvoicePeriodStart Start date of the invoice period.
|
|
47
|
-
attribute :invoice_period_start, Types::Nullable::Date.is(:read_only)
|
|
48
|
-
|
|
49
|
-
# InvoicePeriodEnd End date of the invoice period.
|
|
50
|
-
attribute :invoice_period_end, Types::Nullable::Date.is(:read_only)
|
|
51
|
-
|
|
52
|
-
# InvoiceRows Separate object
|
|
53
|
-
attribute :invoice_rows, Types::Strict::Array.of(Types::InvoiceRow)
|
|
54
|
-
|
|
55
|
-
# InvoiceType The type of invoice.
|
|
56
|
-
attribute :invoice_type, Types::Nullable::String
|
|
57
|
-
|
|
58
|
-
# Language Language code.
|
|
59
|
-
attribute :language, Types::Nullable::String
|
|
60
|
-
|
|
61
|
-
# LastRemindDate Date of last reminder.
|
|
62
|
-
attribute :last_remind_date, Types::Nullable::Date.is(:read_only)
|
|
63
|
-
|
|
64
|
-
# NoxFinans If the invoice is managed by NoxFinans
|
|
65
|
-
attribute :nox_finans, Types::Nullable::Boolean.is(:read_only)
|
|
66
|
-
|
|
67
|
-
# OCR OCR number of the invoice.
|
|
68
|
-
attribute :ocr, Types::Nullable::String
|
|
69
|
-
|
|
70
|
-
# OrderReference Reference to the order, if one exists.
|
|
71
|
-
attribute :order_reference, Types::Nullable::Integer.is(:read_only)
|
|
72
|
-
|
|
73
|
-
# Reminders Number of reminders sent to the customer.
|
|
74
|
-
attribute :reminders, Types::Nullable::Integer.is(:read_only)
|
|
75
|
-
|
|
76
|
-
# VoucherNumber Voucher number for the invoice.
|
|
77
|
-
attribute :voucher_number, Types::Nullable::Integer.is(:read_only)
|
|
78
|
-
|
|
79
|
-
# VoucherSeries Voucher series for the invoice.
|
|
80
|
-
attribute :voucher_series, Types::Nullable::String.is(:read_only)
|
|
81
|
-
|
|
82
|
-
# VoucherYear Voucher year for the invoice.
|
|
83
|
-
attribute :voucher_year, Types::Nullable::Integer.is(:read_only)
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative '../types'
|
|
4
|
-
|
|
5
|
-
module Fortnox
|
|
6
|
-
module API
|
|
7
|
-
module Model
|
|
8
|
-
class Label < Model::Base
|
|
9
|
-
STUB = {}.freeze
|
|
10
|
-
|
|
11
|
-
# Id integer, read-only. The ID of the label.
|
|
12
|
-
attribute :id, Types::Required::Integer.is(:read_only)
|
|
13
|
-
|
|
14
|
-
# Description string, 25 characters, required. Description of the label
|
|
15
|
-
attribute :description, Types::Sized::String[25].is(:read_only)
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
require_relative 'document'
|
|
5
|
-
|
|
6
|
-
module Fortnox
|
|
7
|
-
module API
|
|
8
|
-
module Model
|
|
9
|
-
class Order < Document
|
|
10
|
-
UNIQUE_ID = :document_number
|
|
11
|
-
STUB = { customer_number: '', order_rows: [] }.freeze
|
|
12
|
-
|
|
13
|
-
# CopyRemarks I remarks shall copies from order to invoice
|
|
14
|
-
attribute :copy_remarks, Types::Nullable::Boolean
|
|
15
|
-
|
|
16
|
-
# InvoiceReference Reference if an invoice is created from order
|
|
17
|
-
attribute :invoice_reference, Types::Nullable::Integer.is(:read_only)
|
|
18
|
-
|
|
19
|
-
# OrderDate Date of order
|
|
20
|
-
attribute :order_date, Types::Nullable::Date
|
|
21
|
-
|
|
22
|
-
# OrderRows Separate object
|
|
23
|
-
attribute :order_rows, Types::Strict::Array.of(Types::OrderRow)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
require_relative '../types'
|
|
5
|
-
|
|
6
|
-
module Fortnox
|
|
7
|
-
module API
|
|
8
|
-
module Model
|
|
9
|
-
class Project < Fortnox::API::Model::Base
|
|
10
|
-
UNIQUE_ID = :project_number
|
|
11
|
-
STUB = { description: '' }.freeze
|
|
12
|
-
|
|
13
|
-
# Url Direct URL to the record
|
|
14
|
-
attribute :url, Types::Nullable::String.is(:read_only)
|
|
15
|
-
|
|
16
|
-
# Comments Comments on project. 512 characters
|
|
17
|
-
attribute :comments, Types::Sized::String[512]
|
|
18
|
-
|
|
19
|
-
# ContactPerson ContactPerson for project. 50 characters
|
|
20
|
-
attribute :contact_person, Types::Sized::String[50]
|
|
21
|
-
|
|
22
|
-
# Description Description of the project. 50 characters
|
|
23
|
-
attribute :description, Types::Sized::String[50]
|
|
24
|
-
|
|
25
|
-
# EndDate End date of the project.
|
|
26
|
-
attribute :end_date, Types::Nullable::Date
|
|
27
|
-
|
|
28
|
-
# ProjectLeader Projectleader. 50 characters
|
|
29
|
-
attribute :project_leader, Types::Sized::String[50]
|
|
30
|
-
|
|
31
|
-
# ProjectNumber Projectnumber. 20 characters
|
|
32
|
-
attribute :project_number, Types::Sized::String[20]
|
|
33
|
-
|
|
34
|
-
# Status Status of the project
|
|
35
|
-
attribute :status, Types::ProjectStatusType
|
|
36
|
-
|
|
37
|
-
# StartDate Start date of the project
|
|
38
|
-
attribute :start_date, Types::Nullable::Date
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative '../types'
|
|
4
|
-
require_relative '../models/base'
|
|
5
|
-
|
|
6
|
-
module Fortnox
|
|
7
|
-
module API
|
|
8
|
-
module Model
|
|
9
|
-
class TermsOfPayment < Fortnox::API::Model::Base
|
|
10
|
-
UNIQUE_ID = :code
|
|
11
|
-
STUB = { code: '', description: '' }.freeze
|
|
12
|
-
|
|
13
|
-
# Direct URL to the record
|
|
14
|
-
attribute :url, Types::Nullable::String.with(read_only: true)
|
|
15
|
-
|
|
16
|
-
# The code of the term of payment. Sortable
|
|
17
|
-
# TODO: Only writable during POST.
|
|
18
|
-
# TODO: Must be alphanumeric
|
|
19
|
-
# TODO: 30days is a valid value, but the API rewrites it as 30DAYS
|
|
20
|
-
# and you will not find the resource with a GET with value '30days'
|
|
21
|
-
attribute :code, Types::Required::String
|
|
22
|
-
|
|
23
|
-
# The description of the term of payment
|
|
24
|
-
attribute :description, Types::Required::String
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
require_relative '../types'
|
|
5
|
-
|
|
6
|
-
module Fortnox
|
|
7
|
-
module API
|
|
8
|
-
module Model
|
|
9
|
-
class Unit < Fortnox::API::Model::Base
|
|
10
|
-
UNIQUE_ID = :code
|
|
11
|
-
STUB = { code: '' }.freeze
|
|
12
|
-
|
|
13
|
-
# Url Direct URL to the record
|
|
14
|
-
attribute :url, Types::Nullable::String.is(:read_only)
|
|
15
|
-
|
|
16
|
-
# Comments Comments on project. 512 characters
|
|
17
|
-
attribute :code, Types::Required::String.is(:read_only)
|
|
18
|
-
|
|
19
|
-
# ContactPerson ContactPerson for project. 50 characters
|
|
20
|
-
attribute :description, Types::Nullable::String
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
data/lib/fortnox/api/models.rb
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'models/article'
|
|
4
|
-
require_relative 'models/customer'
|
|
5
|
-
require_relative 'models/invoice'
|
|
6
|
-
require_relative 'models/order'
|
|
7
|
-
require_relative 'models/project'
|
|
8
|
-
require_relative 'models/unit'
|
|
9
|
-
require_relative 'models/terms_of_payment'
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
require_relative '../models/article'
|
|
5
|
-
require_relative '../mappers/article'
|
|
6
|
-
|
|
7
|
-
module Fortnox
|
|
8
|
-
module API
|
|
9
|
-
module Repository
|
|
10
|
-
class Article < Base
|
|
11
|
-
MODEL = Model::Article
|
|
12
|
-
MAPPER = Mapper::Article
|
|
13
|
-
URI = '/articles/'
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
|
|
5
|
-
module Fortnox
|
|
6
|
-
module API
|
|
7
|
-
module Repository
|
|
8
|
-
class Authentication
|
|
9
|
-
def renew_tokens(refresh_token:, client_id:, client_secret:)
|
|
10
|
-
body = {
|
|
11
|
-
grant_type: 'refresh_token',
|
|
12
|
-
refresh_token: refresh_token
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
response = HTTParty.post(Fortnox::API.config.token_url,
|
|
16
|
-
headers: headers(client_id, client_secret),
|
|
17
|
-
body: body)
|
|
18
|
-
|
|
19
|
-
validate_response(response)
|
|
20
|
-
|
|
21
|
-
parsed_response_to_hash(response.parsed_response)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
private
|
|
25
|
-
|
|
26
|
-
def parsed_response_to_hash(parsed_response)
|
|
27
|
-
{
|
|
28
|
-
access_token: parsed_response['access_token'],
|
|
29
|
-
refresh_token: parsed_response['refresh_token'],
|
|
30
|
-
expires_in: parsed_response['expires_in'],
|
|
31
|
-
token_type: parsed_response['token_type'],
|
|
32
|
-
scope: parsed_response['scope']
|
|
33
|
-
}
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def headers(client_id, client_secret)
|
|
37
|
-
credentials = Base64.encode64("#{client_id}:#{client_secret}")
|
|
38
|
-
|
|
39
|
-
{
|
|
40
|
-
'Content-type' => 'application/x-www-form-urlencoded',
|
|
41
|
-
Authorization: "Basic #{credentials}"
|
|
42
|
-
}
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def validate_response(response)
|
|
46
|
-
return if response.code == 200
|
|
47
|
-
|
|
48
|
-
case response.code
|
|
49
|
-
when 400
|
|
50
|
-
raise Fortnox::API::RemoteServerError, "Bad request. Error: \"#{response.body}\""
|
|
51
|
-
when 401
|
|
52
|
-
raise Fortnox::API::RemoteServerError, "Unauthorized request. Error: \"#{response.body}\""
|
|
53
|
-
else
|
|
54
|
-
raise Exception, "Unable to renew access token. Response code: #{response.code}. " \
|
|
55
|
-
"Response message: #{response.message}. Response body: #{response.body}"
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'cgi'
|
|
4
|
-
|
|
5
|
-
module Fortnox
|
|
6
|
-
module API
|
|
7
|
-
module Repository
|
|
8
|
-
module Loaders
|
|
9
|
-
def all
|
|
10
|
-
response_hash = get(self.class::URI)
|
|
11
|
-
instantiate_collection_response(response_hash)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def only(filter)
|
|
15
|
-
response_hash = get("#{self.class::URI}?filter=#{filter}")
|
|
16
|
-
instantiate_collection_response(response_hash)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def search(hash)
|
|
20
|
-
attribute, value = hash.first
|
|
21
|
-
uri_encoded_value = CGI.escape(value)
|
|
22
|
-
uri = "#{self.class::URI}?#{attribute}=#{uri_encoded_value}"
|
|
23
|
-
response_hash = get(uri)
|
|
24
|
-
instantiate_collection_response(response_hash)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def find(id_or_hash)
|
|
28
|
-
return find_all_by(id_or_hash) if id_or_hash.is_a? Hash
|
|
29
|
-
|
|
30
|
-
find_one_by(id_or_hash)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def find_one_by(id)
|
|
34
|
-
response_hash = get("#{self.class::URI}#{id}")
|
|
35
|
-
instantiate(@mapper.wrapped_json_hash_to_entity_hash(response_hash))
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def find_all_by(hash)
|
|
39
|
-
response_hash = get("#{self.class::URI}?#{to_query(hash)}")
|
|
40
|
-
instantiate_collection_response(response_hash)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def to_query(hash)
|
|
44
|
-
hash.collect do |key, value|
|
|
45
|
-
escape(key, value)
|
|
46
|
-
end.sort * '&'
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def escape(key, value)
|
|
50
|
-
"#{CGI.escape(key.to_s)}=#{CGI.escape(value.to_s)}"
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
private
|
|
54
|
-
|
|
55
|
-
def instantiate_collection_response(response_hash)
|
|
56
|
-
entities_hash = @mapper.wrapped_json_collection_to_entities_hash(response_hash)
|
|
57
|
-
entities_hash.map do |entity_hash|
|
|
58
|
-
instantiate(entity_hash)
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Fortnox
|
|
4
|
-
module API
|
|
5
|
-
module Repository
|
|
6
|
-
module Savers
|
|
7
|
-
def save(entity)
|
|
8
|
-
return true if entity.saved?
|
|
9
|
-
|
|
10
|
-
return save_new(entity) if entity.new?
|
|
11
|
-
|
|
12
|
-
update_existing(entity)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
private
|
|
16
|
-
|
|
17
|
-
def execute_save(entity)
|
|
18
|
-
body = get_changes_on(entity).to_json
|
|
19
|
-
result = yield body
|
|
20
|
-
instantiate_saved(result)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def save_new(entity)
|
|
24
|
-
execute_save(entity) do |body|
|
|
25
|
-
post(self.class::URI, body: body)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def update_existing(entity)
|
|
30
|
-
execute_save(entity) do |body|
|
|
31
|
-
put(get_update_url_for(entity), body: body)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def get_changes_on(entity)
|
|
36
|
-
hash = @mapper.entity_to_hash(entity, @keys_filtered_on_save)
|
|
37
|
-
return hash unless entity.parent.saved?
|
|
38
|
-
|
|
39
|
-
parent_hash = @mapper.entity_to_hash(entity.parent, @keys_filtered_on_save)
|
|
40
|
-
@mapper.wrap_entity_json_hash(@mapper.diff(hash, parent_hash))
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def get_update_url_for(entity)
|
|
44
|
-
"#{self.class::URI}#{entity.unique_id}"
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def instantiate_saved(wrapped_json_hash)
|
|
48
|
-
instantiate(
|
|
49
|
-
@mapper.wrapped_json_hash_to_entity_hash(
|
|
50
|
-
wrapped_json_hash
|
|
51
|
-
)
|
|
52
|
-
)
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'httparty'
|
|
4
|
-
require 'jwt'
|
|
5
|
-
require 'base64'
|
|
6
|
-
|
|
7
|
-
require_relative 'base/loaders'
|
|
8
|
-
require_relative 'base/savers'
|
|
9
|
-
require_relative '../request_handling'
|
|
10
|
-
|
|
11
|
-
module Fortnox
|
|
12
|
-
module API
|
|
13
|
-
module Repository
|
|
14
|
-
class Base
|
|
15
|
-
include HTTParty
|
|
16
|
-
include Fortnox::API::RequestHandling
|
|
17
|
-
include Loaders
|
|
18
|
-
include Savers
|
|
19
|
-
|
|
20
|
-
HTTParty::Parser::SupportedFormats['text/html'] = :json
|
|
21
|
-
|
|
22
|
-
headers(
|
|
23
|
-
'Content-Type' => 'application/json',
|
|
24
|
-
'Accept' => 'application/json'
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
HTTP_METHODS = %i[get put post delete].freeze
|
|
28
|
-
|
|
29
|
-
attr_accessor :headers
|
|
30
|
-
attr_reader :mapper, :keys_filtered_on_save
|
|
31
|
-
|
|
32
|
-
def self.set_headers(headers = {})
|
|
33
|
-
self.headers.merge!(headers)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
HTTP_METHODS.each do |method|
|
|
37
|
-
define_method method do |path, options = {}, &block|
|
|
38
|
-
provided_headers = options[:headers] || {}
|
|
39
|
-
provided_headers['Authorization'] = "Bearer #{access_token}"
|
|
40
|
-
options[:headers] = provided_headers
|
|
41
|
-
options[:base_uri] ||= base_url
|
|
42
|
-
|
|
43
|
-
debug_log_request(path, options)
|
|
44
|
-
|
|
45
|
-
execute do |remote|
|
|
46
|
-
remote.send(method, path, options, &block)
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def initialize(keys_filtered_on_save: [:url])
|
|
52
|
-
@keys_filtered_on_save = keys_filtered_on_save
|
|
53
|
-
@mapper = Registry[Mapper::Base.canonical_name_sym(self.class::MODEL)].new
|
|
54
|
-
return unless access_token.nil?
|
|
55
|
-
|
|
56
|
-
raise MissingAccessToken,
|
|
57
|
-
'No Access Token provided! You need to provide an Access Token: ' \
|
|
58
|
-
'Fortnox::API.access_token = token'
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
private
|
|
62
|
-
|
|
63
|
-
def debug_log_request(path, options)
|
|
64
|
-
return unless Fortnox::API.debugging
|
|
65
|
-
|
|
66
|
-
Fortnox::API.logger.debug("path: #{path.inspect}")
|
|
67
|
-
Fortnox::API.logger.debug("options: #{options.inspect}")
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def access_token
|
|
71
|
-
Fortnox::API.access_token
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def instantiate(hash)
|
|
75
|
-
hash[:new] = false
|
|
76
|
-
hash[:unsaved] = false
|
|
77
|
-
self.class::MODEL.new(hash)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def base_url
|
|
81
|
-
base_url = config.base_url
|
|
82
|
-
raise MissingConfiguration, 'You have to provide a base url.' unless base_url
|
|
83
|
-
|
|
84
|
-
base_url
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def config
|
|
88
|
-
Fortnox::API.config
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
require_relative '../models/customer'
|
|
5
|
-
require_relative '../mappers/customer'
|
|
6
|
-
|
|
7
|
-
module Fortnox
|
|
8
|
-
module API
|
|
9
|
-
module Repository
|
|
10
|
-
class Customer < Base
|
|
11
|
-
MODEL = Model::Customer
|
|
12
|
-
MAPPER = Mapper::Customer
|
|
13
|
-
URI = '/customers/'
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
require_relative '../models/invoice'
|
|
5
|
-
require_relative '../mappers/invoice'
|
|
6
|
-
|
|
7
|
-
module Fortnox
|
|
8
|
-
module API
|
|
9
|
-
module Repository
|
|
10
|
-
class Invoice < Base
|
|
11
|
-
MODEL = Model::Invoice
|
|
12
|
-
MAPPER = Mapper::Invoice
|
|
13
|
-
URI = '/invoices/'
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
require_relative '../models/order'
|
|
5
|
-
require_relative '../mappers/order'
|
|
6
|
-
|
|
7
|
-
module Fortnox
|
|
8
|
-
module API
|
|
9
|
-
module Repository
|
|
10
|
-
class Order < Base
|
|
11
|
-
MODEL = Model::Order
|
|
12
|
-
MAPPER = Mapper::Order
|
|
13
|
-
URI = '/orders/'
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
require_relative '../models/project'
|
|
5
|
-
require_relative '../mappers/project'
|
|
6
|
-
|
|
7
|
-
module Fortnox
|
|
8
|
-
module API
|
|
9
|
-
module Repository
|
|
10
|
-
class Project < Base
|
|
11
|
-
MODEL = Model::Project
|
|
12
|
-
MAPPER = Mapper::Project
|
|
13
|
-
URI = '/projects/'
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
require_relative '../models/terms_of_payment'
|
|
5
|
-
require_relative '../mappers/terms_of_payment'
|
|
6
|
-
|
|
7
|
-
module Fortnox
|
|
8
|
-
module API
|
|
9
|
-
module Repository
|
|
10
|
-
class TermsOfPayment < Base
|
|
11
|
-
MODEL = Model::TermsOfPayment
|
|
12
|
-
MAPPER = Mapper::TermsOfPayment
|
|
13
|
-
URI = '/termsofpayments/'
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base'
|
|
4
|
-
require_relative '../models/unit'
|
|
5
|
-
require_relative '../mappers/unit'
|
|
6
|
-
|
|
7
|
-
module Fortnox
|
|
8
|
-
module API
|
|
9
|
-
module Repository
|
|
10
|
-
class Unit < Fortnox::API::Repository::Base
|
|
11
|
-
MODEL = Fortnox::API::Model::Unit
|
|
12
|
-
MAPPER = Fortnox::API::Mapper::Unit
|
|
13
|
-
URI = '/units/'
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'repositories/article'
|
|
4
|
-
require_relative 'repositories/customer'
|
|
5
|
-
require_relative 'repositories/invoice'
|
|
6
|
-
require_relative 'repositories/order'
|
|
7
|
-
require_relative 'repositories/project'
|
|
8
|
-
require_relative 'repositories/unit'
|
|
9
|
-
require_relative 'repositories/terms_of_payment'
|
|
10
|
-
require_relative 'repositories/authentication'
|