# frozen_string_literal: truemoduleFakerclassLoremFlickr<Baseclass<<selfSUPPORTED_COLORIZATIONS=%w[red green blue].freeze# rubocop:disable Metrics/ParameterListsdefimage(legacy_size=NOT_GIVEN,legacy_search_terms=NOT_GIVEN,legacy_match_all=NOT_GIVEN,size: '300x300',search_terms: [],match_all: false)# rubocop:enable Metrics/ParameterListswarn_for_deprecated_argumentsdo|keywords|keywords<<:sizeiflegacy_size!=NOT_GIVENkeywords<<:search_termsiflegacy_search_terms!=NOT_GIVENkeywords<<:match_alliflegacy_match_all!=NOT_GIVENendbuild_url(size,nil,search_terms,match_all)end# rubocop:disable Metrics/ParameterListsdefgrayscale_image(legacy_size=NOT_GIVEN,legacy_search_terms=NOT_GIVEN,legacy_match_all=NOT_GIVEN,size: '300x300',search_terms: ['all'],match_all: false)# rubocop:enable Metrics/ParameterListswarn_for_deprecated_argumentsdo|keywords|keywords<<:sizeiflegacy_size!=NOT_GIVENkeywords<<:search_termsiflegacy_search_terms!=NOT_GIVENkeywords<<:match_alliflegacy_match_all!=NOT_GIVENendraiseArgumentError,'Search terms must be specified for grayscale images'unlesssearch_terms.any?build_url(size,'g',search_terms,match_all)end# rubocop:disable Metrics/ParameterListsdefpixelated_image(legacy_size=NOT_GIVEN,legacy_search_terms=NOT_GIVEN,legacy_match_all=NOT_GIVEN,size: '300x300',search_terms: ['all'],match_all: false)# rubocop:enable Metrics/ParameterListswarn_for_deprecated_argumentsdo|keywords|keywords<<:sizeiflegacy_size!=NOT_GIVENkeywords<<:search_termsiflegacy_search_terms!=NOT_GIVENkeywords<<:match_alliflegacy_match_all!=NOT_GIVENendraiseArgumentError,'Search terms must be specified for pixelated images'unlesssearch_terms.any?build_url(size,'p',search_terms,match_all)end# rubocop:disable Metrics/ParameterListsdefcolorized_image(legacy_size=NOT_GIVEN,legacy_color=NOT_GIVEN,legacy_search_terms=NOT_GIVEN,legacy_match_all=NOT_GIVEN,size: '300x300',color: 'red',search_terms: ['all'],match_all: false)# rubocop:enable Metrics/ParameterListswarn_for_deprecated_argumentsdo|keywords|keywords<<:sizeiflegacy_size!=NOT_GIVENkeywords<<:coloriflegacy_color!=NOT_GIVENkeywords<<:search_termsiflegacy_search_terms!=NOT_GIVENkeywords<<:match_alliflegacy_match_all!=NOT_GIVENendraiseArgumentError,'Search terms must be specified for colorized images'unlesssearch_terms.any?raiseArgumentError,"Supported colorizations are #{SUPPORTED_COLORIZATIONS.join(', ')}"unlessSUPPORTED_COLORIZATIONS.include?(color)build_url(size,color,search_terms,match_all)endprivatedefbuild_url(size,format,search_terms,match_all)raiseArgumentError,'Size should be specified in format 300x300'unlesssize=~/^[0-9]+x[0-9]+$/url_parts=['https://loremflickr.com']url_parts<<formaturl_parts+=size.split('x')url_parts<<search_terms.compact.join(',')ifsearch_terms.any?url_parts<<'all'ifmatch_allurl_parts.compact.join('/')endendendend