x_api_scraper 0.1.0
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 +7 -0
- data/lib/crystalline/enum.rbi +17 -0
- data/lib/crystalline/metadata_fields.rb +265 -0
- data/lib/crystalline/module.rb +188 -0
- data/lib/crystalline/types.rb +170 -0
- data/lib/crystalline/utils.rb +69 -0
- data/lib/crystalline.rb +13 -0
- data/lib/x_api_scraper.rb +41 -0
- data/lib/xapi_scraper/account.rb +194 -0
- data/lib/xapi_scraper/actions.rb +2166 -0
- data/lib/xapi_scraper/analysis.rb +230 -0
- data/lib/xapi_scraper/articles.rb +410 -0
- data/lib/xapi_scraper/client.rb +133 -0
- data/lib/xapi_scraper/communities.rb +1352 -0
- data/lib/xapi_scraper/dm.rb +990 -0
- data/lib/xapi_scraper/engagement.rb +792 -0
- data/lib/xapi_scraper/followers.rb +420 -0
- data/lib/xapi_scraper/following.rb +230 -0
- data/lib/xapi_scraper/lists.rb +1156 -0
- data/lib/xapi_scraper/models/callbacks.rb +12 -0
- data/lib/xapi_scraper/models/components/accountverifymodel.rb +82 -0
- data/lib/xapi_scraper/models/components/accountverifymodel.rbi +38 -0
- data/lib/xapi_scraper/models/components/accountverifyresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/accountverifyresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/advancedsearchcursorquery.rb +51 -0
- data/lib/xapi_scraper/models/components/advancedsearchcursorquery.rbi +26 -0
- data/lib/xapi_scraper/models/components/advancedsearchcursorresponse.rb +76 -0
- data/lib/xapi_scraper/models/components/advancedsearchcursorresponse.rbi +38 -0
- data/lib/xapi_scraper/models/components/articleblock.rb +50 -0
- data/lib/xapi_scraper/models/components/articleblock.rbi +26 -0
- data/lib/xapi_scraper/models/components/articleblockrange.rb +47 -0
- data/lib/xapi_scraper/models/components/articleblockrange.rbi +26 -0
- data/lib/xapi_scraper/models/components/blockuserresponse.rb +54 -0
- data/lib/xapi_scraper/models/components/blockuserresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/bookmarkbody.rb +43 -0
- data/lib/xapi_scraper/models/components/bookmarkbody.rbi +20 -0
- data/lib/xapi_scraper/models/components/cashtagsquery.rb +192 -0
- data/lib/xapi_scraper/models/components/cashtagsquery.rbi +98 -0
- data/lib/xapi_scraper/models/components/cashtagsquery_language.rb +76 -0
- data/lib/xapi_scraper/models/components/cashtagsquery_language.rbi +9 -0
- data/lib/xapi_scraper/models/components/cashtagsquery_sortby.rb +18 -0
- data/lib/xapi_scraper/models/components/cashtagsquery_sortby.rbi +9 -0
- data/lib/xapi_scraper/models/components/communitymodel.rb +164 -0
- data/lib/xapi_scraper/models/components/communitymodel.rbi +92 -0
- data/lib/xapi_scraper/models/components/communitytweetsresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/communitytweetsresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/context.rb +25 -0
- data/lib/xapi_scraper/models/components/context.rbi +9 -0
- data/lib/xapi_scraper/models/components/conversationv3model.rb +57 -0
- data/lib/xapi_scraper/models/components/conversationv3model.rbi +32 -0
- data/lib/xapi_scraper/models/components/createthreaddata.rb +35 -0
- data/lib/xapi_scraper/models/components/createthreaddata.rbi +14 -0
- data/lib/xapi_scraper/models/components/createthreadquery.rb +51 -0
- data/lib/xapi_scraper/models/components/createthreadquery.rbi +26 -0
- data/lib/xapi_scraper/models/components/createthreadresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/createthreadresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/createthreadtweetitem.rb +31 -0
- data/lib/xapi_scraper/models/components/createthreadtweetitem.rbi +14 -0
- data/lib/xapi_scraper/models/components/deletebookmarkquery.rb +35 -0
- data/lib/xapi_scraper/models/components/deletebookmarkquery.rbi +14 -0
- data/lib/xapi_scraper/models/components/deleteretweetquery.rb +35 -0
- data/lib/xapi_scraper/models/components/deleteretweetquery.rbi +14 -0
- data/lib/xapi_scraper/models/components/deletetweetquery.rb +51 -0
- data/lib/xapi_scraper/models/components/deletetweetquery.rbi +26 -0
- data/lib/xapi_scraper/models/components/deletetweetresponse.rb +51 -0
- data/lib/xapi_scraper/models/components/deletetweetresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/dmhistoryv3data.rb +54 -0
- data/lib/xapi_scraper/models/components/dmhistoryv3data.rbi +26 -0
- data/lib/xapi_scraper/models/components/dmstatusmodelv2.rb +122 -0
- data/lib/xapi_scraper/models/components/dmstatusmodelv2.rbi +62 -0
- data/lib/xapi_scraper/models/components/dmstatusresponsev2.rb +47 -0
- data/lib/xapi_scraper/models/components/dmstatusresponsev2.rbi +26 -0
- data/lib/xapi_scraper/models/components/followersfollowingv3query.rb +51 -0
- data/lib/xapi_scraper/models/components/followersfollowingv3query.rbi +26 -0
- data/lib/xapi_scraper/models/components/followuserquery.rb +43 -0
- data/lib/xapi_scraper/models/components/followuserquery.rbi +20 -0
- data/lib/xapi_scraper/models/components/getalltweetsrepliescursorquery.rb +43 -0
- data/lib/xapi_scraper/models/components/getalltweetsrepliescursorquery.rbi +20 -0
- data/lib/xapi_scraper/models/components/getalltweetsrepliescursorresponse.rb +76 -0
- data/lib/xapi_scraper/models/components/getalltweetsrepliescursorresponse.rbi +38 -0
- data/lib/xapi_scraper/models/components/getcommunitymemberscursorquery.rb +43 -0
- data/lib/xapi_scraper/models/components/getcommunitymemberscursorquery.rbi +20 -0
- data/lib/xapi_scraper/models/components/getcommunitymemberscursorresponse.rb +72 -0
- data/lib/xapi_scraper/models/components/getcommunitymemberscursorresponse.rbi +38 -0
- data/lib/xapi_scraper/models/components/getcommunityresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/getcommunityresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/getcommunitytweetscursorquery.rb +60 -0
- data/lib/xapi_scraper/models/components/getcommunitytweetscursorquery.rbi +26 -0
- data/lib/xapi_scraper/models/components/getcommunitytweetscursorresponse.rb +72 -0
- data/lib/xapi_scraper/models/components/getcommunitytweetscursorresponse.rbi +38 -0
- data/lib/xapi_scraper/models/components/getconversationsv3query.rb +62 -0
- data/lib/xapi_scraper/models/components/getconversationsv3query.rbi +32 -0
- data/lib/xapi_scraper/models/components/getconversationsv3response.rb +47 -0
- data/lib/xapi_scraper/models/components/getconversationsv3response.rbi +26 -0
- data/lib/xapi_scraper/models/components/getdmhistoryv3query.rb +94 -0
- data/lib/xapi_scraper/models/components/getdmhistoryv3query.rbi +50 -0
- data/lib/xapi_scraper/models/components/getdmhistoryv3response.rb +47 -0
- data/lib/xapi_scraper/models/components/getdmhistoryv3response.rbi +26 -0
- data/lib/xapi_scraper/models/components/getdmmediav3data.rb +77 -0
- data/lib/xapi_scraper/models/components/getdmmediav3data.rbi +44 -0
- data/lib/xapi_scraper/models/components/getdmmediav3query.rb +112 -0
- data/lib/xapi_scraper/models/components/getdmmediav3query.rbi +56 -0
- data/lib/xapi_scraper/models/components/getdmmediav3response.rb +47 -0
- data/lib/xapi_scraper/models/components/getdmmediav3response.rbi +26 -0
- data/lib/xapi_scraper/models/components/getlistmemberscursorquery.rb +43 -0
- data/lib/xapi_scraper/models/components/getlistmemberscursorquery.rbi +20 -0
- data/lib/xapi_scraper/models/components/getlistmemberscursorresponse.rb +72 -0
- data/lib/xapi_scraper/models/components/getlistmemberscursorresponse.rbi +38 -0
- data/lib/xapi_scraper/models/components/getlisttweetscursorquery.rb +43 -0
- data/lib/xapi_scraper/models/components/getlisttweetscursorquery.rbi +20 -0
- data/lib/xapi_scraper/models/components/getlisttweetscursorresponse.rb +72 -0
- data/lib/xapi_scraper/models/components/getlisttweetscursorresponse.rbi +38 -0
- data/lib/xapi_scraper/models/components/getquotescursorquery.rb +63 -0
- data/lib/xapi_scraper/models/components/getquotescursorquery.rbi +26 -0
- data/lib/xapi_scraper/models/components/getquotescursorquery_sort_by.rb +18 -0
- data/lib/xapi_scraper/models/components/getquotescursorquery_sort_by.rbi +9 -0
- data/lib/xapi_scraper/models/components/getquotescursorresponse.rb +72 -0
- data/lib/xapi_scraper/models/components/getquotescursorresponse.rbi +38 -0
- data/lib/xapi_scraper/models/components/getquotesquery.rb +59 -0
- data/lib/xapi_scraper/models/components/getquotesquery.rbi +26 -0
- data/lib/xapi_scraper/models/components/getquotesquery_sort_by.rb +18 -0
- data/lib/xapi_scraper/models/components/getquotesquery_sort_by.rbi +9 -0
- data/lib/xapi_scraper/models/components/getquotesresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/getquotesresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/getrepliespagequery.rb +51 -0
- data/lib/xapi_scraper/models/components/getrepliespagequery.rbi +20 -0
- data/lib/xapi_scraper/models/components/getrepliespagequery_sort_by.rb +19 -0
- data/lib/xapi_scraper/models/components/getrepliespagequery_sort_by.rbi +9 -0
- data/lib/xapi_scraper/models/components/getrepliespageresponse.rb +85 -0
- data/lib/xapi_scraper/models/components/getrepliespageresponse.rbi +44 -0
- data/lib/xapi_scraper/models/components/getretweeterscursorquery.rb +43 -0
- data/lib/xapi_scraper/models/components/getretweeterscursorquery.rbi +20 -0
- data/lib/xapi_scraper/models/components/getretweeterscursorresponse.rb +72 -0
- data/lib/xapi_scraper/models/components/getretweeterscursorresponse.rbi +38 -0
- data/lib/xapi_scraper/models/components/gettweetsbyidresponse.rb +58 -0
- data/lib/xapi_scraper/models/components/gettweetsbyidresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/hashtagsquery.rb +192 -0
- data/lib/xapi_scraper/models/components/hashtagsquery.rbi +98 -0
- data/lib/xapi_scraper/models/components/hashtagsquery_language.rb +76 -0
- data/lib/xapi_scraper/models/components/hashtagsquery_language.rbi +9 -0
- data/lib/xapi_scraper/models/components/hashtagsquery_sortby.rb +18 -0
- data/lib/xapi_scraper/models/components/hashtagsquery_sortby.rbi +9 -0
- data/lib/xapi_scraper/models/components/likeactionbody.rb +43 -0
- data/lib/xapi_scraper/models/components/likeactionbody.rbi +20 -0
- data/lib/xapi_scraper/models/components/listmembersresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/listmembersresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/listmodel.rb +77 -0
- data/lib/xapi_scraper/models/components/listmodel.rbi +44 -0
- data/lib/xapi_scraper/models/components/listsubscribersresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/listsubscribersresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/listtweetsresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/listtweetsresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/loc.rb +25 -0
- data/lib/xapi_scraper/models/components/loc.rbi +9 -0
- data/lib/xapi_scraper/models/components/mediamodel.rb +194 -0
- data/lib/xapi_scraper/models/components/mediamodel.rbi +110 -0
- data/lib/xapi_scraper/models/components/messagemodel.rb +100 -0
- data/lib/xapi_scraper/models/components/messagemodel.rbi +56 -0
- data/lib/xapi_scraper/models/components/posttweetdata.rb +51 -0
- data/lib/xapi_scraper/models/components/posttweetdata.rbi +26 -0
- data/lib/xapi_scraper/models/components/posttweetquery.rb +122 -0
- data/lib/xapi_scraper/models/components/posttweetquery.rbi +62 -0
- data/lib/xapi_scraper/models/components/posttweetresponse.rb +58 -0
- data/lib/xapi_scraper/models/components/posttweetresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/posttweetwithoutcookiequery.rb +102 -0
- data/lib/xapi_scraper/models/components/posttweetwithoutcookiequery.rbi +50 -0
- data/lib/xapi_scraper/models/components/quotetweetquery.rb +112 -0
- data/lib/xapi_scraper/models/components/quotetweetquery.rbi +56 -0
- data/lib/xapi_scraper/models/components/retweetactionbody.rb +43 -0
- data/lib/xapi_scraper/models/components/retweetactionbody.rbi +20 -0
- data/lib/xapi_scraper/models/components/searchcommunityquery.rb +43 -0
- data/lib/xapi_scraper/models/components/searchcommunityquery.rbi +20 -0
- data/lib/xapi_scraper/models/components/searchcommunityresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/searchcommunityresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/searchcommunitytweetsquery.rb +51 -0
- data/lib/xapi_scraper/models/components/searchcommunitytweetsquery.rbi +26 -0
- data/lib/xapi_scraper/models/components/searchlistquery.rb +43 -0
- data/lib/xapi_scraper/models/components/searchlistquery.rbi +20 -0
- data/lib/xapi_scraper/models/components/searchlistresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/searchlistresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/searchresponse.rb +54 -0
- data/lib/xapi_scraper/models/components/searchresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/searchuserresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/searchuserresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/security.rb +34 -0
- data/lib/xapi_scraper/models/components/security.rbi +14 -0
- data/lib/xapi_scraper/models/components/senddmresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/senddmresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/senddmv3query.rb +90 -0
- data/lib/xapi_scraper/models/components/senddmv3query.rbi +50 -0
- data/lib/xapi_scraper/models/components/sentimentanalysismodel.rb +43 -0
- data/lib/xapi_scraper/models/components/sentimentanalysismodel.rbi +20 -0
- data/lib/xapi_scraper/models/components/sentimentanalysisquery.rb +31 -0
- data/lib/xapi_scraper/models/components/sentimentanalysisquery.rbi +14 -0
- data/lib/xapi_scraper/models/components/sentimentanalysisresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/sentimentanalysisresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/standardresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/standardresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/streammodel.rb +51 -0
- data/lib/xapi_scraper/models/components/streammodel.rbi +26 -0
- data/lib/xapi_scraper/models/components/tweet_type.rb +19 -0
- data/lib/xapi_scraper/models/components/tweet_type.rbi +9 -0
- data/lib/xapi_scraper/models/components/tweetactionresponse.rb +51 -0
- data/lib/xapi_scraper/models/components/tweetactionresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/tweetmodel.rb +518 -0
- data/lib/xapi_scraper/models/components/tweetmodel.rbi +302 -0
- data/lib/xapi_scraper/models/components/tweetthreadbyidbody.rb +53 -0
- data/lib/xapi_scraper/models/components/tweetthreadbyidbody.rbi +26 -0
- data/lib/xapi_scraper/models/components/twitteraccountbasedstandardresponse.rb +58 -0
- data/lib/xapi_scraper/models/components/twitteraccountbasedstandardresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/twitteruseraboutresponse.rb +208 -0
- data/lib/xapi_scraper/models/components/twitteruseraboutresponse.rbi +116 -0
- data/lib/xapi_scraper/models/components/twitteruseraboutstandardresponse.rb +58 -0
- data/lib/xapi_scraper/models/components/twitteruseraboutstandardresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/unfavoritetweetquery.rb +35 -0
- data/lib/xapi_scraper/models/components/unfavoritetweetquery.rbi +14 -0
- data/lib/xapi_scraper/models/components/unfollowuserquery.rb +43 -0
- data/lib/xapi_scraper/models/components/unfollowuserquery.rbi +20 -0
- data/lib/xapi_scraper/models/components/unfollowuserresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/unfollowuserresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/urlmodel.rb +47 -0
- data/lib/xapi_scraper/models/components/urlmodel.rbi +26 -0
- data/lib/xapi_scraper/models/components/userinfo.rb +348 -0
- data/lib/xapi_scraper/models/components/userinfo.rbi +200 -0
- data/lib/xapi_scraper/models/components/usermodel.rb +344 -0
- data/lib/xapi_scraper/models/components/usermodel.rbi +200 -0
- data/lib/xapi_scraper/models/components/usersdetailsresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/usersdetailsresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/usertimelinefillquery.rb +35 -0
- data/lib/xapi_scraper/models/components/usertimelinefillquery.rbi +14 -0
- data/lib/xapi_scraper/models/components/usertimelinepagequery.rb +43 -0
- data/lib/xapi_scraper/models/components/usertimelinepagequery.rbi +20 -0
- data/lib/xapi_scraper/models/components/usertimelinepageresponse.rb +112 -0
- data/lib/xapi_scraper/models/components/usertimelinepageresponse.rbi +56 -0
- data/lib/xapi_scraper/models/components/usertimelineresponse.rb +76 -0
- data/lib/xapi_scraper/models/components/usertimelineresponse.rbi +38 -0
- data/lib/xapi_scraper/models/components/usertweetitem.rb +225 -0
- data/lib/xapi_scraper/models/components/usertweetitem.rbi +122 -0
- data/lib/xapi_scraper/models/components/validationerror.rb +67 -0
- data/lib/xapi_scraper/models/components/validationerror.rbi +38 -0
- data/lib/xapi_scraper/models/components/verifiedfollowersdata.rb +58 -0
- data/lib/xapi_scraper/models/components/verifiedfollowersdata.rbi +26 -0
- data/lib/xapi_scraper/models/components/verifiedfollowersresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/verifiedfollowersresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components/xarticlemodel.rb +305 -0
- data/lib/xapi_scraper/models/components/xarticlemodel.rbi +170 -0
- data/lib/xapi_scraper/models/components/xarticleresponse.rb +47 -0
- data/lib/xapi_scraper/models/components/xarticleresponse.rbi +26 -0
- data/lib/xapi_scraper/models/components.rb +128 -0
- data/lib/xapi_scraper/models/errors/apierror.rb +39 -0
- data/lib/xapi_scraper/models/errors/apierror.rbi +27 -0
- data/lib/xapi_scraper/models/errors/httpvalidationerror.rb +48 -0
- data/lib/xapi_scraper/models/errors/httpvalidationerror.rbi +20 -0
- data/lib/xapi_scraper/models/errors.rb +13 -0
- data/lib/xapi_scraper/models/operations/accountgetbalance_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/accountgetbalance_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/analysissentiment_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/analysissentiment_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/articlesfetch_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/articlesfetch_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/articlesmarkdown_request.rb +31 -0
- data/lib/xapi_scraper/models/operations/articlesmarkdown_request.rbi +14 -0
- data/lib/xapi_scraper/models/operations/articlesmarkdown_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/articlesmarkdown_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/communitiesget_request.rb +34 -0
- data/lib/xapi_scraper/models/operations/communitiesget_request.rbi +14 -0
- data/lib/xapi_scraper/models/operations/communitiesget_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/communitiesget_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/communitiesmembers_request.rb +42 -0
- data/lib/xapi_scraper/models/operations/communitiesmembers_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/communitiesmembers_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/communitiesmembers_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/communitiesmemberspage_response.rb +54 -0
- data/lib/xapi_scraper/models/operations/communitiesmemberspage_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/communitiessearch_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/communitiessearch_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/communitiessearchtweets_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/communitiessearchtweets_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/communitiestweets_request.rb +50 -0
- data/lib/xapi_scraper/models/operations/communitiestweets_request.rbi +26 -0
- data/lib/xapi_scraper/models/operations/communitiestweets_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/communitiestweets_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/communitiestweetspage_response.rb +54 -0
- data/lib/xapi_scraper/models/operations/communitiestweetspage_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/country.rb +79 -0
- data/lib/xapi_scraper/models/operations/country.rbi +9 -0
- data/lib/xapi_scraper/models/operations/dmconversations_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/dmconversations_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/dmhistory_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/dmhistory_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/dmmedia_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/dmmedia_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/dmsend_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/dmsend_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/dmstatus_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/dmstatus_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/listsmembers_request.rb +38 -0
- data/lib/xapi_scraper/models/operations/listsmembers_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/listsmembers_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/listsmembers_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/listsmemberspage_response.rb +54 -0
- data/lib/xapi_scraper/models/operations/listsmemberspage_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/listssearch_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/listssearch_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/listssubscribers_request.rb +38 -0
- data/lib/xapi_scraper/models/operations/listssubscribers_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/listssubscribers_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/listssubscribers_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/liststweets_request.rb +38 -0
- data/lib/xapi_scraper/models/operations/liststweets_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/liststweets_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/liststweets_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/liststweetspage_response.rb +54 -0
- data/lib/xapi_scraper/models/operations/liststweetspage_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/searchadvanced_response.rb +54 -0
- data/lib/xapi_scraper/models/operations/searchadvanced_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/searchcashtags_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/searchcashtags_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/searchhashtags_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/searchhashtags_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/timelinestweetsandreplies_request.rb +35 -0
- data/lib/xapi_scraper/models/operations/timelinestweetsandreplies_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/timelinestweetsandreplies_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/timelinestweetsandreplies_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/timelinestweetsandrepliespage_response.rb +54 -0
- data/lib/xapi_scraper/models/operations/timelinestweetsandrepliespage_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/timelinesuser_request.rb +35 -0
- data/lib/xapi_scraper/models/operations/timelinesuser_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/timelinesuser_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/timelinesuser_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/timelinesuserpage_request.rb +35 -0
- data/lib/xapi_scraper/models/operations/timelinesuserpage_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/timelinesuserpage_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/timelinesuserpage_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/trendingbycountry_request.rb +35 -0
- data/lib/xapi_scraper/models/operations/trendingbycountry_request.rbi +14 -0
- data/lib/xapi_scraper/models/operations/trendingbycountry_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/trendingbycountry_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/trendingcontents_request.rb +35 -0
- data/lib/xapi_scraper/models/operations/trendingcontents_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/trendingcontents_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/trendingcontents_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/trendingcountries_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/trendingcountries_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/trendingtopics_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/trendingtopics_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/trendingtweets_request.rb +63 -0
- data/lib/xapi_scraper/models/operations/trendingtweets_request.rbi +32 -0
- data/lib/xapi_scraper/models/operations/trendingtweets_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/trendingtweets_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweet_type.rb +19 -0
- data/lib/xapi_scraper/models/operations/tweet_type.rbi +9 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsbookmark_request.rb +35 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsbookmark_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsbookmark_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsbookmark_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsactionscreate_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsactionscreate_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsactionscreatethread_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsactionscreatethread_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsactionscreatewithoutcookie_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsactionscreatewithoutcookie_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsdeletebatch_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsdeletebatch_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsactionslike_request.rb +35 -0
- data/lib/xapi_scraper/models/operations/tweetsactionslike_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/tweetsactionslike_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsactionslike_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsquote_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsquote_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsretweet_request.rb +35 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsretweet_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsretweet_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsretweet_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsunbookmark_request.rb +35 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsunbookmark_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsunbookmark_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsunbookmark_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsunlike_request.rb +35 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsunlike_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsunlike_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsunlike_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsunretweet_request.rb +35 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsunretweet_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsunretweet_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsactionsunretweet_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsdetail_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsdetail_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsengagementquotes_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsengagementquotes_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsengagementquotespage_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsengagementquotespage_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsengagementretweeters_request.rb +39 -0
- data/lib/xapi_scraper/models/operations/tweetsengagementretweeters_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/tweetsengagementretweeters_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsengagementretweeters_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsengagementretweeterspage_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsengagementretweeterspage_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetslookup_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetslookup_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsrepliespage_request.rb +35 -0
- data/lib/xapi_scraper/models/operations/tweetsrepliespage_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/tweetsrepliespage_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsrepliespage_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetssimilar_request.rb +30 -0
- data/lib/xapi_scraper/models/operations/tweetssimilar_request.rbi +14 -0
- data/lib/xapi_scraper/models/operations/tweetssimilar_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetssimilar_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/tweetsthread_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/tweetsthread_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/usersfollow_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/usersfollow_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/usersfollowerslist_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/usersfollowerslist_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/usersfollowersverified_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/usersfollowersverified_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/usersfollowinglist_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/usersfollowinglist_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/usersgetabout_request.rb +31 -0
- data/lib/xapi_scraper/models/operations/usersgetabout_request.rbi +14 -0
- data/lib/xapi_scraper/models/operations/usersgetabout_response.rb +54 -0
- data/lib/xapi_scraper/models/operations/usersgetabout_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/usersgetaccountbased_response.rb +54 -0
- data/lib/xapi_scraper/models/operations/usersgetaccountbased_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/usersgetbyids_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/usersgetbyids_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/usersgetbyusernames_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/usersgetbyusernames_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/usersgetstatuses_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/usersgetstatuses_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/userssearch_request.rb +39 -0
- data/lib/xapi_scraper/models/operations/userssearch_request.rbi +20 -0
- data/lib/xapi_scraper/models/operations/userssearch_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/userssearch_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/usersunfollow_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/usersunfollow_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations/usersverifyaccount_response.rb +51 -0
- data/lib/xapi_scraper/models/operations/usersverifyaccount_response.rbi +32 -0
- data/lib/xapi_scraper/models/operations.rb +127 -0
- data/lib/xapi_scraper/replies.rb +235 -0
- data/lib/xapi_scraper/sdk_hooks/hooks.rb +99 -0
- data/lib/xapi_scraper/sdk_hooks/registration.rb +34 -0
- data/lib/xapi_scraper/sdk_hooks/types.rb +180 -0
- data/lib/xapi_scraper/sdkconfiguration.rb +107 -0
- data/lib/xapi_scraper/sdkconfiguration.rbi +83 -0
- data/lib/xapi_scraper/search.rb +610 -0
- data/lib/xapi_scraper/timelines.rb +805 -0
- data/lib/xapi_scraper/trending.rb +888 -0
- data/lib/xapi_scraper/tweets.rb +801 -0
- data/lib/xapi_scraper/users.rb +1748 -0
- data/lib/xapi_scraper/utils/forms.rb +232 -0
- data/lib/xapi_scraper/utils/headers.rb +82 -0
- data/lib/xapi_scraper/utils/query_params.rb +167 -0
- data/lib/xapi_scraper/utils/request_bodies.rb +79 -0
- data/lib/xapi_scraper/utils/retries.rb +139 -0
- data/lib/xapi_scraper/utils/security.rb +158 -0
- data/lib/xapi_scraper/utils/url.rb +124 -0
- data/lib/xapi_scraper/utils/utils.rb +241 -0
- metadata +720 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
2
|
+
|
|
3
|
+
# typed: true
|
|
4
|
+
# frozen_string_literal: true
|
|
5
|
+
|
|
6
|
+
require "cgi"
|
|
7
|
+
require "date"
|
|
8
|
+
require "base64"
|
|
9
|
+
require "sorbet-runtime"
|
|
10
|
+
|
|
11
|
+
module XapiScraper
|
|
12
|
+
module Utils
|
|
13
|
+
extend T::Sig
|
|
14
|
+
|
|
15
|
+
sig { params(req: Faraday::Request, security: Object, allowed_fields: T.nilable(T::Array[Symbol])).void }
|
|
16
|
+
def self.configure_request_security(req, security, allowed_fields = nil)
|
|
17
|
+
return if security.nil?
|
|
18
|
+
|
|
19
|
+
sec_fields = if allowed_fields.nil?
|
|
20
|
+
T.unsafe(security).fields
|
|
21
|
+
else
|
|
22
|
+
allowed_fields.filter_map { |name| T.unsafe(security).fields.find { |f| f.name == name } }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
sec_fields.each do |sec_field|
|
|
26
|
+
value = security.send(sec_field.name)
|
|
27
|
+
next if value.nil?
|
|
28
|
+
|
|
29
|
+
metadata = sec_field.metadata[:security]
|
|
30
|
+
next if metadata.nil?
|
|
31
|
+
|
|
32
|
+
if metadata[:option]
|
|
33
|
+
_parse_security_option(req, value)
|
|
34
|
+
break unless metadata[:composite]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
next unless metadata[:scheme]
|
|
38
|
+
|
|
39
|
+
# Special case for basic auth which could be a flattened struct
|
|
40
|
+
if metadata[:sub_type] == "basic" && !value.respond_to?(:fields)
|
|
41
|
+
_parse_security_scheme(req, metadata, security)
|
|
42
|
+
else
|
|
43
|
+
_parse_security_scheme(req, metadata, value)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
break unless metadata[:composite]
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
sig { params(req: Faraday::Request, option: Object).void }
|
|
51
|
+
def self._parse_security_option(req, option)
|
|
52
|
+
# Check if this option uses basic auth (needs the whole object, not individual fields)
|
|
53
|
+
first_field = T.unsafe(option).fields.first
|
|
54
|
+
if first_field
|
|
55
|
+
first_meta = first_field.metadata[:security]
|
|
56
|
+
if first_meta && first_meta[:type] == "http" && first_meta[:sub_type] == "basic"
|
|
57
|
+
_parse_security_scheme(req, first_meta, option)
|
|
58
|
+
return
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
T.unsafe(option).fields.each do |opt_field|
|
|
63
|
+
metadata = opt_field.metadata[:security]
|
|
64
|
+
next if metadata.nil? || !metadata.include?(:scheme)
|
|
65
|
+
|
|
66
|
+
_parse_security_scheme(req, metadata, option.send(opt_field.name))
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
sig { params(req: Faraday::Request, scheme_metadata: T::Hash[Symbol, String], scheme: Object).void }
|
|
71
|
+
def self._parse_security_scheme(req, scheme_metadata, scheme)
|
|
72
|
+
scheme_type = scheme_metadata[:type]
|
|
73
|
+
sub_type = scheme_metadata[:sub_type]
|
|
74
|
+
|
|
75
|
+
if scheme.respond_to?(:fields)
|
|
76
|
+
if scheme_type == "http" && sub_type == "basic"
|
|
77
|
+
_parse_basic_auth_scheme(req, scheme)
|
|
78
|
+
return
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
T.unsafe(scheme).fields.each do |field|
|
|
82
|
+
metadata = field.metadata[:security]
|
|
83
|
+
next if metadata.nil? || metadata[:field_name].nil?
|
|
84
|
+
|
|
85
|
+
value = scheme.send(field.name)
|
|
86
|
+
_parse_security_scheme_value(req, scheme_metadata, metadata, T.cast(value, String))
|
|
87
|
+
end
|
|
88
|
+
else
|
|
89
|
+
_parse_security_scheme_value(req, scheme_metadata, scheme_metadata, T.cast(scheme, String))
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
sig do
|
|
94
|
+
params(
|
|
95
|
+
req: Faraday::Request,
|
|
96
|
+
scheme_metadata: T::Hash[Symbol, String],
|
|
97
|
+
security_metadata: T::Hash[Symbol, String],
|
|
98
|
+
value: String
|
|
99
|
+
)
|
|
100
|
+
.void
|
|
101
|
+
end
|
|
102
|
+
def self._parse_security_scheme_value(req, scheme_metadata, security_metadata, value)
|
|
103
|
+
scheme_type = scheme_metadata[:type]
|
|
104
|
+
sub_type = scheme_metadata[:sub_type]
|
|
105
|
+
|
|
106
|
+
header_name = security_metadata[:field_name]
|
|
107
|
+
|
|
108
|
+
case scheme_type
|
|
109
|
+
when "apiKey"
|
|
110
|
+
case sub_type
|
|
111
|
+
when "header"
|
|
112
|
+
req.headers[header_name] = value
|
|
113
|
+
when "query"
|
|
114
|
+
req.params[header_name] = value
|
|
115
|
+
when "cookie"
|
|
116
|
+
req.headers["Cookie"][header_name] = value
|
|
117
|
+
else
|
|
118
|
+
raise StandardError, "not supported"
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
when "openIdConnect"
|
|
122
|
+
req.headers[header_name] = value.downcase.start_with?("bearer ") ? value : "Bearer #{value}"
|
|
123
|
+
when "oauth2"
|
|
124
|
+
req.headers[header_name] = value.downcase.start_with?("bearer ") ? value : "Bearer #{value}"
|
|
125
|
+
when "http"
|
|
126
|
+
if sub_type == "bearer"
|
|
127
|
+
req.headers[header_name] = value.downcase.start_with?("bearer ") ? value : "Bearer #{value}"
|
|
128
|
+
elsif sub_type != "custom"
|
|
129
|
+
raise StandardError, "not supported"
|
|
130
|
+
end
|
|
131
|
+
else
|
|
132
|
+
raise StandardError, "not supported"
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
sig { params(req: Faraday::Request, scheme: Object).void }
|
|
137
|
+
def self._parse_basic_auth_scheme(req, scheme)
|
|
138
|
+
username = T.let("", String)
|
|
139
|
+
password = T.let("", String)
|
|
140
|
+
|
|
141
|
+
T.unsafe(scheme).fields.each do |scheme_field|
|
|
142
|
+
metadata = scheme_field.metadata[:security]
|
|
143
|
+
next if metadata.nil? || !metadata.include?(:field_name)
|
|
144
|
+
|
|
145
|
+
field_name = metadata[:field_name]
|
|
146
|
+
value = scheme.send(scheme_field.name)
|
|
147
|
+
|
|
148
|
+
username = T.let(value, String) if field_name == "username"
|
|
149
|
+
password = T.let(value, String) if field_name == "password"
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
data = "#{username}:#{password}".encode
|
|
153
|
+
# Use strict_encode, because encode adds newlines after 60 chars
|
|
154
|
+
# https://docs.ruby-lang.org/en/3.0/Base64.html#method-i-encode64
|
|
155
|
+
req.headers["Authorization"] = "Basic #{Base64.strict_encode64(data)}"
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
2
|
+
|
|
3
|
+
# typed: true
|
|
4
|
+
# frozen_string_literal: true
|
|
5
|
+
|
|
6
|
+
require "faraday/retry"
|
|
7
|
+
require "sorbet-runtime"
|
|
8
|
+
|
|
9
|
+
module XapiScraper
|
|
10
|
+
module Utils
|
|
11
|
+
sig {
|
|
12
|
+
params(
|
|
13
|
+
clazz: Object,
|
|
14
|
+
server_url: String,
|
|
15
|
+
path: String,
|
|
16
|
+
path_params: Object,
|
|
17
|
+
gbls: T.nilable(T::Hash[Symbol, T::Hash[Symbol, T::Hash[Symbol, Object]]])
|
|
18
|
+
)
|
|
19
|
+
.returns(String)
|
|
20
|
+
}
|
|
21
|
+
def self.generate_url(clazz, server_url, path, path_params, gbls = nil)
|
|
22
|
+
T.unsafe(clazz).fields.each do |f|
|
|
23
|
+
param_metadata = f.metadata[:path_param]
|
|
24
|
+
next if param_metadata.nil?
|
|
25
|
+
|
|
26
|
+
if param_metadata.fetch(:style, "simple") == "simple"
|
|
27
|
+
param = path_params.send(f.name) if !path_params.nil?
|
|
28
|
+
param = _populate_from_globals(f.name, param, "pathParam", gbls)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
f_name = param_metadata.fetch(:field_name, f.name)
|
|
32
|
+
serialization = param_metadata.fetch(:serialization, "")
|
|
33
|
+
if serialization != ""
|
|
34
|
+
serialized_params = _get_serialized_params(param_metadata, f_name, param)
|
|
35
|
+
serialized_params.each do |k, v|
|
|
36
|
+
path = path.gsub("{#{k}}", v.join(", "))
|
|
37
|
+
end
|
|
38
|
+
else
|
|
39
|
+
if param.is_a?(Array)
|
|
40
|
+
pp_vals = []
|
|
41
|
+
param.each do |pp_val|
|
|
42
|
+
pp_vals.append(pp_val.to_s)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
path = path.gsub("{#{param_metadata.fetch(:field_name, f.name)}}", pp_vals.join(","))
|
|
46
|
+
elsif param.is_a?(Hash)
|
|
47
|
+
pp_vals = []
|
|
48
|
+
param.each do |pp_key, pp_val|
|
|
49
|
+
value = val_to_string(pp_val)
|
|
50
|
+
|
|
51
|
+
if param_metadata.fetch(:explode, false)
|
|
52
|
+
pp_vals.append("#{pp_key}=#{value}")
|
|
53
|
+
else
|
|
54
|
+
pp_vals.append("#{pp_key},#{value}")
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
path = path.gsub("{#{param_metadata.fetch(:field_name, f.name)}}", pp_vals.join(","))
|
|
59
|
+
elsif param.class.include?(::Crystalline::MetadataFields)
|
|
60
|
+
pp_vals = []
|
|
61
|
+
attrs = T
|
|
62
|
+
.unsafe(param)
|
|
63
|
+
.fields
|
|
64
|
+
.filter { |field| field.name && param.respond_to?(field.name.to_sym) }
|
|
65
|
+
.map(&:name)
|
|
66
|
+
attrs.each do |attr|
|
|
67
|
+
field = T.unsafe(param).field(attr)
|
|
68
|
+
|
|
69
|
+
param_value_metadata = field.metadata[:path_param]
|
|
70
|
+
|
|
71
|
+
next if param_value_metadata.nil?
|
|
72
|
+
|
|
73
|
+
parm_name = param_value_metadata.fetch(:field_name, f.name)
|
|
74
|
+
|
|
75
|
+
param_field_val = param.send(attr)
|
|
76
|
+
|
|
77
|
+
if param_field_val.class.respond_to?(:enums)
|
|
78
|
+
param_field_val = param_field_val.serialize
|
|
79
|
+
elsif param_field_val.is_a?(DateTime)
|
|
80
|
+
param_field_val = param_field_val.strftime("%Y-%m-%dT%H:%M:%S.%NZ")
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
if !field.nil? && ::Crystalline::Utils.nilable?(field.type) && param_field_val.nil?
|
|
84
|
+
next
|
|
85
|
+
elsif param_metadata.fetch(:explode, false)
|
|
86
|
+
pp_vals.append("#{parm_name}=#{param_field_val}")
|
|
87
|
+
else
|
|
88
|
+
pp_vals.append("#{parm_name},#{param_field_val}")
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
path = path.gsub("{#{param_metadata.fetch(:field_name, f.name)}}", pp_vals.join(","))
|
|
93
|
+
else
|
|
94
|
+
path = path.gsub("{#{param_metadata.fetch(:field_name, f.name)}}", _encode_path_param(val_to_string(param)))
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
server_url.delete_suffix("/") + path
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# Percent-encode characters that are invalid in URI path segments
|
|
103
|
+
sig { params(value: String).returns(String) }
|
|
104
|
+
def self._encode_path_param(value)
|
|
105
|
+
value.gsub(/[<>{}\[\]|\\^`\s?#%]/) { |c| format("%%%02X", c.ord) }
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
sig { params(url_with_params: String, params: T::Hash[Symbol, T.any(String, T::Enum)]).returns(String) }
|
|
109
|
+
def self.template_url(url_with_params, params)
|
|
110
|
+
params.each do |key, value|
|
|
111
|
+
if value.class.respond_to?(:enums)
|
|
112
|
+
val_str = T.cast(value, T::Enum).serialize
|
|
113
|
+
else
|
|
114
|
+
val_str = value
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
url_with_params = url_with_params.gsub("{#{key}}", val_str)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
url_with_params
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
end
|
|
124
|
+
end
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
2
|
+
|
|
3
|
+
# typed: true
|
|
4
|
+
# frozen_string_literal: true
|
|
5
|
+
|
|
6
|
+
require "cgi"
|
|
7
|
+
require "date"
|
|
8
|
+
require "base64"
|
|
9
|
+
require "stringio"
|
|
10
|
+
require "sorbet-runtime"
|
|
11
|
+
|
|
12
|
+
module XapiScraper
|
|
13
|
+
module Utils
|
|
14
|
+
include Kernel
|
|
15
|
+
extend T::Sig
|
|
16
|
+
|
|
17
|
+
sig { params(val: Object).returns(String) }
|
|
18
|
+
def self.val_to_string(val)
|
|
19
|
+
if val.class.respond_to?(:enums)
|
|
20
|
+
T.unsafe(val).serialize.to_s
|
|
21
|
+
elsif val.is_a?(DateTime)
|
|
22
|
+
val.strftime("%Y-%m-%dT%H:%M:%S.%NZ").sub(/(\.\d*[1-9])0+Z\z/, "\\1Z").sub(/\.0+Z\z/, "Z")
|
|
23
|
+
else
|
|
24
|
+
val.to_s
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
MIME_TYPES = {
|
|
30
|
+
".json" => "application/json",
|
|
31
|
+
".xml" => "application/xml",
|
|
32
|
+
".pdf" => "application/pdf",
|
|
33
|
+
".zip" => "application/zip",
|
|
34
|
+
".gz" => "application/gzip",
|
|
35
|
+
".csv" => "text/csv",
|
|
36
|
+
".txt" => "text/plain",
|
|
37
|
+
".html" => "text/html",
|
|
38
|
+
".htm" => "text/html",
|
|
39
|
+
".css" => "text/css",
|
|
40
|
+
".js" => "application/javascript",
|
|
41
|
+
".png" => "image/png",
|
|
42
|
+
".jpg" => "image/jpeg",
|
|
43
|
+
".jpeg" => "image/jpeg",
|
|
44
|
+
".gif" => "image/gif",
|
|
45
|
+
".svg" => "image/svg+xml",
|
|
46
|
+
".webp" => "image/webp",
|
|
47
|
+
".mp3" => "audio/mpeg",
|
|
48
|
+
".mp4" => "video/mp4",
|
|
49
|
+
".yaml" => "application/yaml",
|
|
50
|
+
".yml" => "application/yaml"
|
|
51
|
+
}.freeze
|
|
52
|
+
|
|
53
|
+
sig { params(filename: String).returns(String) }
|
|
54
|
+
def self.mime_type_for_filename(filename)
|
|
55
|
+
ext = File.extname(filename).downcase
|
|
56
|
+
MIME_TYPES.fetch(ext, "application/octet-stream")
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
sig do
|
|
60
|
+
params(metadata: T::Hash[Symbol, String], field_name: String, obj: Object)
|
|
61
|
+
.returns(T::Hash[Symbol, T::Array[String]])
|
|
62
|
+
end
|
|
63
|
+
def self._get_serialized_params(metadata, field_name, obj)
|
|
64
|
+
params = {}
|
|
65
|
+
|
|
66
|
+
serialization = metadata.fetch(:serialization, "")
|
|
67
|
+
params[metadata.fetch(:field_name, field_name)] = [obj.to_json] if serialization == "json"
|
|
68
|
+
|
|
69
|
+
params
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
sig { params(status: Integer).returns(T::Boolean) }
|
|
73
|
+
def self.error_status?(status)
|
|
74
|
+
status_major = status / 100
|
|
75
|
+
return true if status_major == 4
|
|
76
|
+
return true if status_major == 5
|
|
77
|
+
|
|
78
|
+
false
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
sig { params(content_type: String, pattern: String).returns(T::Boolean) }
|
|
82
|
+
def self.match_content_type(content_type, pattern)
|
|
83
|
+
return true if content_type == pattern || ["*", "*/*"].include?(pattern)
|
|
84
|
+
|
|
85
|
+
pieces = content_type.split(";")
|
|
86
|
+
pieces.each do |piece|
|
|
87
|
+
return true if pattern == piece.strip
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
false
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
sig { params(status_code: Integer, status_codes: T::Array[String]).returns(T::Boolean) }
|
|
94
|
+
def self.match_status_code(status_code, status_codes)
|
|
95
|
+
return true if status_codes.include?("default")
|
|
96
|
+
status_code = status_code.to_s
|
|
97
|
+
status_codes.each do |code|
|
|
98
|
+
return true if code == status_code
|
|
99
|
+
return true if code.downcase.end_with?("xx") && status_code[0] == code[0]
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
false
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
sig { params(optional: T::Boolean).returns(T.proc.params(s: String).returns(T.nilable(DateTime))) }
|
|
106
|
+
def self.datetime_from_iso_format(optional)
|
|
107
|
+
Kernel.lambda do |s|
|
|
108
|
+
return nil if optional && s.nil?
|
|
109
|
+
|
|
110
|
+
return DateTime.strptime(s, "%Y-%m-%dT%H:%M:%S.%NZ")
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
sig { params(optional: T::Boolean).returns(T.proc.params(s: String).returns(T.nilable(Date))) }
|
|
115
|
+
def self.date_from_iso_format(optional)
|
|
116
|
+
Kernel.lambda do |s|
|
|
117
|
+
return nil if optional && s.nil?
|
|
118
|
+
|
|
119
|
+
return Date.iso8601(s)
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
sig do
|
|
124
|
+
params(enum_type: T.class_of(T::Enum), optional: T::Boolean)
|
|
125
|
+
.returns(T.nilable(T.proc.params(s: String).returns(T.nilable(T::Enum))))
|
|
126
|
+
end
|
|
127
|
+
def self.enum_from_string(enum_type, optional)
|
|
128
|
+
Kernel.lambda do |s|
|
|
129
|
+
return nil if optional && s.nil?
|
|
130
|
+
|
|
131
|
+
return enum_type.deserialize(s)
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
sig do
|
|
136
|
+
params(enum_type: Module, optional: T::Boolean)
|
|
137
|
+
.returns(T.proc.params(s: String).returns(T.untyped))
|
|
138
|
+
end
|
|
139
|
+
def self.open_enum_from_string(enum_type, optional)
|
|
140
|
+
Kernel.lambda do |s|
|
|
141
|
+
return nil if optional && s.nil?
|
|
142
|
+
|
|
143
|
+
return T.unsafe(enum_type).deserialize(s)
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
sig { params(name: String).returns(T.proc.returns(String)) }
|
|
148
|
+
def self.field_name(name)
|
|
149
|
+
T.let(proc { name }, T.proc.returns(String))
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
sig { params(field: ::Crystalline::MetadataFields::Field, data_class: Object).returns(Object) }
|
|
153
|
+
def self.parse_field(field, data_class)
|
|
154
|
+
field_metadata = field.metadata[:metadata_string]
|
|
155
|
+
return nil if field_metadata.nil?
|
|
156
|
+
|
|
157
|
+
field_value = data_class.send(field.name)
|
|
158
|
+
return nil if field_value.nil?
|
|
159
|
+
|
|
160
|
+
field_value
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
sig do
|
|
164
|
+
params(form: T::Array[T::Array[T.any(String, T::Array[T.nilable(String)])]])
|
|
165
|
+
.returns(T::Hash[Symbol, Object])
|
|
166
|
+
end
|
|
167
|
+
def self.encode_form(form)
|
|
168
|
+
payload = {}
|
|
169
|
+
form.each do |field_name, field|
|
|
170
|
+
field = T.must(field)
|
|
171
|
+
if field.length == 2
|
|
172
|
+
if field[0].nil?
|
|
173
|
+
# Handle multiple values for the same field name (arrays)
|
|
174
|
+
if payload.key?(field_name)
|
|
175
|
+
# Convert to array if not already
|
|
176
|
+
unless payload[field_name].is_a?(Array)
|
|
177
|
+
payload[field_name] = [payload[field_name]]
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
payload[field_name] << field[1]
|
|
181
|
+
else
|
|
182
|
+
payload[field_name] = field[1]
|
|
183
|
+
end
|
|
184
|
+
else
|
|
185
|
+
# Handle file uploads
|
|
186
|
+
file_part = Faraday::Multipart::FilePart.new(
|
|
187
|
+
StringIO.new(T.must(field[1])),
|
|
188
|
+
mime_type_for_filename(T.must(field[0])),
|
|
189
|
+
field[0]
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
# Handle multiple files for the same field name (arrays)
|
|
193
|
+
if payload.key?(field_name)
|
|
194
|
+
unless payload[field_name].is_a?(Array)
|
|
195
|
+
payload[field_name] = [payload[field_name]]
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
payload[field_name] << file_part
|
|
199
|
+
else
|
|
200
|
+
payload[field_name] = file_part
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
elsif field.length == 3
|
|
204
|
+
param_part = Faraday::Multipart::ParamPart.new(field[1], field[2])
|
|
205
|
+
|
|
206
|
+
# Handle multiple values for the same field name (arrays)
|
|
207
|
+
if payload.key?(field_name)
|
|
208
|
+
unless payload[field_name].is_a?(Array)
|
|
209
|
+
payload[field_name] = [payload[field_name]]
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
payload[field_name] << param_part
|
|
213
|
+
else
|
|
214
|
+
payload[field_name] = param_part
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
payload
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
sig {
|
|
223
|
+
params(
|
|
224
|
+
param_name: Symbol,
|
|
225
|
+
value: Object,
|
|
226
|
+
param_type: String,
|
|
227
|
+
gbls: T.nilable(T::Hash[Symbol, T::Hash[Symbol, T::Hash[Symbol, Object]]])
|
|
228
|
+
)
|
|
229
|
+
.returns(Object)
|
|
230
|
+
}
|
|
231
|
+
def self._populate_from_globals(param_name, value, param_type, gbls)
|
|
232
|
+
if value.nil? && !gbls.nil?
|
|
233
|
+
global_value = gbls.dig(:parameters, param_type.to_sym, param_name.to_sym)
|
|
234
|
+
value = global_value if !global_value.nil?
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
value
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
end
|
|
241
|
+
end
|