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.
Files changed (541) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yml +57 -0
  3. data/.gitignore +4 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +88 -0
  6. data/.ruby-version +1 -0
  7. data/.simplecov +8 -0
  8. data/Gemfile +12 -0
  9. data/Gemfile.lock +95 -0
  10. data/Rakefile +12 -0
  11. data/Readme.md +193 -25
  12. data/bin/console +21 -0
  13. data/bin/setup +8 -0
  14. data/lib/ext/hash.rb +10 -0
  15. data/lib/usps/imis/api.rb +135 -241
  16. data/lib/usps/imis/config.rb +10 -156
  17. data/lib/usps/imis/error/api.rb +26 -0
  18. data/lib/usps/imis/error/mapper.rb +9 -0
  19. data/lib/usps/imis/error/response.rb +75 -0
  20. data/lib/usps/imis/mapper.rb +21 -91
  21. data/lib/usps/imis/panel/base_panel.rb +42 -0
  22. data/lib/usps/imis/panel/education.rb +111 -0
  23. data/lib/usps/imis/panel/vsc.rb +109 -0
  24. data/lib/usps/imis/version.rb +1 -1
  25. data/lib/usps/imis.rb +23 -33
  26. data/spec/lib/usps/imis/api_spec.rb +143 -0
  27. data/spec/lib/usps/imis/config_spec.rb +33 -0
  28. data/spec/lib/usps/imis/error/api_spec.rb +17 -0
  29. data/spec/lib/usps/imis/error/response_spec.rb +107 -0
  30. data/spec/lib/usps/imis/mapper_spec.rb +31 -0
  31. data/spec/lib/usps/imis/panel/base_panel_spec.rb +32 -0
  32. data/spec/lib/usps/imis/panel/education_spec.rb +55 -0
  33. data/spec/lib/usps/imis/panel/vsc_spec.rb +38 -0
  34. data/spec/lib/usps/imis_spec.rb +11 -0
  35. data/spec/spec_helper.rb +35 -0
  36. data/usps-imis-api.gemspec +18 -0
  37. metadata +34 -595
  38. data/bin/imis +0 -8
  39. data/lib/usps/imis/base_data.rb +0 -87
  40. data/lib/usps/imis/blank_object.rb +0 -62
  41. data/lib/usps/imis/business_object.rb +0 -252
  42. data/lib/usps/imis/command_line/formatters.rb +0 -101
  43. data/lib/usps/imis/command_line/help.rb +0 -204
  44. data/lib/usps/imis/command_line/interface.rb +0 -186
  45. data/lib/usps/imis/command_line/options.yml +0 -167
  46. data/lib/usps/imis/command_line/options_parser.rb +0 -158
  47. data/lib/usps/imis/command_line/options_parser_config.rb +0 -82
  48. data/lib/usps/imis/command_line/performers.rb +0 -90
  49. data/lib/usps/imis/command_line.rb +0 -18
  50. data/lib/usps/imis/data.rb +0 -60
  51. data/lib/usps/imis/dependencies.rb +0 -33
  52. data/lib/usps/imis/error.rb +0 -53
  53. data/lib/usps/imis/errors/api_error.rb +0 -11
  54. data/lib/usps/imis/errors/command_line_error.rb +0 -11
  55. data/lib/usps/imis/errors/config_error.rb +0 -11
  56. data/lib/usps/imis/errors/embedded_model_find_error.rb +0 -20
  57. data/lib/usps/imis/errors/empty_payload_error.rb +0 -23
  58. data/lib/usps/imis/errors/locked_id_error.rb +0 -15
  59. data/lib/usps/imis/errors/mapper_error.rb +0 -29
  60. data/lib/usps/imis/errors/missing_id_error.rb +0 -15
  61. data/lib/usps/imis/errors/missing_party_field_error.rb +0 -24
  62. data/lib/usps/imis/errors/not_found_error.rb +0 -11
  63. data/lib/usps/imis/errors/panel_unimplemented_error.rb +0 -34
  64. data/lib/usps/imis/errors/pattern_matching_error.rb +0 -23
  65. data/lib/usps/imis/errors/response_error.rb +0 -104
  66. data/lib/usps/imis/errors/unexpected_property_type_error.rb +0 -31
  67. data/lib/usps/imis/helpers.rb +0 -23
  68. data/lib/usps/imis/logger.rb +0 -40
  69. data/lib/usps/imis/logger_formatter.rb +0 -39
  70. data/lib/usps/imis/logger_helpers.rb +0 -39
  71. data/lib/usps/imis/mocks/business_object.rb +0 -47
  72. data/lib/usps/imis/mocks.rb +0 -11
  73. data/lib/usps/imis/models/associations/individual_demog.rb +0 -11
  74. data/lib/usps/imis/models/base/finders.rb +0 -80
  75. data/lib/usps/imis/models/base/persistence.rb +0 -110
  76. data/lib/usps/imis/models/base.rb +0 -279
  77. data/lib/usps/imis/models/education.rb +0 -25
  78. data/lib/usps/imis/models/generated/abc_cs_contact.rb +0 -91
  79. data/lib/usps/imis/models/generated/abc_fed990.rb +0 -17
  80. data/lib/usps/imis/models/generated/abc_ps_volunteer_skills.rb +0 -16
  81. data/lib/usps/imis/models/generated/access_area.rb +0 -22
  82. data/lib/usps/imis/models/generated/access_item.rb +0 -18
  83. data/lib/usps/imis/models/generated/access_main.rb +0 -18
  84. data/lib/usps/imis/models/generated/action_plan.rb +0 -21
  85. data/lib/usps/imis/models/generated/activity.rb +0 -57
  86. data/lib/usps/imis/models/generated/activity_ldao.rb +0 -58
  87. data/lib/usps/imis/models/generated/activity_ldcdr.rb +0 -57
  88. data/lib/usps/imis/models/generated/activity_ldxo.rb +0 -57
  89. data/lib/usps/imis/models/generated/add_family.rb +0 -13
  90. data/lib/usps/imis/models/generated/advanced_email_twelve_months_delivered_by_date.rb +0 -16
  91. data/lib/usps/imis/models/generated/advanced_email_twelve_months_totals.rb +0 -16
  92. data/lib/usps/imis/models/generated/aec_chapter_events.rb +0 -28
  93. data/lib/usps/imis/models/generated/aec_chapter_link_all_events.rb +0 -18
  94. data/lib/usps/imis/models/generated/aec_district_administrators.rb +0 -19
  95. data/lib/usps/imis/models/generated/aec_district_squadron_admins.rb +0 -14
  96. data/lib/usps/imis/models/generated/aec_district_squadron_events.rb +0 -15
  97. data/lib/usps/imis/models/generated/aec_si_r_charge_fee_percentages.rb +0 -14
  98. data/lib/usps/imis/models/generated/aec_si_r_charge_params.rb +0 -16
  99. data/lib/usps/imis/models/generated/appeal.rb +0 -39
  100. data/lib/usps/imis/models/generated/appeal_status_ref.rb +0 -15
  101. data/lib/usps/imis/models/generated/asc_ps_abc_squadron_price.rb +0 -25
  102. data/lib/usps/imis/models/generated/atom_panel_purpose.rb +0 -15
  103. data/lib/usps/imis/models/generated/auto_pay_instruction_detail.rb +0 -22
  104. data/lib/usps/imis/models/generated/auto_pay_invoices.rb +0 -24
  105. data/lib/usps/imis/models/generated/auto_pay_invoices_dues.rb +0 -29
  106. data/lib/usps/imis/models/generated/auto_pay_member_instruction_detail.rb +0 -22
  107. data/lib/usps/imis/models/generated/auto_pay_membership_invoices_base.rb +0 -28
  108. data/lib/usps/imis/models/generated/bad_address_reason_ref.rb +0 -18
  109. data/lib/usps/imis/models/generated/batch_line_status_ref.rb +0 -14
  110. data/lib/usps/imis/models/generated/billing_cycles.rb +0 -50
  111. data/lib/usps/imis/models/generated/billing_fees.rb +0 -61
  112. data/lib/usps/imis/models/generated/billing_fees_by_bill_to_party.rb +0 -20
  113. data/lib/usps/imis/models/generated/billing_issue_notification_by_bill_run.rb +0 -20
  114. data/lib/usps/imis/models/generated/billing_issue_notification_by_party.rb +0 -30
  115. data/lib/usps/imis/models/generated/billing_log_by_bill_cycle_data.rb +0 -28
  116. data/lib/usps/imis/models/generated/billing_log_by_party.rb +0 -29
  117. data/lib/usps/imis/models/generated/billing_product.rb +0 -30
  118. data/lib/usps/imis/models/generated/bo_district_dues.rb +0 -26
  119. data/lib/usps/imis/models/generated/bo_dues_fees.rb +0 -21
  120. data/lib/usps/imis/models/generated/bo_dues_pricing.rb +0 -18
  121. data/lib/usps/imis/models/generated/bo_national_dues.rb +0 -84
  122. data/lib/usps/imis/models/generated/bo_no_natl_dist_dues.rb +0 -135
  123. data/lib/usps/imis/models/generated/bo_squadron_dues.rb +0 -26
  124. data/lib/usps/imis/models/generated/bo_total.rb +0 -17
  125. data/lib/usps/imis/models/generated/campaign.rb +0 -42
  126. data/lib/usps/imis/models/generated/campaign_status_ref.rb +0 -15
  127. data/lib/usps/imis/models/generated/campaign_type_ref.rb +0 -15
  128. data/lib/usps/imis/models/generated/certification_module_status.rb +0 -14
  129. data/lib/usps/imis/models/generated/change_log_report.rb +0 -25
  130. data/lib/usps/imis/models/generated/change_property.rb +0 -18
  131. data/lib/usps/imis/models/generated/chapt_subscriptions.rb +0 -14
  132. data/lib/usps/imis/models/generated/chapter.rb +0 -15
  133. data/lib/usps/imis/models/generated/chapter_events.rb +0 -30
  134. data/lib/usps/imis/models/generated/commerce_product.rb +0 -47
  135. data/lib/usps/imis/models/generated/commission_rate_type_ref.rb +0 -14
  136. data/lib/usps/imis/models/generated/committee.rb +0 -16
  137. data/lib/usps/imis/models/generated/committee_districts_org_id.rb +0 -16
  138. data/lib/usps/imis/models/generated/committee_i_ds_temp.rb +0 -13
  139. data/lib/usps/imis/models/generated/committee_squadrons_org_id.rb +0 -16
  140. data/lib/usps/imis/models/generated/communication_log_summary_for_charts.rb +0 -15
  141. data/lib/usps/imis/models/generated/communication_message_type_ref.rb +0 -14
  142. data/lib/usps/imis/models/generated/communication_reason_ref.rb +0 -22
  143. data/lib/usps/imis/models/generated/community_items.rb +0 -25
  144. data/lib/usps/imis/models/generated/community_subscriptions.rb +0 -25
  145. data/lib/usps/imis/models/generated/comparison_ref.rb +0 -14
  146. data/lib/usps/imis/models/generated/component_registry.rb +0 -28
  147. data/lib/usps/imis/models/generated/contact.rb +0 -32
  148. data/lib/usps/imis/models/generated/contact_birthday_info.rb +0 -20
  149. data/lib/usps/imis/models/generated/contact_communication_reason_preferences.rb +0 -25
  150. data/lib/usps/imis/models/generated/contact_detail_report.rb +0 -49
  151. data/lib/usps/imis/models/generated/contact_offering_ref.rb +0 -14
  152. data/lib/usps/imis/models/generated/contact_profile_image.rb +0 -22
  153. data/lib/usps/imis/models/generated/contact_report.rb +0 -23
  154. data/lib/usps/imis/models/generated/contact_salutation.rb +0 -18
  155. data/lib/usps/imis/models/generated/contact_skill_ref.rb +0 -14
  156. data/lib/usps/imis/models/generated/contact_social_network.rb +0 -19
  157. data/lib/usps/imis/models/generated/contact_status_ref.rb +0 -15
  158. data/lib/usps/imis/models/generated/contact_type_ref.rb +0 -16
  159. data/lib/usps/imis/models/generated/content_filter.rb +0 -18
  160. data/lib/usps/imis/models/generated/content_manager_authority_group.rb +0 -14
  161. data/lib/usps/imis/models/generated/cost_method_ref.rb +0 -15
  162. data/lib/usps/imis/models/generated/country_ref.rb +0 -27
  163. data/lib/usps/imis/models/generated/credit_type_ref.rb +0 -14
  164. data/lib/usps/imis/models/generated/cs_activity.rb +0 -50
  165. data/lib/usps/imis/models/generated/cs_activity_basic.rb +0 -51
  166. data/lib/usps/imis/models/generated/cs_activity_forms.rb +0 -38
  167. data/lib/usps/imis/models/generated/cs_activity_types.rb +0 -16
  168. data/lib/usps/imis/models/generated/cs_address.rb +0 -40
  169. data/lib/usps/imis/models/generated/cs_address_formats.rb +0 -15
  170. data/lib/usps/imis/models/generated/cs_appeal.rb +0 -23
  171. data/lib/usps/imis/models/generated/cs_calls.rb +0 -20
  172. data/lib/usps/imis/models/generated/cs_campaign.rb +0 -20
  173. data/lib/usps/imis/models/generated/cs_committee.rb +0 -23
  174. data/lib/usps/imis/models/generated/cs_committee_code.rb +0 -20
  175. data/lib/usps/imis/models/generated/cs_committee_member.rb +0 -38
  176. data/lib/usps/imis/models/generated/cs_committee_member_group.rb +0 -15
  177. data/lib/usps/imis/models/generated/cs_committee_position.rb +0 -16
  178. data/lib/usps/imis/models/generated/cs_contact.rb +0 -91
  179. data/lib/usps/imis/models/generated/cs_contact_basic.rb +0 -79
  180. data/lib/usps/imis/models/generated/cs_country_names.rb +0 -19
  181. data/lib/usps/imis/models/generated/cs_donations.rb +0 -31
  182. data/lib/usps/imis/models/generated/cs_donations_detail.rb +0 -33
  183. data/lib/usps/imis/models/generated/cs_donor_data.rb +0 -21
  184. data/lib/usps/imis/models/generated/cs_dues_history.rb +0 -22
  185. data/lib/usps/imis/models/generated/cs_event.rb +0 -92
  186. data/lib/usps/imis/models/generated/cs_event_history.rb +0 -20
  187. data/lib/usps/imis/models/generated/cs_exchange_rate.rb +0 -14
  188. data/lib/usps/imis/models/generated/cs_freight_dollar.rb +0 -14
  189. data/lib/usps/imis/models/generated/cs_function.rb +0 -57
  190. data/lib/usps/imis/models/generated/cs_function_fees.rb +0 -20
  191. data/lib/usps/imis/models/generated/cs_gen_tables_union.rb +0 -15
  192. data/lib/usps/imis/models/generated/cs_general_lookup_tables.rb +0 -17
  193. data/lib/usps/imis/models/generated/cs_inventory.rb +0 -37
  194. data/lib/usps/imis/models/generated/cs_invoice.rb +0 -51
  195. data/lib/usps/imis/models/generated/cs_iso_currency_codes.rb +0 -14
  196. data/lib/usps/imis/models/generated/cs_member_type.rb +0 -18
  197. data/lib/usps/imis/models/generated/cs_name_fin.rb +0 -27
  198. data/lib/usps/imis/models/generated/cs_name_fr.rb +0 -27
  199. data/lib/usps/imis/models/generated/cs_name_log.rb +0 -17
  200. data/lib/usps/imis/models/generated/cs_name_note.rb +0 -18
  201. data/lib/usps/imis/models/generated/cs_name_picture.rb +0 -19
  202. data/lib/usps/imis/models/generated/cs_name_user.rb +0 -18
  203. data/lib/usps/imis/models/generated/cs_order_history.rb +0 -22
  204. data/lib/usps/imis/models/generated/cs_order_lines.rb +0 -54
  205. data/lib/usps/imis/models/generated/cs_order_type.rb +0 -15
  206. data/lib/usps/imis/models/generated/cs_orders.rb +0 -85
  207. data/lib/usps/imis/models/generated/cs_org_control.rb +0 -47
  208. data/lib/usps/imis/models/generated/cs_product.rb +0 -49
  209. data/lib/usps/imis/models/generated/cs_product_category.rb +0 -18
  210. data/lib/usps/imis/models/generated/cs_product_fundraising.rb +0 -22
  211. data/lib/usps/imis/models/generated/cs_product_location.rb +0 -14
  212. data/lib/usps/imis/models/generated/cs_product_type.rb +0 -14
  213. data/lib/usps/imis/models/generated/cs_reg_functions.rb +0 -36
  214. data/lib/usps/imis/models/generated/cs_registrant_classes.rb +0 -15
  215. data/lib/usps/imis/models/generated/cs_registration.rb +0 -39
  216. data/lib/usps/imis/models/generated/cs_relationship.rb +0 -25
  217. data/lib/usps/imis/models/generated/cs_relationship_types.rb +0 -17
  218. data/lib/usps/imis/models/generated/cs_salutations.rb +0 -14
  219. data/lib/usps/imis/models/generated/cs_staff_user.rb +0 -34
  220. data/lib/usps/imis/models/generated/cs_state_province_codes.rb +0 -15
  221. data/lib/usps/imis/models/generated/cs_subscriptions.rb +0 -58
  222. data/lib/usps/imis/models/generated/cs_subscriptions_chapters.rb +0 -15
  223. data/lib/usps/imis/models/generated/cs_system_params.rb +0 -15
  224. data/lib/usps/imis/models/generated/cs_terms.rb +0 -17
  225. data/lib/usps/imis/models/generated/cs_trans_notify.rb +0 -16
  226. data/lib/usps/imis/models/generated/cs_web_security_group.rb +0 -14
  227. data/lib/usps/imis/models/generated/cs_web_user.rb +0 -18
  228. data/lib/usps/imis/models/generated/culture_ref.rb +0 -14
  229. data/lib/usps/imis/models/generated/customer_experience_status.rb +0 -14
  230. data/lib/usps/imis/models/generated/data_type.rb +0 -16
  231. data/lib/usps/imis/models/generated/data_vault_attempt_settlement_status_ref.rb +0 -15
  232. data/lib/usps/imis/models/generated/data_vault_attempt_status_ref.rb +0 -14
  233. data/lib/usps/imis/models/generated/data_vault_attempt_summary.rb +0 -39
  234. data/lib/usps/imis/models/generated/data_vault_batch_summary.rb +0 -21
  235. data/lib/usps/imis/models/generated/data_vault_log_attempt.rb +0 -25
  236. data/lib/usps/imis/models/generated/data_vault_status_ref.rb +0 -14
  237. data/lib/usps/imis/models/generated/data_vault_status_summary.rb +0 -15
  238. data/lib/usps/imis/models/generated/data_vault_status_summary_detail.rb +0 -19
  239. data/lib/usps/imis/models/generated/date_dimension.rb +0 -24
  240. data/lib/usps/imis/models/generated/day_of_the_week_ref.rb +0 -14
  241. data/lib/usps/imis/models/generated/discountable_item.rb +0 -20
  242. data/lib/usps/imis/models/generated/discountable_item_class.rb +0 -15
  243. data/lib/usps/imis/models/generated/distinct_user_defined_multi_select_properties.rb +0 -17
  244. data/lib/usps/imis/models/generated/districts_and_primary_members.rb +0 -15
  245. data/lib/usps/imis/models/generated/document_path.rb +0 -14
  246. data/lib/usps/imis/models/generated/document_storage.rb +0 -23
  247. data/lib/usps/imis/models/generated/document_system_size_info.rb +0 -36
  248. data/lib/usps/imis/models/generated/document_system_size_info_by_type.rb +0 -37
  249. data/lib/usps/imis/models/generated/document_system_status_count_info.rb +0 -14
  250. data/lib/usps/imis/models/generated/document_system_status_size_info.rb +0 -15
  251. data/lib/usps/imis/models/generated/document_system_type_count_info.rb +0 -14
  252. data/lib/usps/imis/models/generated/document_system_type_size_info.rb +0 -15
  253. data/lib/usps/imis/models/generated/document_type.rb +0 -34
  254. data/lib/usps/imis/models/generated/document_type_status_path_info.rb +0 -28
  255. data/lib/usps/imis/models/generated/donation.rb +0 -31
  256. data/lib/usps/imis/models/generated/donation_performance.rb +0 -19
  257. data/lib/usps/imis/models/generated/donation_summary.rb +0 -36
  258. data/lib/usps/imis/models/generated/dynamic_group.rb +0 -18
  259. data/lib/usps/imis/models/generated/educ_abc.rb +0 -21
  260. data/lib/usps/imis/models/generated/educ_boc.rb +0 -21
  261. data/lib/usps/imis/models/generated/educ_crs.rb +0 -21
  262. data/lib/usps/imis/models/generated/educ_id.rb +0 -21
  263. data/lib/usps/imis/models/generated/educ_ot.rb +0 -21
  264. data/lib/usps/imis/models/generated/educ_sem.rb +0 -21
  265. data/lib/usps/imis/models/generated/education_in_progress.rb +0 -16
  266. data/lib/usps/imis/models/generated/education_level_ref.rb +0 -15
  267. data/lib/usps/imis/models/generated/effective_contact_communication_preferences_data.rb +0 -23
  268. data/lib/usps/imis/models/generated/effective_fundraising_preferences_data.rb +0 -18
  269. data/lib/usps/imis/models/generated/engagement_category.rb +0 -23
  270. data/lib/usps/imis/models/generated/engagement_measure.rb +0 -24
  271. data/lib/usps/imis/models/generated/engagement_score_current_data.rb +0 -21
  272. data/lib/usps/imis/models/generated/engagement_score_formula.rb +0 -19
  273. data/lib/usps/imis/models/generated/engagement_score_monthly_data.rb +0 -22
  274. data/lib/usps/imis/models/generated/engagement_score_result.rb +0 -21
  275. data/lib/usps/imis/models/generated/engagement_score_yearly_data.rb +0 -21
  276. data/lib/usps/imis/models/generated/event_category_list.rb +0 -16
  277. data/lib/usps/imis/models/generated/event_function_resource_data.rb +0 -22
  278. data/lib/usps/imis/models/generated/event_question.rb +0 -24
  279. data/lib/usps/imis/models/generated/event_question_response.rb +0 -25
  280. data/lib/usps/imis/models/generated/event_registrants_report.rb +0 -45
  281. data/lib/usps/imis/models/generated/execution_mode_ref.rb +0 -15
  282. data/lib/usps/imis/models/generated/experience_definition_status.rb +0 -14
  283. data/lib/usps/imis/models/generated/expired_member_update_detail_log.rb +0 -19
  284. data/lib/usps/imis/models/generated/family_add_contact.rb +0 -91
  285. data/lib/usps/imis/models/generated/family_member_count.rb +0 -37
  286. data/lib/usps/imis/models/generated/file_type_ref.rb +0 -16
  287. data/lib/usps/imis/models/generated/first_notify_contact_per_gift.rb +0 -14
  288. data/lib/usps/imis/models/generated/first_payment_date_type_ref.rb +0 -15
  289. data/lib/usps/imis/models/generated/form_definition_field_data.rb +0 -19
  290. data/lib/usps/imis/models/generated/form_field_response_data.rb +0 -22
  291. data/lib/usps/imis/models/generated/fundraising_preference_ref.rb +0 -15
  292. data/lib/usps/imis/models/generated/fundraising_profile_donor_data.rb +0 -18
  293. data/lib/usps/imis/models/generated/gateway_result_ref.rb +0 -14
  294. data/lib/usps/imis/models/generated/gateway_transaction_data.rb +0 -35
  295. data/lib/usps/imis/models/generated/gateway_transaction_ref.rb +0 -15
  296. data/lib/usps/imis/models/generated/gateway_type_ref.rb +0 -17
  297. data/lib/usps/imis/models/generated/gift.rb +0 -41
  298. data/lib/usps/imis/models/generated/gift_adjustment_log_summary.rb +0 -25
  299. data/lib/usps/imis/models/generated/gift_aid_claim_status_ref.rb +0 -14
  300. data/lib/usps/imis/models/generated/gift_array.rb +0 -16
  301. data/lib/usps/imis/models/generated/gift_detail.rb +0 -29
  302. data/lib/usps/imis/models/generated/gift_history.rb +0 -45
  303. data/lib/usps/imis/models/generated/gift_history_summary.rb +0 -33
  304. data/lib/usps/imis/models/generated/gift_history_summary_basic.rb +0 -33
  305. data/lib/usps/imis/models/generated/gift_summary.rb +0 -16
  306. data/lib/usps/imis/models/generated/gift_totals_by_date.rb +0 -15
  307. data/lib/usps/imis/models/generated/gift_transaction.rb +0 -43
  308. data/lib/usps/imis/models/generated/gifts_received.rb +0 -32
  309. data/lib/usps/imis/models/generated/gifts_received_for_receipting.rb +0 -44
  310. data/lib/usps/imis/models/generated/gifts_received_summary.rb +0 -33
  311. data/lib/usps/imis/models/generated/gifts_with_void_and_replaced_receipts.rb +0 -43
  312. data/lib/usps/imis/models/generated/gl_batch_transaction_data.rb +0 -30
  313. data/lib/usps/imis/models/generated/gl_daily_transaction_data.rb +0 -30
  314. data/lib/usps/imis/models/generated/gl_detail_due_to_due_from_transaction_data.rb +0 -17
  315. data/lib/usps/imis/models/generated/gl_detail_transaction_data.rb +0 -36
  316. data/lib/usps/imis/models/generated/gl_detail_transaction_data_full.rb +0 -36
  317. data/lib/usps/imis/models/generated/gl_due_to_due_from_transaction_data.rb +0 -18
  318. data/lib/usps/imis/models/generated/gl_entry_type_ref.rb +0 -14
  319. data/lib/usps/imis/models/generated/gl_export_format_type_ref.rb +0 -14
  320. data/lib/usps/imis/models/generated/gl_export_log_detail.rb +0 -15
  321. data/lib/usps/imis/models/generated/gl_export_log_summary.rb +0 -26
  322. data/lib/usps/imis/models/generated/gl_export_multiple.rb +0 -15
  323. data/lib/usps/imis/models/generated/gl_export_summary_level_ref.rb +0 -15
  324. data/lib/usps/imis/models/generated/gl_monthly_due_to_due_from_transaction_data.rb +0 -18
  325. data/lib/usps/imis/models/generated/gl_monthly_transaction_data.rb +0 -29
  326. data/lib/usps/imis/models/generated/gl_source_item_type_ref.rb +0 -14
  327. data/lib/usps/imis/models/generated/gl_transaction_data.rb +0 -41
  328. data/lib/usps/imis/models/generated/grade.rb +0 -14
  329. data/lib/usps/imis/models/generated/group_info.rb +0 -28
  330. data/lib/usps/imis/models/generated/group_member_administrator_type_ref.rb +0 -15
  331. data/lib/usps/imis/models/generated/group_member_detail.rb +0 -29
  332. data/lib/usps/imis/models/generated/group_member_status_ref.rb +0 -15
  333. data/lib/usps/imis/models/generated/group_perspective.rb +0 -16
  334. data/lib/usps/imis/models/generated/group_price_sheet.rb +0 -17
  335. data/lib/usps/imis/models/generated/group_role_ref.rb +0 -17
  336. data/lib/usps/imis/models/generated/group_status_ref.rb +0 -16
  337. data/lib/usps/imis/models/generated/group_type_member_status.rb +0 -17
  338. data/lib/usps/imis/models/generated/group_type_ref.rb +0 -33
  339. data/lib/usps/imis/models/generated/group_type_role.rb +0 -22
  340. data/lib/usps/imis/models/generated/handling_price_ref.rb +0 -15
  341. data/lib/usps/imis/models/generated/hierarchy.rb +0 -21
  342. data/lib/usps/imis/models/generated/hierarchy_root.rb +0 -22
  343. data/lib/usps/imis/models/generated/i_series_data.rb +0 -15
  344. data/lib/usps/imis/models/generated/individual_demog.rb +0 -34
  345. data/lib/usps/imis/models/generated/institute_type_code_ref.rb +0 -16
  346. data/lib/usps/imis/models/generated/interaction_log.rb +0 -35
  347. data/lib/usps/imis/models/generated/interaction_log_event.rb +0 -24
  348. data/lib/usps/imis/models/generated/interaction_log_event_summary.rb +0 -30
  349. data/lib/usps/imis/models/generated/interval_type_ref.rb +0 -15
  350. data/lib/usps/imis/models/generated/invoice_line_data.rb +0 -39
  351. data/lib/usps/imis/models/generated/invoice_lines.rb +0 -42
  352. data/lib/usps/imis/models/generated/invoice_number.rb +0 -16
  353. data/lib/usps/imis/models/generated/invoice_payment_summary.rb +0 -14
  354. data/lib/usps/imis/models/generated/invoice_purpose.rb +0 -15
  355. data/lib/usps/imis/models/generated/invoice_source_system_ref.rb +0 -13
  356. data/lib/usps/imis/models/generated/invoice_type_ref.rb +0 -14
  357. data/lib/usps/imis/models/generated/journal_entry_type_ref.rb +0 -14
  358. data/lib/usps/imis/models/generated/license_ref.rb +0 -15
  359. data/lib/usps/imis/models/generated/line_pricing_ref.rb +0 -15
  360. data/lib/usps/imis/models/generated/list_entity.rb +0 -14
  361. data/lib/usps/imis/models/generated/locale_ref.rb +0 -14
  362. data/lib/usps/imis/models/generated/location_status.rb +0 -14
  363. data/lib/usps/imis/models/generated/mail_code_ref.rb +0 -16
  364. data/lib/usps/imis/models/generated/matching_gift_plan_type_ref.rb +0 -15
  365. data/lib/usps/imis/models/generated/matching_mode_ref.rb +0 -15
  366. data/lib/usps/imis/models/generated/matching_period_ref.rb +0 -15
  367. data/lib/usps/imis/models/generated/memorial_tribute_type_ref.rb +0 -14
  368. data/lib/usps/imis/models/generated/method_set_type_ref.rb +0 -14
  369. data/lib/usps/imis/models/generated/month_ref.rb +0 -18
  370. data/lib/usps/imis/models/generated/name_prefixes.rb +0 -15
  371. data/lib/usps/imis/models/generated/name_suffixes.rb +0 -13
  372. data/lib/usps/imis/models/generated/navigation_pane.rb +0 -18
  373. data/lib/usps/imis/models/generated/net_contact.rb +0 -99
  374. data/lib/usps/imis/models/generated/net_contact_basic.rb +0 -88
  375. data/lib/usps/imis/models/generated/net_contact_data.rb +0 -88
  376. data/lib/usps/imis/models/generated/note_purpose_ref.rb +0 -14
  377. data/lib/usps/imis/models/generated/offering_status.rb +0 -14
  378. data/lib/usps/imis/models/generated/opportunity_class_ref.rb +0 -15
  379. data/lib/usps/imis/models/generated/opportunity_default_status_ref.rb +0 -15
  380. data/lib/usps/imis/models/generated/opportunity_status_ref.rb +0 -15
  381. data/lib/usps/imis/models/generated/opportunity_task_user.rb +0 -20
  382. data/lib/usps/imis/models/generated/opportunity_type.rb +0 -29
  383. data/lib/usps/imis/models/generated/order_category.rb +0 -14
  384. data/lib/usps/imis/models/generated/order_fulfillment_status_ref.rb +0 -14
  385. data/lib/usps/imis/models/generated/order_invoice.rb +0 -14
  386. data/lib/usps/imis/models/generated/order_state_ref.rb +0 -14
  387. data/lib/usps/imis/models/generated/order_type_detail.rb +0 -17
  388. data/lib/usps/imis/models/generated/org_demog.rb +0 -28
  389. data/lib/usps/imis/models/generated/organization_demo.rb +0 -18
  390. data/lib/usps/imis/models/generated/organization_hierarchy.rb +0 -19
  391. data/lib/usps/imis/models/generated/package.rb +0 -25
  392. data/lib/usps/imis/models/generated/package_item.rb +0 -19
  393. data/lib/usps/imis/models/generated/package_status_ref.rb +0 -14
  394. data/lib/usps/imis/models/generated/payment_application.rb +0 -31
  395. data/lib/usps/imis/models/generated/payment_application_detail.rb +0 -35
  396. data/lib/usps/imis/models/generated/payment_application_restriction_ref.rb +0 -14
  397. data/lib/usps/imis/models/generated/payment_application_summary.rb +0 -18
  398. data/lib/usps/imis/models/generated/payment_application_type.rb +0 -14
  399. data/lib/usps/imis/models/generated/payment_category_ref.rb +0 -14
  400. data/lib/usps/imis/models/generated/payment_detail_status_ref.rb +0 -15
  401. data/lib/usps/imis/models/generated/payment_method_data.rb +0 -20
  402. data/lib/usps/imis/models/generated/payment_reconciliation.rb +0 -26
  403. data/lib/usps/imis/models/generated/payment_status_ref.rb +0 -14
  404. data/lib/usps/imis/models/generated/percentile_ranking.rb +0 -20
  405. data/lib/usps/imis/models/generated/picture_purpose_ref.rb +0 -14
  406. data/lib/usps/imis/models/generated/pin_update.rb +0 -13
  407. data/lib/usps/imis/models/generated/pipeline.rb +0 -15
  408. data/lib/usps/imis/models/generated/pipeline_stage.rb +0 -17
  409. data/lib/usps/imis/models/generated/postal_code_ref.rb +0 -26
  410. data/lib/usps/imis/models/generated/prefix_ref.rb +0 -17
  411. data/lib/usps/imis/models/generated/price_basis_ref.rb +0 -15
  412. data/lib/usps/imis/models/generated/pricing_type_ref.rb +0 -15
  413. data/lib/usps/imis/models/generated/primary_fam_members.rb +0 -14
  414. data/lib/usps/imis/models/generated/process_type_default_owner_all_users.rb +0 -15
  415. data/lib/usps/imis/models/generated/product_price_sheet.rb +0 -20
  416. data/lib/usps/imis/models/generated/product_status_ref.rb +0 -15
  417. data/lib/usps/imis/models/generated/product_trans.rb +0 -31
  418. data/lib/usps/imis/models/generated/product_trans_detail.rb +0 -17
  419. data/lib/usps/imis/models/generated/profile_documents.rb +0 -15
  420. data/lib/usps/imis/models/generated/profile_page.rb +0 -36
  421. data/lib/usps/imis/models/generated/program_group_status.rb +0 -14
  422. data/lib/usps/imis/models/generated/program_status.rb +0 -14
  423. data/lib/usps/imis/models/generated/promotion_rule_ref.rb +0 -15
  424. data/lib/usps/imis/models/generated/property_definition.rb +0 -33
  425. data/lib/usps/imis/models/generated/prospect.rb +0 -38
  426. data/lib/usps/imis/models/generated/publish_priority.rb +0 -14
  427. data/lib/usps/imis/models/generated/publish_request.rb +0 -18
  428. data/lib/usps/imis/models/generated/publish_request_detail.rb +0 -22
  429. data/lib/usps/imis/models/generated/publish_request_status.rb +0 -15
  430. data/lib/usps/imis/models/generated/publish_server.rb +0 -29
  431. data/lib/usps/imis/models/generated/quality_ref.rb +0 -15
  432. data/lib/usps/imis/models/generated/rank.rb +0 -21
  433. data/lib/usps/imis/models/generated/receipt_report.rb +0 -24
  434. data/lib/usps/imis/models/generated/receipt_status_ref.rb +0 -15
  435. data/lib/usps/imis/models/generated/recurring_donation_expected_payment_set.rb +0 -19
  436. data/lib/usps/imis/models/generated/recurring_donation_expected_payment_set_list.rb +0 -20
  437. data/lib/usps/imis/models/generated/recurring_donation_expected_payment_set_status.rb +0 -15
  438. data/lib/usps/imis/models/generated/recurring_donation_expected_payment_status.rb +0 -15
  439. data/lib/usps/imis/models/generated/recurring_donation_frequency_ref.rb +0 -15
  440. data/lib/usps/imis/models/generated/reference_date.rb +0 -13
  441. data/lib/usps/imis/models/generated/registered_component.rb +0 -27
  442. data/lib/usps/imis/models/generated/registration_status.rb +0 -14
  443. data/lib/usps/imis/models/generated/relationship.rb +0 -18
  444. data/lib/usps/imis/models/generated/relationship_category.rb +0 -17
  445. data/lib/usps/imis/models/generated/relationship_type_category.rb +0 -17
  446. data/lib/usps/imis/models/generated/relationship_type_ref.rb +0 -16
  447. data/lib/usps/imis/models/generated/relationship_update.rb +0 -16
  448. data/lib/usps/imis/models/generated/relationship_update_contact_panel.rb +0 -16
  449. data/lib/usps/imis/models/generated/remove_district_org_committee_terms.rb +0 -28
  450. data/lib/usps/imis/models/generated/remove_squadron_org_committee_terms.rb +0 -28
  451. data/lib/usps/imis/models/generated/reporting_group_user.rb +0 -14
  452. data/lib/usps/imis/models/generated/response_media_ref.rb +0 -14
  453. data/lib/usps/imis/models/generated/response_type_ref.rb +0 -15
  454. data/lib/usps/imis/models/generated/restock_price_ref.rb +0 -15
  455. data/lib/usps/imis/models/generated/sales_location_status_ref.rb +0 -15
  456. data/lib/usps/imis/models/generated/salutation_ref.rb +0 -22
  457. data/lib/usps/imis/models/generated/sbuddy_answers.rb +0 -23
  458. data/lib/usps/imis/models/generated/sbuddy_definition.rb +0 -28
  459. data/lib/usps/imis/models/generated/schedule_frequency_ref.rb +0 -14
  460. data/lib/usps/imis/models/generated/segmentation_job_status_ref.rb +0 -15
  461. data/lib/usps/imis/models/generated/sequence_counter.rb +0 -16
  462. data/lib/usps/imis/models/generated/set_district_org_committee_terms.rb +0 -28
  463. data/lib/usps/imis/models/generated/set_squadron_org_committee_terms.rb +0 -28
  464. data/lib/usps/imis/models/generated/ship_price_ref.rb +0 -15
  465. data/lib/usps/imis/models/generated/soa_group.rb +0 -21
  466. data/lib/usps/imis/models/generated/soa_group_member.rb +0 -19
  467. data/lib/usps/imis/models/generated/soa_group_member_detail.rb +0 -28
  468. data/lib/usps/imis/models/generated/social_network_ref.rb +0 -15
  469. data/lib/usps/imis/models/generated/solicitation.rb +0 -40
  470. data/lib/usps/imis/models/generated/solicitation_status_ref.rb +0 -15
  471. data/lib/usps/imis/models/generated/source_code.rb +0 -43
  472. data/lib/usps/imis/models/generated/source_code_status_ref.rb +0 -15
  473. data/lib/usps/imis/models/generated/source_code_type_ref.rb +0 -15
  474. data/lib/usps/imis/models/generated/squad_form_add_fam.rb +0 -23
  475. data/lib/usps/imis/models/generated/squad_form_add_individual.rb +0 -31
  476. data/lib/usps/imis/models/generated/squad_leader_add_individual_contact.rb +0 -28
  477. data/lib/usps/imis/models/generated/squad_note.rb +0 -13
  478. data/lib/usps/imis/models/generated/squad_to_district.rb +0 -18
  479. data/lib/usps/imis/models/generated/squadron_chap_com.rb +0 -16
  480. data/lib/usps/imis/models/generated/squadron_district_lookup.rb +0 -18
  481. data/lib/usps/imis/models/generated/squadrons_and_primary_members.rb +0 -15
  482. data/lib/usps/imis/models/generated/standard_page.rb +0 -15
  483. data/lib/usps/imis/models/generated/state_province_ref.rb +0 -21
  484. data/lib/usps/imis/models/generated/suffix_ref.rb +0 -16
  485. data/lib/usps/imis/models/generated/supplement.rb +0 -27
  486. data/lib/usps/imis/models/generated/supplement_status_ref.rb +0 -15
  487. data/lib/usps/imis/models/generated/supplement_type_ref.rb +0 -15
  488. data/lib/usps/imis/models/generated/system_config_xml.rb +0 -14
  489. data/lib/usps/imis/models/generated/system_param_int.rb +0 -23
  490. data/lib/usps/imis/models/generated/tag_hierarchy.rb +0 -32
  491. data/lib/usps/imis/models/generated/tag_relationship_type.rb +0 -16
  492. data/lib/usps/imis/models/generated/task_item.rb +0 -32
  493. data/lib/usps/imis/models/generated/task_item_status_ref.rb +0 -15
  494. data/lib/usps/imis/models/generated/task_latest_log.rb +0 -15
  495. data/lib/usps/imis/models/generated/task_notify_creator_ref.rb +0 -15
  496. data/lib/usps/imis/models/generated/task_priority.rb +0 -15
  497. data/lib/usps/imis/models/generated/task_status.rb +0 -16
  498. data/lib/usps/imis/models/generated/task_type.rb +0 -15
  499. data/lib/usps/imis/models/generated/tax_authority_level_ref.rb +0 -15
  500. data/lib/usps/imis/models/generated/time_zone_ref.rb +0 -20
  501. data/lib/usps/imis/models/generated/top_level_parent_organization.rb +0 -20
  502. data/lib/usps/imis/models/generated/transaction_detail.rb +0 -56
  503. data/lib/usps/imis/models/generated/transaction_summary_large_batch.rb +0 -44
  504. data/lib/usps/imis/models/generated/uniform_registry.rb +0 -14
  505. data/lib/usps/imis/models/generated/uniform_tag.rb +0 -17
  506. data/lib/usps/imis/models/generated/upgrade_log_detail.rb +0 -19
  507. data/lib/usps/imis/models/generated/url_mapping_type_ref.rb +0 -15
  508. data/lib/usps/imis/models/generated/user_data.rb +0 -33
  509. data/lib/usps/imis/models/generated/user_role.rb +0 -14
  510. data/lib/usps/imis/models/generated/user_token.rb +0 -14
  511. data/lib/usps/imis/models/generated/vertical_alignment_ref.rb +0 -15
  512. data/lib/usps/imis/models/generated/vessels.rb +0 -18
  513. data/lib/usps/imis/models/generated/volunteer_information.rb +0 -22
  514. data/lib/usps/imis/models/generated/warehouse_status_ref.rb +0 -14
  515. data/lib/usps/imis/models/generated/warehouse_type_ref.rb +0 -14
  516. data/lib/usps/imis/models/generated/web_user_control_ref.rb +0 -15
  517. data/lib/usps/imis/models/generated/workflow_queue_item.rb +0 -25
  518. data/lib/usps/imis/models/generated/workflow_queue_item_with_status.rb +0 -25
  519. data/lib/usps/imis/models/generated/workflow_queue_status_ref.rb +0 -15
  520. data/lib/usps/imis/models/generated/workflow_status_ref.rb +0 -15
  521. data/lib/usps/imis/models/party/address.rb +0 -32
  522. data/lib/usps/imis/models/party/alternate_id.rb +0 -16
  523. data/lib/usps/imis/models/party/email.rb +0 -17
  524. data/lib/usps/imis/models/party/phone.rb +0 -17
  525. data/lib/usps/imis/models/party/salutation.rb +0 -18
  526. data/lib/usps/imis/models/party.rb +0 -131
  527. data/lib/usps/imis/models/types/upcase_string.rb +0 -18
  528. data/lib/usps/imis/models/vessel_safety_checks.rb +0 -20
  529. data/lib/usps/imis/models.rb +0 -92
  530. data/lib/usps/imis/panels/base_panel.rb +0 -136
  531. data/lib/usps/imis/panels/education.rb +0 -29
  532. data/lib/usps/imis/panels/vsc.rb +0 -28
  533. data/lib/usps/imis/panels.rb +0 -25
  534. data/lib/usps/imis/party_data.rb +0 -88
  535. data/lib/usps/imis/properties.rb +0 -74
  536. data/lib/usps/imis/query.rb +0 -163
  537. data/lib/usps/imis/requests.rb +0 -67
  538. data/spec/support/usps/simple_cov_uncovered_lines_formatter.rb +0 -53
  539. data/spec/support/usps/vcr/config.rb +0 -47
  540. data/spec/support/usps/vcr/filters.rb +0 -89
  541. 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
@@ -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 defined in +FIELD_MAPPING+
96
- #
97
- # @param data [Hash] Conforms to pattern +{ field_key => value }+
25
+ # Only available for previously-mapped fields
98
26
  #
99
- # @return [Array<Usps::Imis::Data>] Response data from the API for each internal update request
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.on(business_object_name).put_fields(field_updates)
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(field_key)
121
- missing_mapping!(field_key) unless FIELD_MAPPING.key?(field_key.to_sym)
122
-
123
- business_object_name, field = FIELD_MAPPING[field_key.to_sym]
124
- yield(business_object_name, field)
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!(field_key)
53
+ def missing_mapping(field_name)
128
54
  unless ENV['TESTING']
129
55
  # :nocov:
130
- "Mapper does not know how to handle field \"#{field_key}\".\n\n" \
131
- 'You can use api.put_fields(business_object_name, { field_name => value }) ' \
132
- "if you know the business object and iMIS-specific field name.\n\n"
133
- .split("\n")
134
- .each { logger.warn(it) }
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 Errors::MapperError.new({ field_key: })
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Usps
4
4
  module Imis
5
- VERSION = '0.15.2'
5
+ VERSION = '1.0.0-rc.1'
6
6
  end
7
7
  end
data/lib/usps/imis.rb CHANGED
@@ -1,56 +1,46 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'imis/dependencies'
3
+ # Core dependencies
4
+ require 'net/https'
5
+ require 'json'
6
+ require 'time'
7
+ require 'cgi'
4
8
 
5
- # Shared infrastructure (used by multiple files below)
6
- require_relative 'imis/helpers'
7
- require_relative 'imis/requests'
8
- require_relative 'imis/logger_formatter'
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/properties'
18
- require_relative 'imis/blank_object'
19
- require_relative 'imis/models'
20
- require_relative 'imis/panels'
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
- # Logger (with optional nested tags) to write to
48
- #
49
- def logger(*) = configuration.logger.tagged(*)
37
+ # def mock!(value = true)
38
+ # @mock = value
39
+ # end
50
40
 
51
- # Gem version
52
- #
53
- def version = Gem::Version.new(VERSION)
41
+ # def mock
42
+ # @mock || false
43
+ # end
54
44
  end
55
45
  end
56
46
  end