Skip to content

Commit

Permalink
1.0.1
Browse files Browse the repository at this point in the history
Package all SSL/Crypto libraries with Plugin
Remove Update code for 7.3
  • Loading branch information
ghawken committed Jun 15, 2019
1 parent 7a088c1 commit a0a6fba
Show file tree
Hide file tree
Showing 8 changed files with 10,767 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from .package_data import __version__
from .core import *
118 changes: 118 additions & 0 deletions iFindFriendsMini.indigoPlugin/Contents/Server Plugin/idna/codec.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
from .core import encode, decode, alabel, ulabel, IDNAError
import codecs
import re

_unicode_dots_re = re.compile(u'[\u002e\u3002\uff0e\uff61]')

class Codec(codecs.Codec):

def encode(self, data, errors='strict'):

if errors != 'strict':
raise IDNAError("Unsupported error handling \"{0}\"".format(errors))

if not data:
return "", 0

return encode(data), len(data)

def decode(self, data, errors='strict'):

if errors != 'strict':
raise IDNAError("Unsupported error handling \"{0}\"".format(errors))

if not data:
return u"", 0

return decode(data), len(data)

class IncrementalEncoder(codecs.BufferedIncrementalEncoder):
def _buffer_encode(self, data, errors, final):
if errors != 'strict':
raise IDNAError("Unsupported error handling \"{0}\"".format(errors))

if not data:
return ("", 0)

labels = _unicode_dots_re.split(data)
trailing_dot = u''
if labels:
if not labels[-1]:
trailing_dot = '.'
del labels[-1]
elif not final:
# Keep potentially unfinished label until the next call
del labels[-1]
if labels:
trailing_dot = '.'

result = []
size = 0
for label in labels:
result.append(alabel(label))
if size:
size += 1
size += len(label)

# Join with U+002E
result = ".".join(result) + trailing_dot
size += len(trailing_dot)
return (result, size)

class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
def _buffer_decode(self, data, errors, final):
if errors != 'strict':
raise IDNAError("Unsupported error handling \"{0}\"".format(errors))

if not data:
return (u"", 0)

# IDNA allows decoding to operate on Unicode strings, too.
if isinstance(data, unicode):
labels = _unicode_dots_re.split(data)
else:
# Must be ASCII string
data = str(data)
unicode(data, "ascii")
labels = data.split(".")

trailing_dot = u''
if labels:
if not labels[-1]:
trailing_dot = u'.'
del labels[-1]
elif not final:
# Keep potentially unfinished label until the next call
del labels[-1]
if labels:
trailing_dot = u'.'

result = []
size = 0
for label in labels:
result.append(ulabel(label))
if size:
size += 1
size += len(label)

result = u".".join(result) + trailing_dot
size += len(trailing_dot)
return (result, size)


class StreamWriter(Codec, codecs.StreamWriter):
pass

class StreamReader(Codec, codecs.StreamReader):
pass

def getregentry():
return codecs.CodecInfo(
name='idna',
encode=Codec().encode,
decode=Codec().decode,
incrementalencoder=IncrementalEncoder,
incrementaldecoder=IncrementalDecoder,
streamwriter=StreamWriter,
streamreader=StreamReader,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from .core import *
from .codec import *

def ToASCII(label):
return encode(label)

def ToUnicode(label):
return decode(label)

def nameprep(s):
raise NotImplementedError("IDNA 2008 does not utilise nameprep protocol")

Loading

0 comments on commit a0a6fba

Please sign in to comment.