public static int CreateEmail(string bodyUrl, string emailBody, string from, string to, string cc, string bcc, int activityId, int tenantId, int eSpaceId, string emailDefSSKey, bool storeContent, List <String> headers, List <EmailAttachment> attachments, string realHostname) { return(CreateEmail(bodyUrl, string.Empty, emailBody, from, to, cc, bcc, activityId, tenantId, eSpaceId, emailDefSSKey, storeContent, headers, attachments, realHostname, DeploymentZoneResolution.ByModuleKey(AppInfo.GetAppInfo().eSpaceUIDAsKey).Address)); }
protected HttpWebRequest BuildServiceAPIMethodRequest(HeContext context, string sapimName, object inputs) { var zoneSettings = DeploymentZoneResolution.ByModuleKey(ProducerModuleKey); var securityProtocol = zoneSettings.EnableHttps ? "https" : "http"; var sapimEndpoint = $"{securityProtocol}://{zoneSettings.Address}/{ProducerModuleName}/serviceapi/{UrlEncode(sapimName)}"; string httpMethod = "POST"; var headers = new Dictionary <string, string>(); headers.Add("User-Agent", "OutSystemsPlatform"); headers.Add("Content-Type", "application/json"); headers.Add("Content-Language", context.CurrentLocale); var requestPayload = new CoreServicesApiController.Payload.RequestPayload(); requestPayload.RequestKey = RuntimePlatformUtils.GetRequestTracer()?.RequestKey ?? Guid.NewGuid().ToString(); requestPayload.InputParameters = JObject.FromObject(inputs); string payloadString = JsonConvert.SerializeObject(requestPayload, Formatting.None); var stringToken = SecurityTokenAPI.GenerateJWTTokenString( settingsProvider: RuntimeSettingsProvider.Instance, consumerModuleKey: ObjectKeyUtils.DatabaseValue(ConsumerModuleKey), producerModuleKey: ObjectKeyUtils.DatabaseValue(ProducerModuleKey), userId: context.Session.UserId, tenantId: context.Session.TenantId, requestHash: SecurityTokenAPI.GeneratePayloadHash(RuntimeSettingsProvider.Instance, payloadString), requestLifetime: RuntimePlatformSettings.ServiceAPIs.RequestLifetime.GetValue() ); headers.Add(AuthorizationHeaderKey, AuthorizationTokenType + stringToken); var request = (HttpWebRequest)HttpWebRequest.Create(sapimEndpoint); request.Method = httpMethod; // set the timeout for the request request.Timeout = DefaultTimeoutInSeconds * 1000; // set headers in request foreach (var header in headers.Keys) { SetRequestHeader(request, header, headers[header]); } // set request body using (Stream requestStream = request.GetRequestStream()) { var requestBody = Encoding.UTF8.GetBytes(payloadString); requestStream.Write(requestBody, 0, requestBody.Length); } return(request); }