diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/apns.go | 37 | ||||
-rw-r--r-- | utils/config.go | 26 | ||||
-rw-r--r-- | utils/textgeneration.go | 60 | ||||
-rw-r--r-- | utils/time.go | 23 | ||||
-rw-r--r-- | utils/time_test.go | 50 |
5 files changed, 143 insertions, 53 deletions
diff --git a/utils/apns.go b/utils/apns.go deleted file mode 100644 index 06e8ce6ef..000000000 --- a/utils/apns.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -package utils - -import ( - l4g "code.google.com/p/log4go" - "fmt" - "github.com/anachronistic/apns" - "github.com/mattermost/platform/model" -) - -func SendAppleNotifyAndForget(deviceId string, message string, badge int) { - go func() { - if err := SendAppleNotify(deviceId, message, badge); err != nil { - l4g.Error(fmt.Sprintf("%v %v", err.Message, err.DetailedError)) - } - }() -} - -func SendAppleNotify(deviceId string, message string, badge int) *model.AppError { - payload := apns.NewPayload() - payload.Alert = message - payload.Badge = 1 - - pn := apns.NewPushNotification() - pn.DeviceToken = deviceId - pn.AddPayload(payload) - client := apns.BareClient(Cfg.EmailSettings.ApplePushServer, Cfg.EmailSettings.ApplePushCertPublic, Cfg.EmailSettings.ApplePushCertPrivate) - resp := client.Send(pn) - - if resp.Error != nil { - return model.NewAppError("", "Could not send apple push notification", fmt.Sprintf("id=%v err=%v", deviceId, resp.Error)) - } else { - return nil - } -} diff --git a/utils/config.go b/utils/config.go index 13b7b6b64..0789c101d 100644 --- a/utils/config.go +++ b/utils/config.go @@ -24,10 +24,10 @@ const ( ) var Cfg *model.Config = &model.Config{} +var CfgDiagnosticId = "" var CfgLastModified int64 = 0 var CfgFileName string = "" var ClientCfg map[string]string = map[string]string{} -var SanitizeOptions map[string]bool = map[string]bool{} func FindConfigFile(fileName string) string { if _, err := os.Stat("/tmp/" + fileName); err == nil { @@ -59,8 +59,7 @@ func FindDir(dir string) string { func ConfigureCmdLineLog() { ls := model.LogSettings{} ls.EnableConsole = true - ls.ConsoleLevel = "ERROR" - ls.EnableFile = false + ls.ConsoleLevel = "WARN" configureLog(&ls) } @@ -72,6 +71,8 @@ func configureLog(s *model.LogSettings) { level := l4g.DEBUG if s.ConsoleLevel == "INFO" { level = l4g.INFO + } else if s.ConsoleLevel == "WARN" { + level = l4g.WARNING } else if s.ConsoleLevel == "ERROR" { level = l4g.ERROR } @@ -90,6 +91,8 @@ func configureLog(s *model.LogSettings) { level := l4g.DEBUG if s.FileLevel == "INFO" { level = l4g.INFO + } else if s.FileLevel == "WARN" { + level = l4g.WARNING } else if s.FileLevel == "ERROR" { level = l4g.ERROR } @@ -167,18 +170,9 @@ func LoadConfig(fileName string) { } Cfg = &config - SanitizeOptions = getSanitizeOptions(Cfg) ClientCfg = getClientConfig(Cfg) } -func getSanitizeOptions(c *model.Config) map[string]bool { - options := map[string]bool{} - options["fullname"] = c.PrivacySettings.ShowFullName - options["email"] = c.PrivacySettings.ShowEmailAddress - - return options -} - func getClientConfig(c *model.Config) map[string]string { props := make(map[string]string) @@ -189,6 +183,7 @@ func getClientConfig(c *model.Config) map[string]string { props["SiteName"] = c.TeamSettings.SiteName props["EnableTeamCreation"] = strconv.FormatBool(c.TeamSettings.EnableTeamCreation) + props["EnableUserCreation"] = strconv.FormatBool(c.TeamSettings.EnableUserCreation) props["RestrictTeamNames"] = strconv.FormatBool(*c.TeamSettings.RestrictTeamNames) props["EnableTeamListing"] = strconv.FormatBool(*c.TeamSettings.EnableTeamListing) @@ -210,6 +205,13 @@ func getClientConfig(c *model.Config) map[string]string { props["ShowEmailAddress"] = strconv.FormatBool(c.PrivacySettings.ShowEmailAddress) + props["TermsOfServiceLink"] = *c.SupportSettings.TermsOfServiceLink + props["PrivacyPolicyLink"] = *c.SupportSettings.PrivacyPolicyLink + props["AboutLink"] = *c.SupportSettings.AboutLink + props["HelpLink"] = *c.SupportSettings.HelpLink + props["ReportAProblemLink"] = *c.SupportSettings.ReportAProblemLink + props["SupportEmail"] = *c.SupportSettings.SupportEmail + props["EnablePublicLink"] = strconv.FormatBool(c.FileSettings.EnablePublicLink) props["ProfileHeight"] = fmt.Sprintf("%v", c.FileSettings.ProfileHeight) props["ProfileWidth"] = fmt.Sprintf("%v", c.FileSettings.ProfileWidth) diff --git a/utils/textgeneration.go b/utils/textgeneration.go index fd0284a2e..31b6517b8 100644 --- a/utils/textgeneration.go +++ b/utils/textgeneration.go @@ -81,6 +81,58 @@ Markdown | Less | Pretty `, + ` **[4]** - **[More Markdown Tests]** +# This is a heading + +I am a multiline +text. + +#### I am a level four heading + +` + "```tex" + ` +f(x) = \int_{-\infty}^\infty + \hat f(\xi)\,e^{2 \pi i \xi x} + \,d\xi +` + "```" + ` +* This was some tex code* +`, + + `**[5]** - **[Markdown and automatic preview of content test]** + +## This should display a preview for the given vine url + +Some text *before* the link +And a smiley :) +https://vine.co/v/eDeVgbFrt9L + +Some more text here +and here +and even more here +`, + + `**[6]** - **[More markdown and automatic preview of content test]** + +## Only the first given url should render an "attachment" + +Lets also add a table here, because why not +| Left-Aligned | Center Aligned | Right Aligned | +| :------------ |:---------------:| -----:| +| Left column 1 | this text | $100 | +| Left column 2 | is | $10 | +| Left column 3 | centered | $1 | + +Wiki should render: +http://en.wikipedia.org/wiki/Foo +https://vine.co/v/eDeVgbFrt9L +`, + + `**[7] [Image Test]** + +## this *should* display an image + +http://37.media.tumblr.com/tumblr_mavsumGGAd1qboaw8o1_500.jpg +`, + /* `**[2] [Username Linking Test]** I saw @alice--and I said "Hi @alice!" then "What's up @alice?" and then @alice, was totally @alice; she just "@alice"'d me and walked on by. That's @alice... @alice‽‽ @@ -89,7 +141,7 @@ Markdown | Less | Pretty `**[3] [Mention Highlighting Test]** `,*/ - `**[4] [Emoji Display Test 1]** + `**[8] [Emoji Display Test 1]** :+1: :-1: :100: :1234: :8ball: :a: :ab: :abc: :abcd: :accept: :aerial_tramway: :airplane: :alarm_clock: :ambulance: :anchor: :angel: :anger: :angry: :anguished: :ant: :apple: :aquarius: :aries: :arrow_backward: :arrow_double_down: :arrow_double_up: :arrow_down: :arrow_down_small: :arrow_forward: :arrow_heading_down: @@ -124,7 +176,7 @@ Markdown | Less | Pretty :fork_and_knife: :fountain: :four: :four_leaf_clover: :fr: :free: :fried_shrimp: :fries: :frog: :frowning: :fu: :fuelpump: :full_moon: :full_moon_with_face: :game_die: :gb: :gem: :gemini: :ghost: :gift:`, - `**[5] [Emoji Display Test 2]** + `**[9] [Emoji Display Test 2]** :gift_heart: :girl: :globe_with_meridians: :goat: :goberserk: :godmode: :golf: :grapes: :green_apple: :green_book: :green_heart: :grey_exclamation: :grey_question: :grimacing: :grin: :grinning: :guardsman: :guitar: :gun: :haircut: :hamburger: :hammer: :hamster: :hand: :handbag: :hankey: :hash: :hatched_chick: :hatching_chick: :headphones: @@ -153,7 +205,7 @@ Markdown | Less | Pretty :person_with_blond_hair: :person_with_pouting_face: :phone: :pig: :pig2: :pig_nose: :pill: :pineapple: :pisces: :pizza: `, - `**[6] [Emoji Display Test 3]** + `**[10] [Emoji Display Test 3]** :plus1: :point_down: :point_left: :point_right: :point_up: :point_up_2: :police_car: :poodle: :poop: :post_office: :postal_horn: :postbox: :potable_water: :pouch: :poultry_leg: :pound: :pouting_cat: :pray: :princess: :punch: :purple_heart: :purse: :pushpin: :put_litter_in_its_place: :question: :rabbit: :rabbit2: :racehorse: :radio: :radio_button: @@ -186,7 +238,7 @@ Markdown | Less | Pretty Unnamed: :u5272: :u5408: :u55b6: :u6307: :u6708: :u6709: :u6e80: :u7121: :u7533: :u7981: :u7a7a: `, - `**[7] [Auto Linking]** + `**[11] [Auto Linking]** #### should be turned into links: http://example.com https://example.com diff --git a/utils/time.go b/utils/time.go new file mode 100644 index 000000000..7d5afdf8f --- /dev/null +++ b/utils/time.go @@ -0,0 +1,23 @@ +package utils + +import ( + "time" +) + +func MillisFromTime(t time.Time) int64 { + return t.UnixNano() / int64(time.Millisecond) +} + +func StartOfDay(t time.Time) time.Time { + year, month, day := t.Date() + return time.Date(year, month, day, 0, 0, 0, 0, t.Location()) +} + +func EndOfDay(t time.Time) time.Time { + year, month, day := t.Date() + return time.Date(year, month, day, 23, 59, 59, 999999999, t.Location()) +} + +func Yesterday() time.Time { + return time.Now().AddDate(0, 0, -1) +} diff --git a/utils/time_test.go b/utils/time_test.go new file mode 100644 index 000000000..7d65046bf --- /dev/null +++ b/utils/time_test.go @@ -0,0 +1,50 @@ +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package utils + +import ( + "testing" + "time" +) + +var format = "2006-01-02 15:04:05.000000000" + +func TestMillisFromTime(t *testing.T) { + input, _ := time.Parse(format, "2015-01-01 12:34:00.000000000") + actual := MillisFromTime(input) + expected := int64(1420115640000) + + if actual != expected { + t.Fatalf("TestMillisFromTime failed, %v=%v", expected, actual) + } +} + +func TestYesterday(t *testing.T) { + actual := Yesterday() + expected := time.Now().AddDate(0, 0, -1) + + if actual.Year() != expected.Year() || actual.Day() != expected.Day() || actual.Month() != expected.Month() { + t.Fatalf("TestYesterday failed, %v=%v", expected, actual) + } +} + +func TestStartOfDay(t *testing.T) { + input, _ := time.Parse(format, "2015-01-01 12:34:00.000000000") + actual := StartOfDay(input) + expected, _ := time.Parse(format, "2015-01-01 00:00:00.000000000") + + if actual != expected { + t.Fatalf("TestStartOfDay failed, %v=%v", expected, actual) + } +} + +func TestEndOfDay(t *testing.T) { + input, _ := time.Parse(format, "2015-01-01 12:34:00.000000000") + actual := EndOfDay(input) + expected, _ := time.Parse(format, "2015-01-01 23:59:59.999999999") + + if actual != expected { + t.Fatalf("TestEndOfDay failed, %v=%v", expected, actual) + } +} |