Merge pull request #214 from ekzyis/190-strip-tracking-info
Remove tracking from twitter URLs
This commit is contained in:
		
						commit
						d9d1bbb7e1
					
				@ -1,5 +1,5 @@
 | 
			
		||||
import { UserInputError, AuthenticationError } from 'apollo-server-micro'
 | 
			
		||||
import { ensureProtocol } from '../../lib/url'
 | 
			
		||||
import { ensureProtocol, removeTracking } from '../../lib/url'
 | 
			
		||||
import serialize from './serial'
 | 
			
		||||
import { decodeCursor, LIMIT, nextCursorEncoded } from '../../lib/cursor'
 | 
			
		||||
import { getMetadata, metadataRuleSets } from 'page-metadata-parser'
 | 
			
		||||
@ -532,6 +532,7 @@ export default {
 | 
			
		||||
    upsertLink: async (parent, args, { me, models }) => {
 | 
			
		||||
      const { id, ...data } = args
 | 
			
		||||
      data.url = ensureProtocol(data.url)
 | 
			
		||||
      data.url = removeTracking(data.url)
 | 
			
		||||
 | 
			
		||||
      if (id) {
 | 
			
		||||
        return await updateItem(parent, { id, data }, { me, models })
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								lib/url.js
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								lib/url.js
									
									
									
									
									
								
							@ -5,6 +5,18 @@ export function ensureProtocol (value) {
 | 
			
		||||
  return value
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export function removeTracking (value) {
 | 
			
		||||
  const exprs = [
 | 
			
		||||
    // twitter URLs
 | 
			
		||||
    /^(?<url>https?:\/\/twitter\.com\/(?:#!\/)?(?<user>\w+)\/status(?:es)?\/(?<id>\d+))/,
 | 
			
		||||
  ]
 | 
			
		||||
  for (const expr of exprs) {
 | 
			
		||||
    value = expr.exec(value)?.groups.url ?? value;
 | 
			
		||||
  }
 | 
			
		||||
  return value
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// eslint-disable-next-line
 | 
			
		||||
export const URL_REGEXP = /^((https?|ftp):\/\/)?(www.)?(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user