{"action":"closed","issue":{"url":"https://api.github.com/repos/snarfed/bridgy/issues/273","labels_url":"https://api.github.com/repos/snarfed/bridgy/issues/273/labels{/name}","comments_url":"https://api.github.com/repos/snarfed/bridgy/issues/273/comments","events_url":"https://api.github.com/repos/snarfed/bridgy/issues/273/events","html_url":"https://github.com/snarfed/bridgy/issues/273","id":41549709,"number":273,"title":"handle urls longer than 500 chars","user":{"login":"snarfed","id":778068,"avatar_url":"https://avatars.githubusercontent.com/u/778068?v=3","gravatar_id":"","url":"https://api.github.com/users/snarfed","html_url":"https://github.com/snarfed","followers_url":"https://api.github.com/users/snarfed/followers","following_url":"https://api.github.com/users/snarfed/following{/other_user}","gists_url":"https://api.github.com/users/snarfed/gists{/gist_id}","starred_url":"https://api.github.com/users/snarfed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snarfed/subscriptions","organizations_url":"https://api.github.com/users/snarfed/orgs","repos_url":"https://api.github.com/users/snarfed/repos","events_url":"https://api.github.com/users/snarfed/events{/privacy}","received_events_url":"https://api.github.com/users/snarfed/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/snarfed/bridgy/labels/now","name":"now","color":"009800"},{"url":"https://api.github.com/repos/snarfed/bridgy/labels/publish","name":"publish","color":"5319e7"}],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2014-08-30T00:16:15Z","updated_at":"2015-03-22T00:53:10Z","closed_at":"2015-03-22T00:53:10Z","body":"target urls are stored in the datastore as string properties, [so they're limited to 500 chars](https://developers.google.com/appengine/docs/python/ndb/properties#types). we hit our first over this limit today. (what an honor!) [here's the poll log](https://console.developers.google.com/project/apps~brid-gy/appengine/logs?filters=regex:Indexed%20value%20unsent).\r\n\r\nthe url is http://bit.ly/YXEbF8, which resolves to [http://www.wunderground.com/wundermap/?lat=37.09008&lon=-93.81924&zoom=5&...](http://www.wunderground.com/wundermap/?lat=37.09008&lon=-93.81924&zoom=5&type=terrain&date=2014-04-27&time=19:00&units=english&tl.play=0&tl.spd=2&tl.dur=2930&tl.mode=advanced&groupSevere=1&groupHurricane=1&groupFire=1&groupCamsPhotos=1&groupRealEstate=1&eyedropper=0&drought=0&extremes=0&fault=0&favs=0&femaflood=0&fire=0&firewfas=0&fissures=0&fronts=0&hurrevac=0&hur=0&labels=0&lightning=0&livesurge=0&mm=0&ndfd=0&rad=1&rad.num=1&rad.spd=25&rad.opa=81&rad.type=00Q&rad.type2=&rad.smo=1&rad.noc=1&rad.stm=0&dir=1&dir.mode=driving&sst=0&sat=0&seismicrisk=0&svr=0&ski=0&snowfall=0&stateLines=0&stormreports=0&tor=0&tfk=0&tsunami=0&riv=0&wxsn=0&cams=0&pix=0&PrecipStart=0&favs=0&cm_ven=gp082714-4)\r\n\r\noptions:\r\n* automatically fail URLs >500 chars. not ideal, since they're valid URLs.\r\n* write a [custom property class](https://developers.google.com/appengine/docs/python/ndb/subclassprop) to store a different indexed value\r\n* store long URLs in parallel TextProperties"}}