usps-imis-api 0.15.2 → 1.0.0.pre.rc.1
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/.github/workflows/main.yml +57 -0
- data/.gitignore +4 -0
- data/.rspec +2 -0
- data/.rubocop.yml +88 -0
- data/.ruby-version +1 -0
- data/.simplecov +8 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +95 -0
- data/Rakefile +12 -0
- data/Readme.md +193 -25
- data/bin/console +21 -0
- data/bin/setup +8 -0
- data/lib/ext/hash.rb +10 -0
- data/lib/usps/imis/api.rb +135 -241
- data/lib/usps/imis/config.rb +10 -156
- data/lib/usps/imis/error/api.rb +26 -0
- data/lib/usps/imis/error/mapper.rb +9 -0
- data/lib/usps/imis/error/response.rb +75 -0
- data/lib/usps/imis/mapper.rb +21 -91
- data/lib/usps/imis/panel/base_panel.rb +42 -0
- data/lib/usps/imis/panel/education.rb +111 -0
- data/lib/usps/imis/panel/vsc.rb +109 -0
- data/lib/usps/imis/version.rb +1 -1
- data/lib/usps/imis.rb +23 -33
- data/spec/lib/usps/imis/api_spec.rb +143 -0
- data/spec/lib/usps/imis/config_spec.rb +33 -0
- data/spec/lib/usps/imis/error/api_spec.rb +17 -0
- data/spec/lib/usps/imis/error/response_spec.rb +107 -0
- data/spec/lib/usps/imis/mapper_spec.rb +31 -0
- data/spec/lib/usps/imis/panel/base_panel_spec.rb +32 -0
- data/spec/lib/usps/imis/panel/education_spec.rb +55 -0
- data/spec/lib/usps/imis/panel/vsc_spec.rb +38 -0
- data/spec/lib/usps/imis_spec.rb +11 -0
- data/spec/spec_helper.rb +35 -0
- data/usps-imis-api.gemspec +18 -0
- metadata +34 -595
- data/bin/imis +0 -8
- data/lib/usps/imis/base_data.rb +0 -87
- data/lib/usps/imis/blank_object.rb +0 -62
- data/lib/usps/imis/business_object.rb +0 -252
- data/lib/usps/imis/command_line/formatters.rb +0 -101
- data/lib/usps/imis/command_line/help.rb +0 -204
- data/lib/usps/imis/command_line/interface.rb +0 -186
- data/lib/usps/imis/command_line/options.yml +0 -167
- data/lib/usps/imis/command_line/options_parser.rb +0 -158
- data/lib/usps/imis/command_line/options_parser_config.rb +0 -82
- data/lib/usps/imis/command_line/performers.rb +0 -90
- data/lib/usps/imis/command_line.rb +0 -18
- data/lib/usps/imis/data.rb +0 -60
- data/lib/usps/imis/dependencies.rb +0 -33
- data/lib/usps/imis/error.rb +0 -53
- data/lib/usps/imis/errors/api_error.rb +0 -11
- data/lib/usps/imis/errors/command_line_error.rb +0 -11
- data/lib/usps/imis/errors/config_error.rb +0 -11
- data/lib/usps/imis/errors/embedded_model_find_error.rb +0 -20
- data/lib/usps/imis/errors/empty_payload_error.rb +0 -23
- data/lib/usps/imis/errors/locked_id_error.rb +0 -15
- data/lib/usps/imis/errors/mapper_error.rb +0 -29
- data/lib/usps/imis/errors/missing_id_error.rb +0 -15
- data/lib/usps/imis/errors/missing_party_field_error.rb +0 -24
- data/lib/usps/imis/errors/not_found_error.rb +0 -11
- data/lib/usps/imis/errors/panel_unimplemented_error.rb +0 -34
- data/lib/usps/imis/errors/pattern_matching_error.rb +0 -23
- data/lib/usps/imis/errors/response_error.rb +0 -104
- data/lib/usps/imis/errors/unexpected_property_type_error.rb +0 -31
- data/lib/usps/imis/helpers.rb +0 -23
- data/lib/usps/imis/logger.rb +0 -40
- data/lib/usps/imis/logger_formatter.rb +0 -39
- data/lib/usps/imis/logger_helpers.rb +0 -39
- data/lib/usps/imis/mocks/business_object.rb +0 -47
- data/lib/usps/imis/mocks.rb +0 -11
- data/lib/usps/imis/models/associations/individual_demog.rb +0 -11
- data/lib/usps/imis/models/base/finders.rb +0 -80
- data/lib/usps/imis/models/base/persistence.rb +0 -110
- data/lib/usps/imis/models/base.rb +0 -279
- data/lib/usps/imis/models/education.rb +0 -25
- data/lib/usps/imis/models/generated/abc_cs_contact.rb +0 -91
- data/lib/usps/imis/models/generated/abc_fed990.rb +0 -17
- data/lib/usps/imis/models/generated/abc_ps_volunteer_skills.rb +0 -16
- data/lib/usps/imis/models/generated/access_area.rb +0 -22
- data/lib/usps/imis/models/generated/access_item.rb +0 -18
- data/lib/usps/imis/models/generated/access_main.rb +0 -18
- data/lib/usps/imis/models/generated/action_plan.rb +0 -21
- data/lib/usps/imis/models/generated/activity.rb +0 -57
- data/lib/usps/imis/models/generated/activity_ldao.rb +0 -58
- data/lib/usps/imis/models/generated/activity_ldcdr.rb +0 -57
- data/lib/usps/imis/models/generated/activity_ldxo.rb +0 -57
- data/lib/usps/imis/models/generated/add_family.rb +0 -13
- data/lib/usps/imis/models/generated/advanced_email_twelve_months_delivered_by_date.rb +0 -16
- data/lib/usps/imis/models/generated/advanced_email_twelve_months_totals.rb +0 -16
- data/lib/usps/imis/models/generated/aec_chapter_events.rb +0 -28
- data/lib/usps/imis/models/generated/aec_chapter_link_all_events.rb +0 -18
- data/lib/usps/imis/models/generated/aec_district_administrators.rb +0 -19
- data/lib/usps/imis/models/generated/aec_district_squadron_admins.rb +0 -14
- data/lib/usps/imis/models/generated/aec_district_squadron_events.rb +0 -15
- data/lib/usps/imis/models/generated/aec_si_r_charge_fee_percentages.rb +0 -14
- data/lib/usps/imis/models/generated/aec_si_r_charge_params.rb +0 -16
- data/lib/usps/imis/models/generated/appeal.rb +0 -39
- data/lib/usps/imis/models/generated/appeal_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/asc_ps_abc_squadron_price.rb +0 -25
- data/lib/usps/imis/models/generated/atom_panel_purpose.rb +0 -15
- data/lib/usps/imis/models/generated/auto_pay_instruction_detail.rb +0 -22
- data/lib/usps/imis/models/generated/auto_pay_invoices.rb +0 -24
- data/lib/usps/imis/models/generated/auto_pay_invoices_dues.rb +0 -29
- data/lib/usps/imis/models/generated/auto_pay_member_instruction_detail.rb +0 -22
- data/lib/usps/imis/models/generated/auto_pay_membership_invoices_base.rb +0 -28
- data/lib/usps/imis/models/generated/bad_address_reason_ref.rb +0 -18
- data/lib/usps/imis/models/generated/batch_line_status_ref.rb +0 -14
- data/lib/usps/imis/models/generated/billing_cycles.rb +0 -50
- data/lib/usps/imis/models/generated/billing_fees.rb +0 -61
- data/lib/usps/imis/models/generated/billing_fees_by_bill_to_party.rb +0 -20
- data/lib/usps/imis/models/generated/billing_issue_notification_by_bill_run.rb +0 -20
- data/lib/usps/imis/models/generated/billing_issue_notification_by_party.rb +0 -30
- data/lib/usps/imis/models/generated/billing_log_by_bill_cycle_data.rb +0 -28
- data/lib/usps/imis/models/generated/billing_log_by_party.rb +0 -29
- data/lib/usps/imis/models/generated/billing_product.rb +0 -30
- data/lib/usps/imis/models/generated/bo_district_dues.rb +0 -26
- data/lib/usps/imis/models/generated/bo_dues_fees.rb +0 -21
- data/lib/usps/imis/models/generated/bo_dues_pricing.rb +0 -18
- data/lib/usps/imis/models/generated/bo_national_dues.rb +0 -84
- data/lib/usps/imis/models/generated/bo_no_natl_dist_dues.rb +0 -135
- data/lib/usps/imis/models/generated/bo_squadron_dues.rb +0 -26
- data/lib/usps/imis/models/generated/bo_total.rb +0 -17
- data/lib/usps/imis/models/generated/campaign.rb +0 -42
- data/lib/usps/imis/models/generated/campaign_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/campaign_type_ref.rb +0 -15
- data/lib/usps/imis/models/generated/certification_module_status.rb +0 -14
- data/lib/usps/imis/models/generated/change_log_report.rb +0 -25
- data/lib/usps/imis/models/generated/change_property.rb +0 -18
- data/lib/usps/imis/models/generated/chapt_subscriptions.rb +0 -14
- data/lib/usps/imis/models/generated/chapter.rb +0 -15
- data/lib/usps/imis/models/generated/chapter_events.rb +0 -30
- data/lib/usps/imis/models/generated/commerce_product.rb +0 -47
- data/lib/usps/imis/models/generated/commission_rate_type_ref.rb +0 -14
- data/lib/usps/imis/models/generated/committee.rb +0 -16
- data/lib/usps/imis/models/generated/committee_districts_org_id.rb +0 -16
- data/lib/usps/imis/models/generated/committee_i_ds_temp.rb +0 -13
- data/lib/usps/imis/models/generated/committee_squadrons_org_id.rb +0 -16
- data/lib/usps/imis/models/generated/communication_log_summary_for_charts.rb +0 -15
- data/lib/usps/imis/models/generated/communication_message_type_ref.rb +0 -14
- data/lib/usps/imis/models/generated/communication_reason_ref.rb +0 -22
- data/lib/usps/imis/models/generated/community_items.rb +0 -25
- data/lib/usps/imis/models/generated/community_subscriptions.rb +0 -25
- data/lib/usps/imis/models/generated/comparison_ref.rb +0 -14
- data/lib/usps/imis/models/generated/component_registry.rb +0 -28
- data/lib/usps/imis/models/generated/contact.rb +0 -32
- data/lib/usps/imis/models/generated/contact_birthday_info.rb +0 -20
- data/lib/usps/imis/models/generated/contact_communication_reason_preferences.rb +0 -25
- data/lib/usps/imis/models/generated/contact_detail_report.rb +0 -49
- data/lib/usps/imis/models/generated/contact_offering_ref.rb +0 -14
- data/lib/usps/imis/models/generated/contact_profile_image.rb +0 -22
- data/lib/usps/imis/models/generated/contact_report.rb +0 -23
- data/lib/usps/imis/models/generated/contact_salutation.rb +0 -18
- data/lib/usps/imis/models/generated/contact_skill_ref.rb +0 -14
- data/lib/usps/imis/models/generated/contact_social_network.rb +0 -19
- data/lib/usps/imis/models/generated/contact_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/contact_type_ref.rb +0 -16
- data/lib/usps/imis/models/generated/content_filter.rb +0 -18
- data/lib/usps/imis/models/generated/content_manager_authority_group.rb +0 -14
- data/lib/usps/imis/models/generated/cost_method_ref.rb +0 -15
- data/lib/usps/imis/models/generated/country_ref.rb +0 -27
- data/lib/usps/imis/models/generated/credit_type_ref.rb +0 -14
- data/lib/usps/imis/models/generated/cs_activity.rb +0 -50
- data/lib/usps/imis/models/generated/cs_activity_basic.rb +0 -51
- data/lib/usps/imis/models/generated/cs_activity_forms.rb +0 -38
- data/lib/usps/imis/models/generated/cs_activity_types.rb +0 -16
- data/lib/usps/imis/models/generated/cs_address.rb +0 -40
- data/lib/usps/imis/models/generated/cs_address_formats.rb +0 -15
- data/lib/usps/imis/models/generated/cs_appeal.rb +0 -23
- data/lib/usps/imis/models/generated/cs_calls.rb +0 -20
- data/lib/usps/imis/models/generated/cs_campaign.rb +0 -20
- data/lib/usps/imis/models/generated/cs_committee.rb +0 -23
- data/lib/usps/imis/models/generated/cs_committee_code.rb +0 -20
- data/lib/usps/imis/models/generated/cs_committee_member.rb +0 -38
- data/lib/usps/imis/models/generated/cs_committee_member_group.rb +0 -15
- data/lib/usps/imis/models/generated/cs_committee_position.rb +0 -16
- data/lib/usps/imis/models/generated/cs_contact.rb +0 -91
- data/lib/usps/imis/models/generated/cs_contact_basic.rb +0 -79
- data/lib/usps/imis/models/generated/cs_country_names.rb +0 -19
- data/lib/usps/imis/models/generated/cs_donations.rb +0 -31
- data/lib/usps/imis/models/generated/cs_donations_detail.rb +0 -33
- data/lib/usps/imis/models/generated/cs_donor_data.rb +0 -21
- data/lib/usps/imis/models/generated/cs_dues_history.rb +0 -22
- data/lib/usps/imis/models/generated/cs_event.rb +0 -92
- data/lib/usps/imis/models/generated/cs_event_history.rb +0 -20
- data/lib/usps/imis/models/generated/cs_exchange_rate.rb +0 -14
- data/lib/usps/imis/models/generated/cs_freight_dollar.rb +0 -14
- data/lib/usps/imis/models/generated/cs_function.rb +0 -57
- data/lib/usps/imis/models/generated/cs_function_fees.rb +0 -20
- data/lib/usps/imis/models/generated/cs_gen_tables_union.rb +0 -15
- data/lib/usps/imis/models/generated/cs_general_lookup_tables.rb +0 -17
- data/lib/usps/imis/models/generated/cs_inventory.rb +0 -37
- data/lib/usps/imis/models/generated/cs_invoice.rb +0 -51
- data/lib/usps/imis/models/generated/cs_iso_currency_codes.rb +0 -14
- data/lib/usps/imis/models/generated/cs_member_type.rb +0 -18
- data/lib/usps/imis/models/generated/cs_name_fin.rb +0 -27
- data/lib/usps/imis/models/generated/cs_name_fr.rb +0 -27
- data/lib/usps/imis/models/generated/cs_name_log.rb +0 -17
- data/lib/usps/imis/models/generated/cs_name_note.rb +0 -18
- data/lib/usps/imis/models/generated/cs_name_picture.rb +0 -19
- data/lib/usps/imis/models/generated/cs_name_user.rb +0 -18
- data/lib/usps/imis/models/generated/cs_order_history.rb +0 -22
- data/lib/usps/imis/models/generated/cs_order_lines.rb +0 -54
- data/lib/usps/imis/models/generated/cs_order_type.rb +0 -15
- data/lib/usps/imis/models/generated/cs_orders.rb +0 -85
- data/lib/usps/imis/models/generated/cs_org_control.rb +0 -47
- data/lib/usps/imis/models/generated/cs_product.rb +0 -49
- data/lib/usps/imis/models/generated/cs_product_category.rb +0 -18
- data/lib/usps/imis/models/generated/cs_product_fundraising.rb +0 -22
- data/lib/usps/imis/models/generated/cs_product_location.rb +0 -14
- data/lib/usps/imis/models/generated/cs_product_type.rb +0 -14
- data/lib/usps/imis/models/generated/cs_reg_functions.rb +0 -36
- data/lib/usps/imis/models/generated/cs_registrant_classes.rb +0 -15
- data/lib/usps/imis/models/generated/cs_registration.rb +0 -39
- data/lib/usps/imis/models/generated/cs_relationship.rb +0 -25
- data/lib/usps/imis/models/generated/cs_relationship_types.rb +0 -17
- data/lib/usps/imis/models/generated/cs_salutations.rb +0 -14
- data/lib/usps/imis/models/generated/cs_staff_user.rb +0 -34
- data/lib/usps/imis/models/generated/cs_state_province_codes.rb +0 -15
- data/lib/usps/imis/models/generated/cs_subscriptions.rb +0 -58
- data/lib/usps/imis/models/generated/cs_subscriptions_chapters.rb +0 -15
- data/lib/usps/imis/models/generated/cs_system_params.rb +0 -15
- data/lib/usps/imis/models/generated/cs_terms.rb +0 -17
- data/lib/usps/imis/models/generated/cs_trans_notify.rb +0 -16
- data/lib/usps/imis/models/generated/cs_web_security_group.rb +0 -14
- data/lib/usps/imis/models/generated/cs_web_user.rb +0 -18
- data/lib/usps/imis/models/generated/culture_ref.rb +0 -14
- data/lib/usps/imis/models/generated/customer_experience_status.rb +0 -14
- data/lib/usps/imis/models/generated/data_type.rb +0 -16
- data/lib/usps/imis/models/generated/data_vault_attempt_settlement_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/data_vault_attempt_status_ref.rb +0 -14
- data/lib/usps/imis/models/generated/data_vault_attempt_summary.rb +0 -39
- data/lib/usps/imis/models/generated/data_vault_batch_summary.rb +0 -21
- data/lib/usps/imis/models/generated/data_vault_log_attempt.rb +0 -25
- data/lib/usps/imis/models/generated/data_vault_status_ref.rb +0 -14
- data/lib/usps/imis/models/generated/data_vault_status_summary.rb +0 -15
- data/lib/usps/imis/models/generated/data_vault_status_summary_detail.rb +0 -19
- data/lib/usps/imis/models/generated/date_dimension.rb +0 -24
- data/lib/usps/imis/models/generated/day_of_the_week_ref.rb +0 -14
- data/lib/usps/imis/models/generated/discountable_item.rb +0 -20
- data/lib/usps/imis/models/generated/discountable_item_class.rb +0 -15
- data/lib/usps/imis/models/generated/distinct_user_defined_multi_select_properties.rb +0 -17
- data/lib/usps/imis/models/generated/districts_and_primary_members.rb +0 -15
- data/lib/usps/imis/models/generated/document_path.rb +0 -14
- data/lib/usps/imis/models/generated/document_storage.rb +0 -23
- data/lib/usps/imis/models/generated/document_system_size_info.rb +0 -36
- data/lib/usps/imis/models/generated/document_system_size_info_by_type.rb +0 -37
- data/lib/usps/imis/models/generated/document_system_status_count_info.rb +0 -14
- data/lib/usps/imis/models/generated/document_system_status_size_info.rb +0 -15
- data/lib/usps/imis/models/generated/document_system_type_count_info.rb +0 -14
- data/lib/usps/imis/models/generated/document_system_type_size_info.rb +0 -15
- data/lib/usps/imis/models/generated/document_type.rb +0 -34
- data/lib/usps/imis/models/generated/document_type_status_path_info.rb +0 -28
- data/lib/usps/imis/models/generated/donation.rb +0 -31
- data/lib/usps/imis/models/generated/donation_performance.rb +0 -19
- data/lib/usps/imis/models/generated/donation_summary.rb +0 -36
- data/lib/usps/imis/models/generated/dynamic_group.rb +0 -18
- data/lib/usps/imis/models/generated/educ_abc.rb +0 -21
- data/lib/usps/imis/models/generated/educ_boc.rb +0 -21
- data/lib/usps/imis/models/generated/educ_crs.rb +0 -21
- data/lib/usps/imis/models/generated/educ_id.rb +0 -21
- data/lib/usps/imis/models/generated/educ_ot.rb +0 -21
- data/lib/usps/imis/models/generated/educ_sem.rb +0 -21
- data/lib/usps/imis/models/generated/education_in_progress.rb +0 -16
- data/lib/usps/imis/models/generated/education_level_ref.rb +0 -15
- data/lib/usps/imis/models/generated/effective_contact_communication_preferences_data.rb +0 -23
- data/lib/usps/imis/models/generated/effective_fundraising_preferences_data.rb +0 -18
- data/lib/usps/imis/models/generated/engagement_category.rb +0 -23
- data/lib/usps/imis/models/generated/engagement_measure.rb +0 -24
- data/lib/usps/imis/models/generated/engagement_score_current_data.rb +0 -21
- data/lib/usps/imis/models/generated/engagement_score_formula.rb +0 -19
- data/lib/usps/imis/models/generated/engagement_score_monthly_data.rb +0 -22
- data/lib/usps/imis/models/generated/engagement_score_result.rb +0 -21
- data/lib/usps/imis/models/generated/engagement_score_yearly_data.rb +0 -21
- data/lib/usps/imis/models/generated/event_category_list.rb +0 -16
- data/lib/usps/imis/models/generated/event_function_resource_data.rb +0 -22
- data/lib/usps/imis/models/generated/event_question.rb +0 -24
- data/lib/usps/imis/models/generated/event_question_response.rb +0 -25
- data/lib/usps/imis/models/generated/event_registrants_report.rb +0 -45
- data/lib/usps/imis/models/generated/execution_mode_ref.rb +0 -15
- data/lib/usps/imis/models/generated/experience_definition_status.rb +0 -14
- data/lib/usps/imis/models/generated/expired_member_update_detail_log.rb +0 -19
- data/lib/usps/imis/models/generated/family_add_contact.rb +0 -91
- data/lib/usps/imis/models/generated/family_member_count.rb +0 -37
- data/lib/usps/imis/models/generated/file_type_ref.rb +0 -16
- data/lib/usps/imis/models/generated/first_notify_contact_per_gift.rb +0 -14
- data/lib/usps/imis/models/generated/first_payment_date_type_ref.rb +0 -15
- data/lib/usps/imis/models/generated/form_definition_field_data.rb +0 -19
- data/lib/usps/imis/models/generated/form_field_response_data.rb +0 -22
- data/lib/usps/imis/models/generated/fundraising_preference_ref.rb +0 -15
- data/lib/usps/imis/models/generated/fundraising_profile_donor_data.rb +0 -18
- data/lib/usps/imis/models/generated/gateway_result_ref.rb +0 -14
- data/lib/usps/imis/models/generated/gateway_transaction_data.rb +0 -35
- data/lib/usps/imis/models/generated/gateway_transaction_ref.rb +0 -15
- data/lib/usps/imis/models/generated/gateway_type_ref.rb +0 -17
- data/lib/usps/imis/models/generated/gift.rb +0 -41
- data/lib/usps/imis/models/generated/gift_adjustment_log_summary.rb +0 -25
- data/lib/usps/imis/models/generated/gift_aid_claim_status_ref.rb +0 -14
- data/lib/usps/imis/models/generated/gift_array.rb +0 -16
- data/lib/usps/imis/models/generated/gift_detail.rb +0 -29
- data/lib/usps/imis/models/generated/gift_history.rb +0 -45
- data/lib/usps/imis/models/generated/gift_history_summary.rb +0 -33
- data/lib/usps/imis/models/generated/gift_history_summary_basic.rb +0 -33
- data/lib/usps/imis/models/generated/gift_summary.rb +0 -16
- data/lib/usps/imis/models/generated/gift_totals_by_date.rb +0 -15
- data/lib/usps/imis/models/generated/gift_transaction.rb +0 -43
- data/lib/usps/imis/models/generated/gifts_received.rb +0 -32
- data/lib/usps/imis/models/generated/gifts_received_for_receipting.rb +0 -44
- data/lib/usps/imis/models/generated/gifts_received_summary.rb +0 -33
- data/lib/usps/imis/models/generated/gifts_with_void_and_replaced_receipts.rb +0 -43
- data/lib/usps/imis/models/generated/gl_batch_transaction_data.rb +0 -30
- data/lib/usps/imis/models/generated/gl_daily_transaction_data.rb +0 -30
- data/lib/usps/imis/models/generated/gl_detail_due_to_due_from_transaction_data.rb +0 -17
- data/lib/usps/imis/models/generated/gl_detail_transaction_data.rb +0 -36
- data/lib/usps/imis/models/generated/gl_detail_transaction_data_full.rb +0 -36
- data/lib/usps/imis/models/generated/gl_due_to_due_from_transaction_data.rb +0 -18
- data/lib/usps/imis/models/generated/gl_entry_type_ref.rb +0 -14
- data/lib/usps/imis/models/generated/gl_export_format_type_ref.rb +0 -14
- data/lib/usps/imis/models/generated/gl_export_log_detail.rb +0 -15
- data/lib/usps/imis/models/generated/gl_export_log_summary.rb +0 -26
- data/lib/usps/imis/models/generated/gl_export_multiple.rb +0 -15
- data/lib/usps/imis/models/generated/gl_export_summary_level_ref.rb +0 -15
- data/lib/usps/imis/models/generated/gl_monthly_due_to_due_from_transaction_data.rb +0 -18
- data/lib/usps/imis/models/generated/gl_monthly_transaction_data.rb +0 -29
- data/lib/usps/imis/models/generated/gl_source_item_type_ref.rb +0 -14
- data/lib/usps/imis/models/generated/gl_transaction_data.rb +0 -41
- data/lib/usps/imis/models/generated/grade.rb +0 -14
- data/lib/usps/imis/models/generated/group_info.rb +0 -28
- data/lib/usps/imis/models/generated/group_member_administrator_type_ref.rb +0 -15
- data/lib/usps/imis/models/generated/group_member_detail.rb +0 -29
- data/lib/usps/imis/models/generated/group_member_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/group_perspective.rb +0 -16
- data/lib/usps/imis/models/generated/group_price_sheet.rb +0 -17
- data/lib/usps/imis/models/generated/group_role_ref.rb +0 -17
- data/lib/usps/imis/models/generated/group_status_ref.rb +0 -16
- data/lib/usps/imis/models/generated/group_type_member_status.rb +0 -17
- data/lib/usps/imis/models/generated/group_type_ref.rb +0 -33
- data/lib/usps/imis/models/generated/group_type_role.rb +0 -22
- data/lib/usps/imis/models/generated/handling_price_ref.rb +0 -15
- data/lib/usps/imis/models/generated/hierarchy.rb +0 -21
- data/lib/usps/imis/models/generated/hierarchy_root.rb +0 -22
- data/lib/usps/imis/models/generated/i_series_data.rb +0 -15
- data/lib/usps/imis/models/generated/individual_demog.rb +0 -34
- data/lib/usps/imis/models/generated/institute_type_code_ref.rb +0 -16
- data/lib/usps/imis/models/generated/interaction_log.rb +0 -35
- data/lib/usps/imis/models/generated/interaction_log_event.rb +0 -24
- data/lib/usps/imis/models/generated/interaction_log_event_summary.rb +0 -30
- data/lib/usps/imis/models/generated/interval_type_ref.rb +0 -15
- data/lib/usps/imis/models/generated/invoice_line_data.rb +0 -39
- data/lib/usps/imis/models/generated/invoice_lines.rb +0 -42
- data/lib/usps/imis/models/generated/invoice_number.rb +0 -16
- data/lib/usps/imis/models/generated/invoice_payment_summary.rb +0 -14
- data/lib/usps/imis/models/generated/invoice_purpose.rb +0 -15
- data/lib/usps/imis/models/generated/invoice_source_system_ref.rb +0 -13
- data/lib/usps/imis/models/generated/invoice_type_ref.rb +0 -14
- data/lib/usps/imis/models/generated/journal_entry_type_ref.rb +0 -14
- data/lib/usps/imis/models/generated/license_ref.rb +0 -15
- data/lib/usps/imis/models/generated/line_pricing_ref.rb +0 -15
- data/lib/usps/imis/models/generated/list_entity.rb +0 -14
- data/lib/usps/imis/models/generated/locale_ref.rb +0 -14
- data/lib/usps/imis/models/generated/location_status.rb +0 -14
- data/lib/usps/imis/models/generated/mail_code_ref.rb +0 -16
- data/lib/usps/imis/models/generated/matching_gift_plan_type_ref.rb +0 -15
- data/lib/usps/imis/models/generated/matching_mode_ref.rb +0 -15
- data/lib/usps/imis/models/generated/matching_period_ref.rb +0 -15
- data/lib/usps/imis/models/generated/memorial_tribute_type_ref.rb +0 -14
- data/lib/usps/imis/models/generated/method_set_type_ref.rb +0 -14
- data/lib/usps/imis/models/generated/month_ref.rb +0 -18
- data/lib/usps/imis/models/generated/name_prefixes.rb +0 -15
- data/lib/usps/imis/models/generated/name_suffixes.rb +0 -13
- data/lib/usps/imis/models/generated/navigation_pane.rb +0 -18
- data/lib/usps/imis/models/generated/net_contact.rb +0 -99
- data/lib/usps/imis/models/generated/net_contact_basic.rb +0 -88
- data/lib/usps/imis/models/generated/net_contact_data.rb +0 -88
- data/lib/usps/imis/models/generated/note_purpose_ref.rb +0 -14
- data/lib/usps/imis/models/generated/offering_status.rb +0 -14
- data/lib/usps/imis/models/generated/opportunity_class_ref.rb +0 -15
- data/lib/usps/imis/models/generated/opportunity_default_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/opportunity_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/opportunity_task_user.rb +0 -20
- data/lib/usps/imis/models/generated/opportunity_type.rb +0 -29
- data/lib/usps/imis/models/generated/order_category.rb +0 -14
- data/lib/usps/imis/models/generated/order_fulfillment_status_ref.rb +0 -14
- data/lib/usps/imis/models/generated/order_invoice.rb +0 -14
- data/lib/usps/imis/models/generated/order_state_ref.rb +0 -14
- data/lib/usps/imis/models/generated/order_type_detail.rb +0 -17
- data/lib/usps/imis/models/generated/org_demog.rb +0 -28
- data/lib/usps/imis/models/generated/organization_demo.rb +0 -18
- data/lib/usps/imis/models/generated/organization_hierarchy.rb +0 -19
- data/lib/usps/imis/models/generated/package.rb +0 -25
- data/lib/usps/imis/models/generated/package_item.rb +0 -19
- data/lib/usps/imis/models/generated/package_status_ref.rb +0 -14
- data/lib/usps/imis/models/generated/payment_application.rb +0 -31
- data/lib/usps/imis/models/generated/payment_application_detail.rb +0 -35
- data/lib/usps/imis/models/generated/payment_application_restriction_ref.rb +0 -14
- data/lib/usps/imis/models/generated/payment_application_summary.rb +0 -18
- data/lib/usps/imis/models/generated/payment_application_type.rb +0 -14
- data/lib/usps/imis/models/generated/payment_category_ref.rb +0 -14
- data/lib/usps/imis/models/generated/payment_detail_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/payment_method_data.rb +0 -20
- data/lib/usps/imis/models/generated/payment_reconciliation.rb +0 -26
- data/lib/usps/imis/models/generated/payment_status_ref.rb +0 -14
- data/lib/usps/imis/models/generated/percentile_ranking.rb +0 -20
- data/lib/usps/imis/models/generated/picture_purpose_ref.rb +0 -14
- data/lib/usps/imis/models/generated/pin_update.rb +0 -13
- data/lib/usps/imis/models/generated/pipeline.rb +0 -15
- data/lib/usps/imis/models/generated/pipeline_stage.rb +0 -17
- data/lib/usps/imis/models/generated/postal_code_ref.rb +0 -26
- data/lib/usps/imis/models/generated/prefix_ref.rb +0 -17
- data/lib/usps/imis/models/generated/price_basis_ref.rb +0 -15
- data/lib/usps/imis/models/generated/pricing_type_ref.rb +0 -15
- data/lib/usps/imis/models/generated/primary_fam_members.rb +0 -14
- data/lib/usps/imis/models/generated/process_type_default_owner_all_users.rb +0 -15
- data/lib/usps/imis/models/generated/product_price_sheet.rb +0 -20
- data/lib/usps/imis/models/generated/product_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/product_trans.rb +0 -31
- data/lib/usps/imis/models/generated/product_trans_detail.rb +0 -17
- data/lib/usps/imis/models/generated/profile_documents.rb +0 -15
- data/lib/usps/imis/models/generated/profile_page.rb +0 -36
- data/lib/usps/imis/models/generated/program_group_status.rb +0 -14
- data/lib/usps/imis/models/generated/program_status.rb +0 -14
- data/lib/usps/imis/models/generated/promotion_rule_ref.rb +0 -15
- data/lib/usps/imis/models/generated/property_definition.rb +0 -33
- data/lib/usps/imis/models/generated/prospect.rb +0 -38
- data/lib/usps/imis/models/generated/publish_priority.rb +0 -14
- data/lib/usps/imis/models/generated/publish_request.rb +0 -18
- data/lib/usps/imis/models/generated/publish_request_detail.rb +0 -22
- data/lib/usps/imis/models/generated/publish_request_status.rb +0 -15
- data/lib/usps/imis/models/generated/publish_server.rb +0 -29
- data/lib/usps/imis/models/generated/quality_ref.rb +0 -15
- data/lib/usps/imis/models/generated/rank.rb +0 -21
- data/lib/usps/imis/models/generated/receipt_report.rb +0 -24
- data/lib/usps/imis/models/generated/receipt_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/recurring_donation_expected_payment_set.rb +0 -19
- data/lib/usps/imis/models/generated/recurring_donation_expected_payment_set_list.rb +0 -20
- data/lib/usps/imis/models/generated/recurring_donation_expected_payment_set_status.rb +0 -15
- data/lib/usps/imis/models/generated/recurring_donation_expected_payment_status.rb +0 -15
- data/lib/usps/imis/models/generated/recurring_donation_frequency_ref.rb +0 -15
- data/lib/usps/imis/models/generated/reference_date.rb +0 -13
- data/lib/usps/imis/models/generated/registered_component.rb +0 -27
- data/lib/usps/imis/models/generated/registration_status.rb +0 -14
- data/lib/usps/imis/models/generated/relationship.rb +0 -18
- data/lib/usps/imis/models/generated/relationship_category.rb +0 -17
- data/lib/usps/imis/models/generated/relationship_type_category.rb +0 -17
- data/lib/usps/imis/models/generated/relationship_type_ref.rb +0 -16
- data/lib/usps/imis/models/generated/relationship_update.rb +0 -16
- data/lib/usps/imis/models/generated/relationship_update_contact_panel.rb +0 -16
- data/lib/usps/imis/models/generated/remove_district_org_committee_terms.rb +0 -28
- data/lib/usps/imis/models/generated/remove_squadron_org_committee_terms.rb +0 -28
- data/lib/usps/imis/models/generated/reporting_group_user.rb +0 -14
- data/lib/usps/imis/models/generated/response_media_ref.rb +0 -14
- data/lib/usps/imis/models/generated/response_type_ref.rb +0 -15
- data/lib/usps/imis/models/generated/restock_price_ref.rb +0 -15
- data/lib/usps/imis/models/generated/sales_location_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/salutation_ref.rb +0 -22
- data/lib/usps/imis/models/generated/sbuddy_answers.rb +0 -23
- data/lib/usps/imis/models/generated/sbuddy_definition.rb +0 -28
- data/lib/usps/imis/models/generated/schedule_frequency_ref.rb +0 -14
- data/lib/usps/imis/models/generated/segmentation_job_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/sequence_counter.rb +0 -16
- data/lib/usps/imis/models/generated/set_district_org_committee_terms.rb +0 -28
- data/lib/usps/imis/models/generated/set_squadron_org_committee_terms.rb +0 -28
- data/lib/usps/imis/models/generated/ship_price_ref.rb +0 -15
- data/lib/usps/imis/models/generated/soa_group.rb +0 -21
- data/lib/usps/imis/models/generated/soa_group_member.rb +0 -19
- data/lib/usps/imis/models/generated/soa_group_member_detail.rb +0 -28
- data/lib/usps/imis/models/generated/social_network_ref.rb +0 -15
- data/lib/usps/imis/models/generated/solicitation.rb +0 -40
- data/lib/usps/imis/models/generated/solicitation_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/source_code.rb +0 -43
- data/lib/usps/imis/models/generated/source_code_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/source_code_type_ref.rb +0 -15
- data/lib/usps/imis/models/generated/squad_form_add_fam.rb +0 -23
- data/lib/usps/imis/models/generated/squad_form_add_individual.rb +0 -31
- data/lib/usps/imis/models/generated/squad_leader_add_individual_contact.rb +0 -28
- data/lib/usps/imis/models/generated/squad_note.rb +0 -13
- data/lib/usps/imis/models/generated/squad_to_district.rb +0 -18
- data/lib/usps/imis/models/generated/squadron_chap_com.rb +0 -16
- data/lib/usps/imis/models/generated/squadron_district_lookup.rb +0 -18
- data/lib/usps/imis/models/generated/squadrons_and_primary_members.rb +0 -15
- data/lib/usps/imis/models/generated/standard_page.rb +0 -15
- data/lib/usps/imis/models/generated/state_province_ref.rb +0 -21
- data/lib/usps/imis/models/generated/suffix_ref.rb +0 -16
- data/lib/usps/imis/models/generated/supplement.rb +0 -27
- data/lib/usps/imis/models/generated/supplement_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/supplement_type_ref.rb +0 -15
- data/lib/usps/imis/models/generated/system_config_xml.rb +0 -14
- data/lib/usps/imis/models/generated/system_param_int.rb +0 -23
- data/lib/usps/imis/models/generated/tag_hierarchy.rb +0 -32
- data/lib/usps/imis/models/generated/tag_relationship_type.rb +0 -16
- data/lib/usps/imis/models/generated/task_item.rb +0 -32
- data/lib/usps/imis/models/generated/task_item_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/task_latest_log.rb +0 -15
- data/lib/usps/imis/models/generated/task_notify_creator_ref.rb +0 -15
- data/lib/usps/imis/models/generated/task_priority.rb +0 -15
- data/lib/usps/imis/models/generated/task_status.rb +0 -16
- data/lib/usps/imis/models/generated/task_type.rb +0 -15
- data/lib/usps/imis/models/generated/tax_authority_level_ref.rb +0 -15
- data/lib/usps/imis/models/generated/time_zone_ref.rb +0 -20
- data/lib/usps/imis/models/generated/top_level_parent_organization.rb +0 -20
- data/lib/usps/imis/models/generated/transaction_detail.rb +0 -56
- data/lib/usps/imis/models/generated/transaction_summary_large_batch.rb +0 -44
- data/lib/usps/imis/models/generated/uniform_registry.rb +0 -14
- data/lib/usps/imis/models/generated/uniform_tag.rb +0 -17
- data/lib/usps/imis/models/generated/upgrade_log_detail.rb +0 -19
- data/lib/usps/imis/models/generated/url_mapping_type_ref.rb +0 -15
- data/lib/usps/imis/models/generated/user_data.rb +0 -33
- data/lib/usps/imis/models/generated/user_role.rb +0 -14
- data/lib/usps/imis/models/generated/user_token.rb +0 -14
- data/lib/usps/imis/models/generated/vertical_alignment_ref.rb +0 -15
- data/lib/usps/imis/models/generated/vessels.rb +0 -18
- data/lib/usps/imis/models/generated/volunteer_information.rb +0 -22
- data/lib/usps/imis/models/generated/warehouse_status_ref.rb +0 -14
- data/lib/usps/imis/models/generated/warehouse_type_ref.rb +0 -14
- data/lib/usps/imis/models/generated/web_user_control_ref.rb +0 -15
- data/lib/usps/imis/models/generated/workflow_queue_item.rb +0 -25
- data/lib/usps/imis/models/generated/workflow_queue_item_with_status.rb +0 -25
- data/lib/usps/imis/models/generated/workflow_queue_status_ref.rb +0 -15
- data/lib/usps/imis/models/generated/workflow_status_ref.rb +0 -15
- data/lib/usps/imis/models/party/address.rb +0 -32
- data/lib/usps/imis/models/party/alternate_id.rb +0 -16
- data/lib/usps/imis/models/party/email.rb +0 -17
- data/lib/usps/imis/models/party/phone.rb +0 -17
- data/lib/usps/imis/models/party/salutation.rb +0 -18
- data/lib/usps/imis/models/party.rb +0 -131
- data/lib/usps/imis/models/types/upcase_string.rb +0 -18
- data/lib/usps/imis/models/vessel_safety_checks.rb +0 -20
- data/lib/usps/imis/models.rb +0 -92
- data/lib/usps/imis/panels/base_panel.rb +0 -136
- data/lib/usps/imis/panels/education.rb +0 -29
- data/lib/usps/imis/panels/vsc.rb +0 -28
- data/lib/usps/imis/panels.rb +0 -25
- data/lib/usps/imis/party_data.rb +0 -88
- data/lib/usps/imis/properties.rb +0 -74
- data/lib/usps/imis/query.rb +0 -163
- data/lib/usps/imis/requests.rb +0 -67
- data/spec/support/usps/simple_cov_uncovered_lines_formatter.rb +0 -53
- data/spec/support/usps/vcr/config.rb +0 -47
- data/spec/support/usps/vcr/filters.rb +0 -89
- data/spec/support/usps/vcr.rb +0 -8
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Usps
|
|
4
|
+
module Imis
|
|
5
|
+
module Error
|
|
6
|
+
class Response < Api
|
|
7
|
+
attr_reader :response
|
|
8
|
+
attr_accessor :metadata
|
|
9
|
+
|
|
10
|
+
def self.from(response)
|
|
11
|
+
new(nil, response)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def initialize(_message, response, metadata = {})
|
|
15
|
+
@response = response
|
|
16
|
+
super(message, metadata)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def bugsnag_meta_data
|
|
20
|
+
base_metadata.tap { |m| m[:api].merge!(metadata) }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def message
|
|
24
|
+
[
|
|
25
|
+
"#{self.class.name}: [#{status.to_s.upcase}] The iMIS API returned an error.",
|
|
26
|
+
(metadata.inspect if metadata != {}),
|
|
27
|
+
body
|
|
28
|
+
].compact.join("\n")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def base_metadata
|
|
34
|
+
{ api: { status:, body: } }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def status
|
|
38
|
+
@status ||=
|
|
39
|
+
case response.code
|
|
40
|
+
when '400'
|
|
41
|
+
:bad_request
|
|
42
|
+
when '401'
|
|
43
|
+
:unauthorized # RequestVerificationToken invalid
|
|
44
|
+
when '404'
|
|
45
|
+
:not_found
|
|
46
|
+
when '422'
|
|
47
|
+
:unprocessable_entity # validation error
|
|
48
|
+
when /^50\d$/
|
|
49
|
+
:internal_server_error # error within iMIS
|
|
50
|
+
else
|
|
51
|
+
response.code
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def response_body
|
|
56
|
+
@response_body ||= JSON.parse(response.body)
|
|
57
|
+
rescue StandardError
|
|
58
|
+
@response_body ||= response.body
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def body
|
|
62
|
+
return response_body unless response_body.is_a?(Hash)
|
|
63
|
+
|
|
64
|
+
case response_body['error']
|
|
65
|
+
when 'invalid_grant'
|
|
66
|
+
response_body['error_description']
|
|
67
|
+
else
|
|
68
|
+
# Unknown error type: just use the raw response
|
|
69
|
+
response.body
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
data/lib/usps/imis/mapper.rb
CHANGED
|
@@ -2,15 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
module Usps
|
|
4
4
|
module Imis
|
|
5
|
-
# Specific known fields mapping to facilitate updating across multiple
|
|
6
|
-
# business objects.
|
|
7
|
-
#
|
|
8
5
|
class Mapper
|
|
9
|
-
# List of known mapped fields
|
|
10
|
-
#
|
|
11
6
|
FIELD_MAPPING = {
|
|
12
7
|
grade: %w[ABC_ASC_Individual_Demog Grade],
|
|
13
|
-
boc: %w[ABC_ASC_Individual_Demog BOC_Grade],
|
|
14
8
|
edpro: %w[ABC_ASC_Individual_Demog Educ_Proficiency],
|
|
15
9
|
edach: %w[ABC_ASC_Individual_Demog Educ_Achievement],
|
|
16
10
|
vessel_examiner: %w[ABC_ASC_Individual_Demog Vol_Vessel_Examiner],
|
|
@@ -18,85 +12,19 @@ module Usps
|
|
|
18
12
|
mm_updated: %w[ABC_ASC_Individual_Demog MMS_Updated]
|
|
19
13
|
}.freeze
|
|
20
14
|
|
|
21
|
-
# The parent +Api+ object
|
|
22
|
-
#
|
|
23
15
|
attr_reader :api
|
|
24
16
|
|
|
25
|
-
# Tagged logger
|
|
26
|
-
#
|
|
27
|
-
attr_reader :logger
|
|
28
|
-
|
|
29
|
-
# A new instance of +Mapper+
|
|
30
|
-
#
|
|
31
17
|
def initialize(api = nil, imis_id: nil)
|
|
32
18
|
@api = api || Api.new
|
|
33
19
|
@api.imis_id = imis_id if imis_id
|
|
34
|
-
@logger = Imis.logger('Mapper')
|
|
35
20
|
end
|
|
36
21
|
|
|
37
|
-
# Get a member's data for a specific field by arbitrary field name
|
|
38
|
-
#
|
|
39
|
-
# Does not require knowing which business object / iMIS-specific field name to use
|
|
40
|
-
#
|
|
41
|
-
# Only available for fields defined in +FIELD_MAPPING+
|
|
42
|
-
#
|
|
43
|
-
# @param field_key [String, Symbol] Internal name of the field
|
|
44
|
-
#
|
|
45
|
-
# @return Value of the field
|
|
46
|
-
#
|
|
47
|
-
def get_field(field_key)
|
|
48
|
-
missing_mapping!(field_key) unless FIELD_MAPPING.key?(field_key.to_sym)
|
|
49
|
-
|
|
50
|
-
business_object_name, field = FIELD_MAPPING[field_key.to_sym]
|
|
51
|
-
api.on(business_object_name)[field]
|
|
52
|
-
end
|
|
53
|
-
alias fetch get_field
|
|
54
|
-
alias [] get_field
|
|
55
|
-
|
|
56
|
-
# Get specific fields by arbitrary field names
|
|
57
|
-
#
|
|
58
|
-
# @param names [Array<String>] Internal name of the fields
|
|
59
|
-
#
|
|
60
|
-
# @return [Array] Values of the field
|
|
61
|
-
#
|
|
62
|
-
def get_fields(*fields)
|
|
63
|
-
business_objects = {}
|
|
64
|
-
|
|
65
|
-
fields.map do |field_key|
|
|
66
|
-
business_object_name, field = FIELD_MAPPING[field_key.to_sym]
|
|
67
|
-
|
|
68
|
-
business_objects[business_object_name] ||= []
|
|
69
|
-
business_objects[business_object_name] << field
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
business_objects.flat_map do |business_object_name, object_fields|
|
|
73
|
-
api.on(business_object_name).get_fields(*object_fields)
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
alias fetch_all get_fields
|
|
77
|
-
|
|
78
|
-
# Update a member's data for a specific field by arbitrary field name
|
|
79
|
-
#
|
|
80
|
-
# Does not require knowing which business object / iMIS-specific field name to use
|
|
81
|
-
#
|
|
82
|
-
# Only available for fields defined in +FIELD_MAPPING+
|
|
83
|
-
#
|
|
84
|
-
# @param field_key [Symbol] Internal name of the field
|
|
85
|
-
#
|
|
86
|
-
# @return Value of the field
|
|
87
|
-
#
|
|
88
|
-
def put_field(field_key, value) = update(field_key => value)
|
|
89
|
-
alias []= put_field
|
|
90
|
-
|
|
91
22
|
# Update a member's data on multiple affected business objects by arbitrary field names
|
|
92
|
-
#
|
|
93
23
|
# Does not require knowing which business object / iMIS-specific field name to use
|
|
94
24
|
#
|
|
95
|
-
# Only available for fields
|
|
96
|
-
#
|
|
97
|
-
# @param data [Hash] Conforms to pattern +{ field_key => value }+
|
|
25
|
+
# Only available for previously-mapped fields
|
|
98
26
|
#
|
|
99
|
-
#
|
|
27
|
+
# `data` is a hash of shape { field_key => value }
|
|
100
28
|
#
|
|
101
29
|
def update(data)
|
|
102
30
|
updates = data.each_with_object({}) do |(field_key, value), hash|
|
|
@@ -107,35 +35,37 @@ module Usps
|
|
|
107
35
|
end
|
|
108
36
|
|
|
109
37
|
updates.map do |business_object_name, field_updates|
|
|
110
|
-
api.
|
|
38
|
+
api.put_fields(business_object_name, field_updates)
|
|
111
39
|
end
|
|
112
40
|
end
|
|
113
41
|
|
|
114
|
-
# Ruby 3.5 instance variable filter
|
|
115
|
-
#
|
|
116
|
-
def instance_variables_to_inspect = instance_variables - %i[@api @logger]
|
|
117
|
-
|
|
118
42
|
private
|
|
119
43
|
|
|
120
|
-
def map_update(
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
44
|
+
def map_update(field_name)
|
|
45
|
+
if FIELD_MAPPING.key?(field_name.to_sym)
|
|
46
|
+
business_object_name, field = FIELD_MAPPING[field_name.to_sym]
|
|
47
|
+
yield(business_object_name, field)
|
|
48
|
+
else
|
|
49
|
+
missing_mapping(field_name)
|
|
50
|
+
end
|
|
125
51
|
end
|
|
126
52
|
|
|
127
|
-
def missing_mapping
|
|
53
|
+
def missing_mapping(field_name)
|
|
128
54
|
unless ENV['TESTING']
|
|
129
55
|
# :nocov:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
56
|
+
warn(
|
|
57
|
+
"Mapper does not know how to handle field \"#{field_name}\".\n\n" \
|
|
58
|
+
'You can use api.put_fields(business_object_name, { field_name => value }) ' \
|
|
59
|
+
"if you know the business object and iMIS-specific field name.\n\n"
|
|
60
|
+
)
|
|
135
61
|
# :nocov:
|
|
136
62
|
end
|
|
137
63
|
|
|
138
|
-
raise
|
|
64
|
+
raise(
|
|
65
|
+
Error::Mapper,
|
|
66
|
+
"Unrecognized field: \"#{field_name}\". " \
|
|
67
|
+
'Please report what data you are attempting to work with to ITCom leadership.'
|
|
68
|
+
)
|
|
139
69
|
end
|
|
140
70
|
end
|
|
141
71
|
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Usps
|
|
4
|
+
module Imis
|
|
5
|
+
module Panel
|
|
6
|
+
class BasePanel
|
|
7
|
+
attr_reader :api
|
|
8
|
+
|
|
9
|
+
def initialize(api = nil, imis_id: nil)
|
|
10
|
+
@api = api || Api.new
|
|
11
|
+
@api.imis_id = imis_id if imis_id
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def get(ordinal)
|
|
15
|
+
api.get(business_object, url_id: "~#{api.imis_id}|#{ordinal}")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def create(data)
|
|
19
|
+
api.post(business_object, payload(data), url_id: '')
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def update(data)
|
|
23
|
+
api.put(business_object, payload(data), url_id: "~#{api.imis_id}|#{data[:ordinal]}")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def destroy(ordinal)
|
|
27
|
+
api.delete(business_object, url_id: "~#{api.imis_id}|#{ordinal}")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
def business_object
|
|
33
|
+
raise Error::Api, "#{self.class.name} must implement #business_object"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def payload(_data)
|
|
37
|
+
raise Error::Api, "#{self.class.name} must implement #payload(data)"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Usps
|
|
4
|
+
module Imis
|
|
5
|
+
module Panel
|
|
6
|
+
class Education < BasePanel
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
def business_object
|
|
10
|
+
'ABC_ASC_Educ'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# rubocop:disable Metrics/MethodLength
|
|
14
|
+
def payload(data)
|
|
15
|
+
identity_type =
|
|
16
|
+
'System.Collections.ObjectModel.Collection`1[[System.String, mscorlib]], mscorlib'
|
|
17
|
+
|
|
18
|
+
{
|
|
19
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericEntityData, Asi.Contracts',
|
|
20
|
+
'EntityTypeName' => 'ABC_ASC_EDUC',
|
|
21
|
+
'PrimaryParentEntityTypeName' => 'Party',
|
|
22
|
+
'Identity' => {
|
|
23
|
+
'$type' => 'Asi.Soa.Core.DataContracts.IdentityData, Asi.Contracts',
|
|
24
|
+
'EntityTypeName' => 'ABC_ASC_EDUC',
|
|
25
|
+
'IdentityElements' => {
|
|
26
|
+
'$type' => identity_type,
|
|
27
|
+
'$values' => [api.imis_id, data[:ordinal]&.to_s].compact
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
'PrimaryParentIdentity' => {
|
|
31
|
+
'$type' => 'Asi.Soa.Core.DataContracts.IdentityData, Asi.Contracts',
|
|
32
|
+
'EntityTypeName' => 'Party',
|
|
33
|
+
'IdentityElements' => {
|
|
34
|
+
'$type' => identity_type,
|
|
35
|
+
'$values' => [api.imis_id]
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
'Properties' => {
|
|
39
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyDataCollection, Asi.Contracts',
|
|
40
|
+
'$values' => [
|
|
41
|
+
{
|
|
42
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
43
|
+
'Name' => 'ID',
|
|
44
|
+
'Value' => api.imis_id
|
|
45
|
+
},
|
|
46
|
+
(
|
|
47
|
+
if data[:ordinal]
|
|
48
|
+
{
|
|
49
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
50
|
+
'Name' => 'Ordinal',
|
|
51
|
+
'Value' => {
|
|
52
|
+
'$type' => 'System.Int32',
|
|
53
|
+
'$value' => data[:ordinal]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
end
|
|
57
|
+
),
|
|
58
|
+
{
|
|
59
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
60
|
+
'Name' => 'ABC_EDUC_THRU_DATE',
|
|
61
|
+
'Value' => data[:thru_date] || '0001-01-01T00:00:00'
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
65
|
+
'Name' => 'ABC_ECertificate',
|
|
66
|
+
'Value' => data[:certificate]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
70
|
+
'Name' => 'ABC_Educ_Description',
|
|
71
|
+
'Value' => data[:description]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
75
|
+
'Name' => 'ABC_Educ_Effective_Date',
|
|
76
|
+
'Value' => data[:effective_date]
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
80
|
+
'Name' => 'ABC_Educ_Source_System',
|
|
81
|
+
'Value' => data[:source]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
85
|
+
'Name' => 'ABC_Educ_Transaction_Date',
|
|
86
|
+
'Value' => Time.now.strftime('%Y-%m-%dT%H:%I:%S')
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
90
|
+
'Name' => 'ABC_Other_Code',
|
|
91
|
+
'Value' => data[:code]
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
95
|
+
'Name' => 'ABC_Product_Code',
|
|
96
|
+
'Value' => data[:type_code]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
100
|
+
'Name' => 'ABC_TYPE',
|
|
101
|
+
'Value' => data[:abc_type_code] || 'EDUC'
|
|
102
|
+
}
|
|
103
|
+
].compact
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
end
|
|
107
|
+
# rubocop:enable Metrics/MethodLength
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Usps
|
|
4
|
+
module Imis
|
|
5
|
+
module Panel
|
|
6
|
+
class Vsc < BasePanel
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
def business_object
|
|
10
|
+
'ABC_ASC_Vessel_Safety_Checks'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# rubocop:disable Metrics/MethodLength
|
|
14
|
+
def payload(data)
|
|
15
|
+
identity_type =
|
|
16
|
+
'System.Collections.ObjectModel.Collection`1[[System.String, mscorlib]], mscorlib'
|
|
17
|
+
|
|
18
|
+
{
|
|
19
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericEntityData, Asi.Contracts',
|
|
20
|
+
'EntityTypeName' => 'ABC_ASC_Vessel_Safety_Checks',
|
|
21
|
+
'PrimaryParentEntityTypeName' => 'Party',
|
|
22
|
+
'Identity' => {
|
|
23
|
+
'$type' => 'Asi.Soa.Core.DataContracts.IdentityData, Asi.Contracts',
|
|
24
|
+
'EntityTypeName' => 'ABC_ASC_Vessel_Safety_Checks',
|
|
25
|
+
'IdentityElements' => {
|
|
26
|
+
'$type' => identity_type,
|
|
27
|
+
'$values' => [api.imis_id, data[:ordinal]&.to_s].compact
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
'PrimaryParentIdentity' => {
|
|
31
|
+
'$type' => 'Asi.Soa.Core.DataContracts.IdentityData, Asi.Contracts',
|
|
32
|
+
'EntityTypeName' => 'Party',
|
|
33
|
+
'IdentityElements' => {
|
|
34
|
+
'$type' => identity_type,
|
|
35
|
+
'$values' => [api.imis_id]
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
'Properties' => {
|
|
39
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyDataCollection, Asi.Contracts',
|
|
40
|
+
'$values' => [
|
|
41
|
+
{
|
|
42
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
43
|
+
'Name' => 'ID',
|
|
44
|
+
'Value' => api.imis_id
|
|
45
|
+
},
|
|
46
|
+
(
|
|
47
|
+
if data[:ordinal]
|
|
48
|
+
{
|
|
49
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
50
|
+
'Name' => 'Ordinal',
|
|
51
|
+
'Value' => {
|
|
52
|
+
'$type' => 'System.Int32',
|
|
53
|
+
'$value' => data[:ordinal]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
end
|
|
57
|
+
),
|
|
58
|
+
{
|
|
59
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
60
|
+
'Name' => 'Source_System',
|
|
61
|
+
'Value' => 'Manual ITCom Entry'
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
65
|
+
'Name' => 'ABC_ECertificate',
|
|
66
|
+
'Value' => data[:certificate]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
70
|
+
'Name' => 'Activity_Type',
|
|
71
|
+
'Value' => 'VSC'
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
75
|
+
'Name' => 'Description',
|
|
76
|
+
'Value' => 'Vessel Safety Checks'
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
80
|
+
'Name' => 'Effective_Date',
|
|
81
|
+
'Value' => "#{data[:year]}-12-01T00:00:00"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
85
|
+
'Name' => 'Quantity',
|
|
86
|
+
'Value' => {
|
|
87
|
+
'$type' => 'System.Int32',
|
|
88
|
+
'$value' => data[:count]
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
93
|
+
'Name' => 'Thru_Date',
|
|
94
|
+
'Value' => "#{data[:year]}-12-31T00:00:00"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
98
|
+
'Name' => 'Transaction_Date',
|
|
99
|
+
'Value' => Time.now.strftime('%Y-%m-%dT%H:%M:%S')
|
|
100
|
+
}
|
|
101
|
+
].compact
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
end
|
|
105
|
+
# rubocop:enable Metrics/MethodLength
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
data/lib/usps/imis/version.rb
CHANGED
data/lib/usps/imis.rb
CHANGED
|
@@ -1,56 +1,46 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# Core dependencies
|
|
4
|
+
require 'net/https'
|
|
5
|
+
require 'json'
|
|
6
|
+
require 'time'
|
|
7
|
+
require 'cgi'
|
|
4
8
|
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
require_relative 'imis/logger_helpers'
|
|
10
|
-
require_relative 'imis/base_data'
|
|
11
|
-
require_relative 'imis/data'
|
|
12
|
-
require_relative 'imis/party_data'
|
|
9
|
+
# Extensions
|
|
10
|
+
# :nocov:
|
|
11
|
+
require 'ext/hash' unless defined?(Rails)
|
|
12
|
+
# :nocov:
|
|
13
13
|
|
|
14
|
+
# Internal requires
|
|
14
15
|
require_relative 'imis/config'
|
|
15
|
-
require_relative 'imis/error'
|
|
16
|
+
require_relative 'imis/error/api'
|
|
17
|
+
require_relative 'imis/error/mapper'
|
|
18
|
+
require_relative 'imis/error/response'
|
|
16
19
|
require_relative 'imis/api'
|
|
17
|
-
require_relative 'imis/
|
|
18
|
-
require_relative 'imis/
|
|
19
|
-
require_relative 'imis/
|
|
20
|
-
require_relative 'imis/
|
|
21
|
-
require_relative 'imis/mocks'
|
|
22
|
-
require_relative 'imis/version'
|
|
20
|
+
require_relative 'imis/mapper'
|
|
21
|
+
require_relative 'imis/panel/base_panel'
|
|
22
|
+
require_relative 'imis/panel/vsc'
|
|
23
|
+
require_relative 'imis/panel/education'
|
|
23
24
|
|
|
24
25
|
module Usps
|
|
25
|
-
# API wrapper for interacting with iMIS
|
|
26
|
-
#
|
|
27
26
|
module Imis
|
|
28
27
|
class << self
|
|
29
|
-
# Accessor for configuration values
|
|
30
|
-
#
|
|
31
|
-
# @return The configuration object
|
|
32
|
-
#
|
|
33
28
|
def configuration
|
|
34
29
|
@configuration ||= Config.new
|
|
35
30
|
end
|
|
36
|
-
alias config configuration
|
|
37
31
|
|
|
38
|
-
# Used to define a block of configuration settings
|
|
39
|
-
#
|
|
40
|
-
# @return The updated configuration object
|
|
41
|
-
#
|
|
42
32
|
def configure
|
|
43
33
|
yield(configuration) if block_given?
|
|
44
34
|
configuration
|
|
45
35
|
end
|
|
46
36
|
|
|
47
|
-
#
|
|
48
|
-
#
|
|
49
|
-
|
|
37
|
+
# def mock!(value = true)
|
|
38
|
+
# @mock = value
|
|
39
|
+
# end
|
|
50
40
|
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
|
|
41
|
+
# def mock
|
|
42
|
+
# @mock || false
|
|
43
|
+
# end
|
|
54
44
|
end
|
|
55
45
|
end
|
|
56
46
|
end
|