Api gateway to consume posts from medium and vila do silicio
iagocavalcante / api-postagens Goto Github PK
View Code? Open in Web Editor NEWApi gateway to consume posts from medium and vila do silicio
Api gateway to consume posts from medium and vila do silicio
case na linha 24 ao inves de assumir sucesso
jason decode versao sem !
poderia virar um with pros dois casos acima
Map.get nao da pra trocar por Access protocol? ["a"]["b"]...
fn x -> replace_paragraphs(x) end
&replace_paragraphs/1
replace_tag podia ser um pattern match em funcao mas isso sou so eu
safe_replace_tag merecia um nome diff ou um doc explicando o que eh
if paragraph
|> Map.get("iframe") do
access
esses Map.get podiam virar access todos provavelmente
Enum.count(paragraph |> Map.get("markups", [])) > 0
pipe dentro de argumento nao ajuda na legibilidade
troca de Enum.count pra Enum.any? pois voce nao quer o count total e isso transversa a lista toda pensando q voce precisa
linha 110 usar case ou with
mesma coisa na 124
Ao acessar uma url pelo site seria interessante que fosse gerado um link para tal, assim é possível salvar ela nos favoritos.
Link original: https://medium.com/kie-foundation/an-improved-development-workflow-on-business-central-using-our-new-devtools-48fb14f39be9
Exemplo link bookmarkable: https://eguadoartigo.iagocavalcante.dev/medium/an-improved-development-workflow-on-business-central-using-our-new-devtools-48fb14f39be9
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
Warning
These dependencies are deprecated:
Datasource | Name | Replacement PR? |
---|---|---|
npm | babel-preset-es2015 |
|
npm | boom |
|
npm | hapi |
These updates are currently rate-limited. Click on a checkbox below to force their creation now.
These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.
package.json
axios ^0.19.0
babel-core ^6.26.3
babel-preset-es2015 ^6.24.1
boom ^7.3.0
dotenv ^8.0.0
hapi ^18.0.0
medium-sdk 0.0.4
nodemon ^2.0.0
pm2 ^4.0.0
xml2js ^0.4.19
eslint 7.5.0
jest 25.5.4
node 12.16.0
Foi reportado que a api não estava funcionando com uma URL específica de artigo do medium (artigo), com isso foi percebido que a requisição desse artigo é feita com graphql, logo precisaremos implementar o parse desse tipo de requisição.
URL: https://medium.com/_/graphql
Requisição: POST
Exemplo de requisição:
{
"operationName":"PostResponsesQuery",
"variables":{
"postId":"b479e457664c",
"postResponsesPaging":{
"limit":10
}
},
"query":"query PostResponsesQuery($postId: ID!, $postResponsesPaging: PagingOptions) {\n post(id: $postId) {\n id\n ...CloseDiscussion_post\n postResponses {\n count\n responsesConnection(paging: $postResponsesPaging) {\n pagingInfo {\n next {\n limit\n to\n __typename\n }\n __typename\n }\n stream {\n itemType {\n __typename\n ... on StreamItemPostStoryResponse {\n ...StoryResponse_storyResponse\n __typename\n }\n ... on StreamItemPostSimpleResponse {\n ...SimpleResponse_simpleResponse\n __typename\n }\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n\nfragment CloseDiscussion_post on Post {\n id\n responsesLocked\n isLockedResponse\n __typename\n}\n\nfragment StoryResponse_storyResponse on StreamItemPostStoryResponse {\n post {\n ...ResponseHeader_post\n ...ResponseQuote_post\n id\n responsesCount\n creator {\n isBlocking\n __typename\n }\n clapCount\n ...PostPresentationTracker_post\n previewContent {\n bodyModel {\n paragraphs {\n text\n type\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n}\n\nfragment ResponseHeader_post on Post {\n createdAt\n creator {\n ...UserAvatar_user\n isBlocking\n __typename\n }\n mediumUrl\n __typename\n}\n\nfragment UserAvatar_user on User {\n username\n id\n name\n imageId\n mediumMemberAt\n __typename\n}\n\nfragment PostPresentationTracker_post on Post {\n id\n visibility\n previewContent {\n isFullContent\n __typename\n }\n collection {\n id\n slug\n __typename\n }\n __typename\n}\n\nfragment ResponseQuote_post on Post {\n inResponseToMediaResource {\n href\n mediumQuote {\n quoteId\n startOffset\n endOffset\n paragraphs {\n ...TextParagraph_paragraph\n __typename\n }\n ...buildQuotePreviewParagraph_quote\n __typename\n }\n __typename\n }\n __typename\n}\n\nfragment buildQuotePreviewParagraph_quote on Quote {\n paragraphs {\n id\n text\n type\n markups {\n end\n start\n type\n __typename\n }\n __typename\n }\n startOffset\n endOffset\n __typename\n}\n\nfragment TextParagraph_paragraph on Paragraph {\n type\n hasDropCap\n ...Markups_paragraph\n ...ParagraphRefsMapContext_paragraph\n __typename\n}\n\nfragment Markups_paragraph on Paragraph {\n name\n text\n hasDropCap\n dropCapImage {\n ...MarkupNode_data_dropCapImage\n __typename\n }\n markups {\n type\n start\n end\n href\n anchorType\n userId\n linkMetadata {\n httpStatus\n __typename\n }\n __typename\n }\n __typename\n}\n\nfragment MarkupNode_data_dropCapImage on ImageMetadata {\n ...DropCap_image\n __typename\n}\n\nfragment DropCap_image on ImageMetadata {\n id\n originalHeight\n originalWidth\n __typename\n}\n\nfragment ParagraphRefsMapContext_paragraph on Paragraph {\n id\n name\n text\n __typename\n}\n\nfragment SimpleResponse_simpleResponse on StreamItemPostSimpleResponse {\n post {\n id\n createdAt\n firstPublishedAt\n latestPublishedAt\n title\n creator {\n id\n name\n username\n imageId\n mediumMemberAt\n isBlocking\n __typename\n }\n clapCount\n viewerClapCount\n isPublished\n voterCount\n responsesCount\n allowResponses\n latestRev\n recommenders {\n id\n name\n __typename\n }\n mediumUrl\n content {\n bodyModel {\n paragraphs {\n text\n __typename\n }\n ...getSlateBodyFromPostBodyModel_bodyModel\n __typename\n }\n __typename\n }\n collection {\n id\n slug\n __typename\n }\n isLimitedState\n ...PostPresentationTracker_post\n ...PostScrollTracker_post\n ...ResponseQuote_post\n __typename\n }\n __typename\n}\n\nfragment PostScrollTracker_post on Post {\n id\n collection {\n id\n __typename\n }\n sequence {\n sequenceId\n __typename\n }\n __typename\n}\n\nfragment getSlateBodyFromPostBodyModel_bodyModel on RichText {\n paragraphs {\n id\n name\n text\n type\n markups {\n type\n start\n end\n href\n anchorType\n userId\n linkMetadata {\n httpStatus\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n}\n"
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.